当前位置:论坛首页 > Linux面板 > Linux面板教程

docker管理器创建容器-目录映射的说明

发表在 Linux面板2020-8-22 15:06 [复制链接] 0 6068

docker管理器创建容器设置目录映射时,根据填的宿主机目录格式,其实所采用的docker数据持久化技术是不同的。

bind mount方式
如果我填的宿主机目录格式为绝对路径(以/或者~开头)
绝对路径.png
例如上图我创建nginx容器时,把容器中的/usr/share/nginx目录映射到我宿主机/nginx_data这个绝对路径,那么此时我就是采用bind mount方式来进行容器数据持久化。
我们通过【docker inspect 容器id】 命令可以查看容器的具体信息,找到Mounts信息,可以看到如下图所示
绝对路径 (2).png
type为bind就表示是以bind mount方式进行数据持久化的。
注意:
如果host机器上的目录不存在,docker会自动创建该目录
如果container中的目录已经有内容,那么docker会使用host上的目录将其覆盖掉
也就是说如果我宿主机的目录不存在,我以这种方式进行持久化,会导致我宿主机和容器的目录都被清空。验证:ls /nginx_data查看目录为空,进入容器查看/usr/share/nginx目录也被清空



volume方式
如果我填的宿主机目录格式为下图所示
名字.png
例如上图我创建nginx容器时,把容器中的/usr/share/nginx目录映射到我宿主机nginx_volume这个volume,那么此时我就是采用volume方式来进行容器数据持久化。
我们通过【docker inspect 容器id】 命令可以查看容器的具体信息,找到Mounts信息,可以看到如下图所示

名字

名字

type为volume就表示是以volume方式进行数据持久化的,此时他会以我们设置的volume名在容器的Root dir/volumes目录下建立一个volume,其中_data文件夹就是
对容器中目录的映射。
与bind mount不同的是,如果volume是空的而container中的目录有内容,那么docker会将container目录中的内容拷贝到volume中,
如果volume中已经有内容,则会将container中的目录覆盖。
也就是说此种方式进行持久化,如果宿主机中的volume不存在,会创建一个volume,并把容器中的目录内容同步过来,不会进行清空
验证:ls /www/server/docker/volumes/nginx_volume/_data/ 可以看到里面有内容,进入容器查看/usr/share/nginx目录未被清空






使用道具 举报 只看该作者 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术免费分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表