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

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

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

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

紧急问题处理

论坛响应时间:10分钟

问题处理方式:1对1处理(优先)

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

工作时间:晚班:18:00 - 24:00

立即付费处理

工作时间:09:00至24:00

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