数据卷常用命令

未匹配的标注

查看所有的数据卷

  • docker volume ls

  • 可以使用 docker inspect 容器id 来查看是否挂载成功, 在显示的信息中查看 Mounts 部分的内容


指定路径挂载

  • docker run -it -v 主机目录:容器内目录 镜像名称 /bin/bash

匿名挂载

  • docker run -it -v 容器内目录 镜像名称

具名挂载

  • 多数情况下都使用的是具名挂载
  • docker run -it -v 随便起的名字:容器内目录 镜像名称
  • docker run -it -v 随便起的名字:容器内目录:ro 镜像名称 : 其中 ro 表示的是只能读, read only, 表示的是不能在容器内部进行修改, 只能通过宿主机来修改
  • docker run -it -v 随便起的名字:容器内目录:rw 镜像名称 : 其中 rw 表示的是可读可写, read write (默认的)

使用 dockerfile 来挂载

  • 案例:

    • touch dockerfile

    • vim dockerfile

      FROM centos
      VOLUME ['volume01', 'volume02']
      
      CMD echo '====end======'
      CMD /bin/bash
    • docker build -f dockerfile -t xiaosheng/centos .

    • -f : 表示 dockerfile 文件的路径

    • -t : 表示要生成的镜像名称

    • . : 表示要生成在哪个目录下

    • 最后可以使用 docker inspect 镜像id 来查看数据卷的详细信息


查看指定数据卷对应的目录

  • docker volume inspect 具名挂载时起的名字

  • 当挂载数据卷并且没有指定路径的时候,Linux 中一般都是挂载在 /var/lib/docker/volume 目录中


配置 MySQL

docker run -d -p 3306:3306 -v /home/mysql/my.conf:/etc/mysql/my.conf -v /home/mysql/data:/use/local/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

  • -e 用来配置 MySQL 密码, 可以同时挂载多个数据卷

数据卷容器

  • 可以在多个容器之间共享数据

  • 案例

    • 先开启一个 nginx01 的容器
    • 然后需要再开启一个 nginx02 的容器, 同时这两个容器之间需要数据共享, 那就在开启 nginx02 的时候就可以使用以下命令:
      docker run -it --name nginx02 --volumes-from nginx01 xiaosheng/centos
    • 同时还可以有其他的容器来和 nginx01 一起共享数据
    • 即便 nginx01 容器关掉或者销毁, 并不会影响到其他容器中共享的数据
    • 只要还有一个容器在使用, 那么数据就不会消失

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~