Docker的那些事儿—Docker数据卷(二)(30)


上一篇:Docker的那些事儿—Docker数据卷(一)(29)


本节继续讨论docker数据卷的相关操作。

Dockerfile中的VOLUME指令等价于docker run -v /data

上一节我们曾使用docker run -itd -P -v /data --name myhttp httpd的形式启动容器,运行的结果是docker在/var/lib/docker/volumes下自动创建了一个目录xxx,并将/var/lib/docker/volumes/xxx/_data目录挂载到了容器的/data目录。我们在前面学习Dockerfile的时候,知道有一个VOLUME指令。关于这个VOLUME指令的用法可以去查看:Dockerfile常用指令章节。我们简单的写个Dockerfile,然后build镜像,并使用新的镜像启动一个容器。


FROM httpd

VOLUME ["/data"]

CMD [“/bin/bash”]


新的镜像为httpd:v1.0,docker run启动时未使用-v选项

Docker仍然创建了卷:

bd3883a57997ee16365fac702e4915fb6a43c8175b67d42413e182f7cad5e820,并且将/var/lib/docker/volumes/bd3883a57997ee16365fac702e4915fb6a43c8175b67d42413e182f7cad5e820/_data挂载到了容器/data下。

docker container inspect 242cdd1fbfe4

这就是Dockerfile中VOLUME指令的作用。

docker run命令支持多个-v选项

例如:docker run -itd --rm -v my_volume1:/data1 -v my_volume2:/data2 --name myhttp httpd。其执行结果:

1、创建了两个本地卷my_volume1和my_volume2,可以使用docker volume ls查询。

2、分别将/var/lib/docker/volumes/my_volume1/_data和/var/lib/docker/volumes/my_volume2/_data挂载到容器的/data1和/data2目录。

同一个卷支持挂载到多个容器,实现多个容器的数据共享

例如:

docker run -itd --rm -v my_volume1:/data1 --name myhttp1 httpd

docker run -itd --rm -v my_volume1:/data2 --name myhttp2 httpd



下一篇:Docker的那些事儿—Docker数据卷容器(31)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上一篇:Docker的那些事儿—Docker数据管理(28) 数据卷是一个或多个容器专门指定绕过Union Fil...
    sjyu_eadd阅读 757评论 0 2
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,532评论 0 120
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,792评论 0 7
  • 安静的下雨天 不适合思考 也不适合阅读 安静的下雨天 适合做一些简单的事情 安静的下雨天 真好 我终于可以不用假装...
    为底迟阅读 437评论 1 0
  • 以上17种情绪能量级,看看你在哪一区 2017跨年欣频老师线上调频,搜集了一些代表性问题解答,以下我整理了部分内容...
    虎小妞Carina阅读 571评论 0 1