docker容器数据卷
容器的数据的持久化,和同步操作,让容器间可以数据共享,即使我们把容器删除也不会影响到我们持久化的数据。
例如:我们创建的redis容器,我们把数据库持久化后的文件使用数据卷的方式挂载,即使我们把redis删除也没有关系,我们只需要重新运行一个redis容器,持久化的又可以读取到。
在创建容器时,我们可以把需要修改的配置文件使用数据卷的方式挂载,这样我们就可以在宿主机上直接修改,然后重启一下容器,配置就修改好了。
- 挂载数据卷语法:
docker run -v [主机目录]:[容器目录] --name myubuntu --privileged=true ubuntu
- 测试
创建一个ubuntu容器,挂载目录/tmp/docker_data
到主机目录/tmp/host_data
,然后在主机目录创建一个文件test.txt,进入容器内查看是否test.txt文件。
docker run -it -v /tmp/host_data:/tmp/docker_data --name myubuntu --privileged=true ubuntu /bin/bash
- 查看挂载信息
docker inspect myubuntu
# 找到Mounts字段
"Mounts": [
{
"Type": "bind",
"Source": "/tmp/host_data",
"Destination": "/tmp/docker_data",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
]
- 挂载目录的权限
指定挂载目录的权限,例如:我们只希望容器只能读取docker_data里面的内容,默认为可读可写(rw)
docker run -it -v /tmp/host_data:/tmp/docker_data:ro --name myubuntu --privileged=true ubuntu /bin/bash
- 挂载目录的继承
如果我们容器挂载了10多个目录,在创建新容器时,我们也需要挂载这些目录,我们可以不用自己再写一遍,可以使用继承的方式来复制挂载的目录。
语法:--volumes-from [父类容器ID/名称]
docker run -it --volumes-from myubuntu --name myubuntu2 --privileged=true ubuntu /bin/bash
这样myubuntu2容器就和myubuntu挂载的目录一样了,即使myubuntu挂了,也不会影响到myubuntu2。
原创内容,如果你觉得文章还可以的话,不妨点个赞支持一下!转载请注明出处。