Docker--容器数据卷

【笔记于学习尚硅谷课程所作】

5、Docker容器数据卷

5.1 容器数据卷概述

​  类似我们Redis里面的rdb和aof文件。

​  卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷

特点:

  • 数据卷可在容器之间共享或重用数据
  • 卷中的更改可以直接生效
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

 作用:实现容器的持久化、实现容器间继承+共享数据

5.2 添加数据卷

​  在容器里添加数据卷的两种方法:直接命令添加、DockerFile添加

1.直接命令添加

 #容器停止退出后,主机修改后数据依然同步
 docker run -it -v /宿主机绝对路径目录:/容器内目录  镜像名
 
 #加入只读权限(容器只读,主机可读可写)
 docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
 
 #查看数据卷是否挂载成功
 docker inspect 容器ID

 注意:Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied

 解决办法:在挂载目录后多加一个–privileged=true参数即可

2.DockerFile添加

(1)创建Dockerfile脚本,名为dockerfile(在根目录下)

# volume test
#可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash

(2)使用build生成新镜像,名为lfuser/centos

docker build -f dockerfile -t lfuser/centos:1.3 .

(3)启动容器

docker run -it lfuser/centos:1.3

(4)查看是否挂载成功,并查看主机文件默认存储位置

docker inspect 容器ID

5.3 数据卷容器

​  定义:命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器

#让容器dc02继承dc01
docker run -it --name dc02 --volumes-from dc01 lfuser/centos

​  容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止

猜你喜欢

转载自blog.csdn.net/qq_41596568/article/details/106036250