携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第9天,点击查看活动详情
容器数据卷作用
在宿主机,容器及容器之前建立一种文件共享机制
什么是容器数据卷
- 先来看看Docker的理念:
- 将应用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的
- 容器之间希望有可能共享数据
Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们使用卷。
容器数据卷能做什么
-
容器数据的持久化
-
容器之间继承和共享数据
添加数据卷的方式
- 直接使用命令添加
-
语法
docker run -it -v /宿主机目录:/容器内目录 --privileged=true centos /bin/bash
-
查看容器卷是否挂载成功
docker inspect 容器ID
-
查看容器卷和宿主机的数据共享
- 在宿主机的mycentos001中创建hello.txt文件并写入数据mycentos001
- 进入容器查看container001里面有hello.txt文件数据和mycentos001里面的一样
- 注意:在以上的例子中,默认的只能在宿主机里面写数据。
- 如果出以下的问题
- 解决办法:在挂载目录后多加一个--privileged=true参数即可
-
查看容器停止后,主机修改数据是否同步
-
带权限的处理方式
- 使用DockerFile添加
-
在宿主机的根目录下创建mydocker文件夹并进入
-
在当前目录创建一个DockerFile的文件
-
编写DockerFile
FROM centos VOLUME ["/dataContainer1","/dataContainer2"] CMD echo "finished,--------success1" CMD /bin/bash
-
build生成一个新的镜像
- docker build -f /mydocker/DockerFile -t laolei/centos . #注意后面有一个点哦
-
启动容器
- docker run -it --name='mycentos' laolei/centos
-
查看容器里面有两个容器卷