本例介绍Docker 容器数据卷
容器数据卷概念
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会用于容器删除时删除其挂载的数据卷
特点:
1、数据卷可在容器之间共享或重用数据
2、卷中的更改可以直接生效
3、数据卷中的更改不会包含在镜像的更新中
4、数据卷的生命周期一直持续到没有容器使用它为止
作用:
1、容器的持久化
2、容器间继承 + 共享数据
添加容器数据卷
1)直接命令添加
1、使用run命令创建一个新的容器,并在命令中加入 -v 参数
格式:docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
或者只读格式:docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
例如:docker run -it -v /myDataVolume:/dataVolumeContainer centos
2、查看数据卷是否挂载成功
使用命令:docker inspect 容器ID
3、测试容器和宿主机之间数据共享
a、在宿主机/myDataVolume目录下新建文件,看容器中/dataVolumeContainer目录下是否存在同样的文件
答案:存在同样文件
b、在容器中/dataVolumeContainer目录下新建文件,看宿主机/myDataVolume目录下是否存在同样的文件
答案:存在同样文件
c、关闭容器,在宿主机/myDataVolume目录下新建或删除文件,然后启动容器,看容器中/dataVolumeContainer目录下是否同样新建或删除文件
答案:是的
2)DockerFile添加
1、编写一个Dockerfile文件,使用VOLUME质量来给镜像添加一个或多个数据卷,内容如下:
1 # volume test 2 FROM centos 3 VOLUME ["/dataVolumeContainer01", "/dataVolumeContainer02"] 4 CMD echo "finished, ......... SUCCESS1" 5 CMD /bin/bash
2、Dockerfile 构建,build后生成镜像
命令:docker build -f dockerfile -t test/mycentos .
3、运行新镜像,生成容器
命令:docker run -itd test/mycentos
4、查看容器,并用docker inspect 命令查看新容器信息
命令:docker inspect 容器ID
数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器
容器间传递共享(--volumes-from)
1、先启动一个父容器dc01
2、启动一个dc02继承dc01,启动一个dc03继承dc02
3、在dc01、dc02、dc03中任何挂载盘目录建文件,其他容器中都有个
4、使用docker inspect命令查看各容器信息,发现数据卷对应的主机目录相同
这也就实现了-其他容器通过挂载这个(父容器)实现数据共享