docker卷挂载中出现的覆盖

docker卷挂载中出现的覆盖

直接说说自己的结论吧

1.如果 挂载的主机目录为空的,此时会判断,若容器目录有内容,则直接进行数据同步, 将docker目录下的文件复制到主机。


2020 6.2 更新: 发现如果容器指定 的是工作目录,好像主机和容器的文件就会共存。。。


2.如果挂载的主机目录有内容,即不是空的文件夹,且指定的容器目录不为默认的工作目录, 则会覆盖容器的目录。

  1. 如果挂在的主机目录有内容 ,且指定的目录为容器的默认工作目录, 则主机和容器的文件会共存. …

首先是主机指定的目录为空, 容器指定的目录有文件

首先在home目录下创建一个test空目录

在这里插入图片描述

然后运行docker命令 ,并挂载这个空目录( 指定的容器目录内有文件.)
可以看到指定的容器目录下有一个本身自带的文件夹( 也就是说没有被主机的空目录覆盖)

在这里插入图片描述

退出容器(ctrl+pq),可以看到在创建的test空目录下对容器的文件进行了同步

在这里插入图片描述

然后是主机的目录不为空,且容器的目录不为空

将主机的test目录下的truffle文件删除并创建一个1.txt

在这里插入图片描述

将刚才创建的容器删除,重新运行创建容器的命令

在这里插入图片描述

发现这里既有主机的1.txt文件, 又有自己本身有的truffle文件夹???

没事, 再用容器内其他目录试一下
在容器内部/home 目录下本身有一个testfor文件夹

在这里插入图片描述

尝试使用主机的有文件的目录 和容器有文件的/home目录进行挂载操作

在这里插入图片描述

发现容器内部的testfor 没有了 ,也就是说主机的非空目录 覆盖了容器内的非空目录

这两个目录有什么区别吗?
目前我发现的唯一的区别可能就是 /var/workspace/truffle为制作docker镜像时指定的工作目录 …

刚刚又发现可以在运行docker的时候可以使用-w指定工作目录,那就进一步证明一下自己的猜测:( 指定的主机目录下有文件,指定的容器目录为原来默认的工作目录且有文件 , 使用 -w 切换为其他目录)

在这里插入图片描述
发现切换默认的工作目录后,原本的工作目录下的truffle文件夹被覆盖了,验证了自己的猜测 … .

自己测试的,可能有误,欢迎补充与纠错. … .

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读