docker--容器数据持久化(容器卷)

一、容器启动时将数据持久化到宿主机上,实现容器与容器或者容器与宿主机之间数据共享

docker run -it  -v /宿主机绝对路径目录:/容器内目录  镜像名

例如:docker  run -it  -v  /myDataVolume:/myContainerVolume  centos     # 主机和容器的数据双向绑定

结果:

结果验证:

1.使用docker inspect 容器id可以查看到宿主机的myDataVolume和容器的dataVolumeContainer数据卷绑定了,权限为”RW”,如下图

2.在宿主机上的myDataVolume目录进行数据操作,发现容器上的数据也跟着进行了变化

 3.关闭容器,然后在宿主机的/myDataVolume目录下新建host02文件,然后重启容器依然可以看到容器上同步了host02文件

 二、容器数据持久化到宿主机(带有权限),只允许宿主机单向改动

例如:docker run -it -v /myDataVolume:/dataVolumeContainer:ro  --name mycentos centos:latest

加了ro后缀后,只能编辑宿主机上 myDataVolume目录下的文件,容器上dataVolumeContainer目录下的文件不允许操作

三、使用DockerFile实现容器上的数据持久化到宿主机

 通过DockerFile中的VOLUME指令自定义一个带有两个容器卷的镜像

例如:

# 容器卷的持久化脚本
FROM centos
VOLUME ["dataVolumeContainer1","dataVolumeContainer2"]
CMD echo "finished,-------success"
CMD /bin/bash
docker build -f Dockerfile01 -t hubusugar/centos:1.2 .

注意:末尾还有个.号

-f 指定文件的路径 

-t 指定镜像名称和tag

然后通过docker run 命令运行生成的容器时候就可以启动一个带有两个数据卷dataVolumeContainer1和dataVolumeContainer2的容器

结果验证:

 对应的宿主机的目录为:

/var/lib/docker/volumes/e689fe7556f454e1cbf1e055410bcc796c98cf2955ea7a8d44e226a293c9caf8/_data

原文地址:https://www.cnblogs.com/HubuSugar/p/14400942.html