Data Volumes 数据卷: 容器内数据直接映射到本地宿主机。
Data Volume Containers 数据卷容器: 容器间共享数据卷 。
数据卷
数据卷是一个特殊的目录,它将主机目录直接映射进容器。可供一个或多个容器使用。
数据卷设计的目的就是为了 数据的持久化,它完全独立与容器的生命周期。因此,容器删除时,不会删除其挂载的数据卷,也不会存在类似的垃圾机制对容器存在的数据卷进行处理。
数据卷的特性:
- 数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中。
- 数据卷可以在容器之间共享和重用。
- 可以对数据卷里的内容直接修改,修改回马上生效,无论是容器内操作还是本地操作。
- 对数据卷的更新不会影响镜像的更新。
- 数据卷会一直存在,即使挂载数据卷的容器已经被删除。
创建命令:
docker run -v /root/dshare:/data -it centos /bin/bash
-v : 在容器中创建一个数据卷。
/root/dshare:/data : 冒号前是宿主机目录, 后面是容器中的目录。
创建后, 无论是在宿主机还是在容器中操作数据卷中的内容,都会同时在另一面看到。
通过docker inspect 34c47c684658 命令可以查看数据卷的一些信息:
"HostConfig": {
"Binds": [
"/root/dshare:/data"
],
...
"Mounts": [
{
"Type": "bind",
"Source": "/root/dshare",
"Destination": "/data",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
Docker挂载数据卷的默认权限是读写(rw),通过上面的 “RW”: true可以看到,我们也可以在创建的时候进行设置为只读,使用ro .
docker run -v /root/dshare:/data:ro -it centos /bin/bash
数据卷容器
通过挂载命名的容器来实现数据共享 。
首选创建一个容器 ,并命名 , 然后在其他容器中进行挂载 。
docker run --name votest1 -ti test_vo
docker run --name votest2 --volumes-from votest1 -it centos /bin/bash
这样在两个容器中都能看到/data1 和 /data2 , 并且对两个目录的任意修改都会被对方看到。
网友评论