容器数据卷
1. 容器数据卷
(1) 是什么
容器删除后数据自然也就没有了,所以用卷来保存数据。容器数据卷功能是持久化和数据共享。 卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File Syste提供一些用于持续存储或共享数据的特性。
(2) 容器数据卷的特点
数据卷可以在容器之间共享或重用数据
卷中的更改可以直接生效
数据卷中的更改不会包含在镜像的更新中
数据卷的生命周期一直持续到没有容器使用它为止
2. 容器内添加数据卷
(1) 直接命令添加
docker run -it -v /宿主机绝对路径:/容器内目录[:ro] 镜像名 .:将宿主机的目录和容器内目录绑定,之后对宿主机或容器内相应文件夹的内容添加和修改就是同步的了。容器每次启动后会将数据同步。添加:ro时表示是只读模式,宿主机可以添加和修改文件,但是容器内不可以。
docker inspect 容器名:查看数据卷是否挂载成功,其中Volumes里面有绑定的目录
容器和宿主机之间数据共享
容器停止后,宿主机修改数据是否同步
如果无权限,则使用docker run -it -v /宿主机绝对路径:/容器内目录 --privileged=true 镜像名 .即可
(2) dockerFile添加
dockerFile是镜像的描述文件
根目录下新建mydocker文件夹并进入
VOLUME["/dataVolumeContainer","/dataVolumeContainer2","/dataVolumeContainer3"]:可在dockerFile中能使用volume指令来给镜像添加一个或多个数据卷
vi dockerfile:File构建
FROM centos VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"] CMD echo "finished,--------success1" CMD /bin/bash
docker build -f /mydocker/dockerfile -t zza/centos:build后生成镜像,获得一个新镜像zza/centos
docker run -it zza/centos:运行容器,容器内自带两个容器数据卷,对应的宿主机的目录默认,可以通过docker inspect查看
3. 数据卷容器
(1) 是什么
命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。
(2) 容器间传递共享
先启动一个父容器:docker run -it --name dc01 zza/centos
dc02继承自dc01:docker run -it --name dc02 --volumes-from dc01 zza/centos
回到dc01可以看到02/03各自添加的都能共享了
删除dc01,dc02修改后dc03可否访问
删除dc02后dc03可否访问
新建dc04继承dc03后再删除dc03
结论:
父子容器之间数据共享,删除父容器后,修改某一子容器会响应其兄弟元素
容器之间配置信息的传递,数据卷生命周期一直持续到没有容器使用它为止