1.数据卷-----容器内添加
- 直接命令添加
容器数据卷:
①docker cp
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it -v /myDataVolume:/dataVolumeContainer 镜像名
docker inspect 容器ID
绑定成功【实现容器和宿主机数据共享】
【容器中安装vim时先update一下再apt-get】
【vim保存退出:esc→:wq!】
已同步
关闭容器后在宿主机上进行数据修改也可以完全同步
②命令(带权限)
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
【容器内目录只读】
docker run -it -v /myDataVolume:/dataVolumeContainer:ro 镜像名
RW为false
也就是说宿主机的数据可以同步到容器中,容器不可以修改数据,只可以查看。【cat】
- DockerFile添加
①file构建
nano Dockerfile
#volume test
FROM ubuntu
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,-------success1"
CMD /bin/bash
②build后生成镜像------获得一个新镜像st/ubuntu
docker build -f /home/shark/mydocker/Dockerfile -t st/ubuntu .
#一定不要忘记最后的点!!!
③run容器
docker run -it st/ubuntu /bin/bash
宿主机对应的文件夹:
2.数据卷容器
①以上一步新建的镜像st/ubuntu为模板并运行dc01/dc02/dc03
已经具有容器卷:
/dataVolumeContainer1
/dataVolumeContainer2
②容器间传递共享(–volume-from)
- 先启动一个父容器dc01
在dataVolumeContainer2新增内容
docker run -it --name dc01 st/ubuntu
cd dataVolumeContainer2
touch dc01_add.txt
- dc02/dc03继承自dc01
docker run -it --name dc02 --volumes-from dc01 st/ubuntu
进入容器
dc03同理
- 回到dc01可以看到02/03各自添加的都能共享了
docker attach dc01
三个容器之间可以继承并且可以相互传递
- 删除dc01,dc02dc03可否访问
docker rm -f dc01
- 删除dc02后dc03可否访问
可以 - 新建dc04继承dc03后再删除dc03
- 结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。