DockerFile 是用来构建Docker镜像的构建文件,是由一些列命令和参数构成的脚本。
一、DockerFile
一、在home目录下创建docker-test-volume目录
cd /home mkdir docker-test-volume
二、在home目录下的docker-test-volume目录创建dockerfile1文件
vim dockerfile1
dockerfile1文件文件内容如下
cat dockerfile1
# volume test FROM centos VOLUME
["/dataVolumeContainer1","/dataVolumeContainer2"] CMD echo "-------end------"
CMD /bin/bash
说明:在编写DockerFile文件中使用 VOLUME 指令来给镜像添加一个或多个数据卷
VOLUME["/dataVolumeContainer1","/dataVolumeContainer2","/dataVolumeContainer
3"]
出于可移植和分享的考虑,我们之前使用的 -v 主机目录:容器目录 这种方式不能够直接在
DockerFile中实现。
由于宿主机目录是依赖于特定宿主机的,并不能够保证在所有宿主机上都存在这样的特定目录.
三、 build后生成镜像,获得一个新镜像 kuangshen/centos
docker build -f /home/docker-test-volume/dockerfile1 -t kuangshen/centos .
有一个 . 不是意外
四、启动容器
docker run -it 8f3f865fbc7f
二、对应的本地文件
通过上述步骤,容器内的卷目录地址已经知道了,但是对应的主机目录在哪里?
进入容器后在/dataVolumeContainer1目录创建containe
docker run -it 8f3f865fbc7f pwd cd /dataVolumeContainer1 touch container.txt
ls -l
docker inspect 8f3f865fbc7f
cd
/var/lib/docker/volumes/4f7b7be4c2e70407dd6922b089ba8b12b6949c9ef848f2d2ba3cb476e88c83a2/_data
ls
三、容器间传递共享
1、先启动一个父容器docker01,然后在dataVolumeContainer2新增文件
退
docker run -it --name docker01 kuangshen/centos cd dataVolumeContainer2 touch
docker01.txt ls
依次创建docker02、docker03、docker04
docker run -it --name docker02 --volumes-from docker01 kuangshen/centos cd
dataVolumeContainer2 touch docker02.txt ls
docker run -it --name docker03 --volumes-from docker01 kuangshen/centos cd
dataVolumeContainer2 touch docker03.txt ls
docker run -it --name docker04 --volumes-from docker03 kuangshen/centos cd
dataVolumeContainer2 touch docker04.txt ls
验证删除父容器docker01对子容器的影响
docker rm -f docker01 docker ps
docker exec -it docker02 /bin/bash cd dataVolumeContainer2 ls mkdir docker2 ls
结论:docker01的删除不会改变其他容器之间的信息共享
我本人观点就是父容器docker01像一个人,生了三个小孩docker02、docker03、docker04,如果docker01死了,小孩依旧是人,不会对小孩有什么影响,小孩依旧具有再次创建小孩的能力
但是每个人都是这个家庭的成员,可以对这个家庭做出改变,比如增减目录文件之类