假设我像这样运行一个容器:
docker run -v /host/folder:/data some-image
如果我们运行 mv/host/folder/host/folder2
,我肯定会发生不好的事情,唯一的解决方案是停止容器并重新启动它?
最佳答案
Docker 使用绑定(bind)挂载 a la mount --bind
使卷可用。
绑定(bind)挂载的行为很像硬链接(hard link)。如果您使用 ln foo bar
将 foo
硬链接(hard link)到 bar
,您可以重命名或删除 foo
并且它不会不会影响 bar
,因为两个文件都指向同一个 inode。同样,如果您使用 mount --bind foo bar
将 foo
绑定(bind)到 bar
,则移动或删除 foo/
'影响 bar/
。
让我们看一下两个测试目录 foo
和 bar
:
$ mkdir foo bar
$ touch foo/FOO bar/BAR
$ ls foo/
FOO
$ ls bar/
BAR
如果我们将 foo
挂载到 bar
之上,然后重命名 foo
,bar
不受影响:
$ sudo mount --bind foo bar
$ ls bar/
FOO
$ mv foo foo.renamed
$ ls bar/
FOO
关于docker - 当您 mv docker 容器卷正在使用的文件夹时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56137517/