1、什么是容器数据卷?
先来看看Docker的作用:
- 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的
- 容器之间希望有可能共享数据,容器之间可以继承。
Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们使用卷。
2、容器数据卷
什么是容器数据卷?
Docker容器产生的数据,如果我们不通过docker commit命令来生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除后,数据自然就没有了。为了能保存数据在Docker中,我们使用卷。
容器数据卷的作用
可以完成容器到宿主主机、宿主主机到容器的双方向数据共享
特点
- 数据卷可在容器之间共享或重用数据
- 卷中的更改可以直接生效
- 数据卷中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用它为止
- 卷的设计目的就是数据的持久化,完全独立于容器的生成周期,因此Docker不会在容器删除时删除其挂载的数据卷。
数据卷的添加
- 在容器内部添加
- DockerFile添加
- 命令直接添加
- 命令:docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
- 执行以下命令: ```bash docker run -it -v /myDataVolume:/dataVolumeContain centos
直接运行项目
docker run -it —privileged=true -v /tmp/host_data:/tmp/docker_data —name v5 ubuntu
了解一下:--privileged = true的作用- 使用该参数,**container内的root拥有真正的root权限**。- 否则,container内的root只是外部的一个普通用户权限。- privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。- 甚至允许你在docker容器中启动docker容器。**查看是否添加成功**- 查看数据卷是否起作用:<br />docker inspect 镜像ID<a name="oWuc5"></a>#### 容器和宿主机之间数据共享1. 容器到宿主机1. 当容器stop的时候,重启容器,数据任然会同步到容器中;<br />容器停止退出后,主机修改后数据是否可以同步到容器?答案:可以<a name="CMI7w"></a>#### 容器数据限制设置(带权限)命令:这个只是限制容器内部,宿主机是不能够限制的```bashdocker run -it --privileged = true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名(容器内readonly,只读,不可写)
执行以下命令:
docker run -it --privileged = true -v /myDataVolume:/dataVolumeContain:ro centos
查看数据卷是否起作用:
docker inspect 镜像ID
此方式,容器中数据卷只读
容器间的继承:
通过—volumes-from:继承那个镜像
docker run -it --privileged = true --volumes-from u1 --name u2 /bin/bash
