上一篇: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)
网友评论