我目前正在尝试了解Docker如何处理卷的装入并遇到以下行为,这对我来说似乎是很讨厌:
假设我们想将/ var / run目录挂载到一个容器中(仅作为示例),我们执行以下操作:
$ docker run -i -t -v /var/run:/test ubuntu:latest /bin/bash
到目前为止,一切正常,并且/ var / run下的所有文件夹和文件都显示在/ test的容器内。
现在看看如果我们决定挂载/ var目录会发生什么:
$ docker run -i -t -v /var:/test ubuntu:latest /bin/bash
尽管如此,/ var中的所有主机文件夹仍显示在/ test中。但是,在cd进入/ test / run之后,将不显示主机中的文件和目录。换句话说,Docker似乎没有对后续子目录及其内容进行“递归”安装。这是普通的Docker行为吗?
这不仅仅是普通的Docker行为;那是普通的linux行为。当您将文件系统绑定安装到另一个目录时,如下所示:
mkdir /tmp/mount
mount -o bind /var /tmp/mount
您将仅看到目标文件中存在于源文件系统中的文件。除非要显式绑定这些目录,否则您将看不到任何子目录中包含的文件:
mount -o bind /var/run /tmp/mount/run
这正是您在Docker上看到的行为,因为这与Docker用于在容器内公开主机目录的机制完全相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句