1.什么是Docker容器数据卷? 这要从docker的理念开始讲起 。docker是将应用和运行的环境打包成容器运行,有时在容器运行时产生的文件是我们需要的,但是随着容器的关闭这些文件会消失。我们将文件持久化。还有另外的一种需求,我们希望容器之间可以共享数据为了数据能够保存,我们使用卷。类似于redis中的rdb和aof文件
2.Docker容器数据卷能干什么
·容器持久化
·容器间的继承+共享数据
3.容器内添加数据卷
直接命令添加
创建一个docker终端
systemctl start docker #启动docker
docker run -it -v /hostVolume:/dockerVolume centos /bin/bash
# docker run -it -v /宿主机目录:/容器内目录 centos /bin/bash
创建一个新的host终端,在新的终端中查看docker中运行的进程
docker ps # 查看docker中运行的进程
docker inspect 077d4494ee7f
#获取容器/镜像的元数据。在输出结果的Mounts中source是宿主机目录,detemination为容器内目录
cd /hostVolume #进入宿主机目录
touch host.txt #在主机目录下创建一个txt文件
此时在docker终端
cd /dockerVolume
ls #可以观察到host.txt 实现了共享
Dockerfile添加
创建两个终端,host和docker
在根目录下创建mydocker目录
在目录里面创建Dockerfile文件,在文件中简单构建file,
Dockerfile,创建了两个容器目录
bulid生成新的镜像
docker build -f /mydocker/Dockerfile -t lin/centos .
# 生成lin.centos镜像 , 并且运行Dockerfile
docker images # 打印镜像id
docker run -it [centos镜像Id] # 运行镜像
docker ps -q #打印正在运行的容器id
docker inspect [容器id]
虽然我们自己build的时候没有指定宿主容器目录,但是docker自动为宿主机创建了目录
此时在宿主机目录,即source下创建文件,一样可以在docker中创建的dataVolumeContainer1中查看到
备注:当容器停止后,宿主机目录,即source下创建文件,docker启动后,在dataVolumeContainer1中可以查看到
4.容器间的传递共享
容器与容器之间的数据传递与共享,容器之间不管如何继承,如何删除,数据卷的生命周期会一直持续到最后一个容器被删除,数据卷的生命周期才会截止