Docker学习笔记2【容器数据卷】

Docker学习笔记2【容器数据卷】_第1张图片
1.数据卷-----容器内添加

  • 直接命令添加
    容器数据卷:
    ①docker cp
    docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
    docker run -it -v /myDataVolume:/dataVolumeContainer 镜像名
docker inspect 容器ID

绑定成功【实现容器和宿主机数据共享】
Docker学习笔记2【容器数据卷】_第2张图片
Docker学习笔记2【容器数据卷】_第3张图片
Docker学习笔记2【容器数据卷】_第4张图片
【容器中安装vim时先update一下再apt-get】
【vim保存退出:esc→:wq!】
在这里插入图片描述
已同步
Docker学习笔记2【容器数据卷】_第5张图片
关闭容器后在宿主机上进行数据修改也可以完全同步
②命令(带权限)
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
【容器内目录只读】
docker run -it -v /myDataVolume:/dataVolumeContainer:ro 镜像名
Docker学习笔记2【容器数据卷】_第6张图片
RW为false
也就是说宿主机的数据可以同步到容器中,容器不可以修改数据,只可以查看。【cat】

  • DockerFile添加
    ①file构建Docker学习笔记2【容器数据卷】_第7张图片
    Docker学习笔记2【容器数据卷】_第8张图片
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 .
#一定不要忘记最后的点!!!

Docker学习笔记2【容器数据卷】_第9张图片
在这里插入图片描述
③run容器

docker run -it st/ubuntu /bin/bash

Docker学习笔记2【容器数据卷】_第10张图片
宿主机对应的文件夹:
Docker学习笔记2【容器数据卷】_第11张图片
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

进入容器
Docker学习笔记2【容器数据卷】_第12张图片
dc03同理

  • 回到dc01可以看到02/03各自添加的都能共享了
docker attach dc01

Docker学习笔记2【容器数据卷】_第13张图片
三个容器之间可以继承并且可以相互传递

  • 删除dc01,dc02dc03可否访问
docker rm -f dc01

Docker学习笔记2【容器数据卷】_第14张图片
Docker学习笔记2【容器数据卷】_第15张图片

  • 删除dc02后dc03可否访问
    可以
  • 新建dc04继承dc03后再删除dc03
  • 结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。

你可能感兴趣的:(Docker学习笔记2【容器数据卷】)