3

假设我像这样运行一个容器:

docker run -v /host/folder:/data some-image

如果我们运行mv /host/folder /host/folder2,我肯定会发生不好的事情,唯一的解决方案是停止容器并重新启动它?

4

1 回答 1

1

Docker 使用绑定挂载mount --bind来使卷可用。

绑定挂载的行为很像硬链接。如果你硬链接foobarwith ln foo bar,你可以重命名或删除foo,它不会影响bar,因为两个文件都指向同一个 inode。同样,如果您绑定foobarwith mount --bind foo bar,则移动或删除foo/不会影响bar/.

让我们看一下两个测试目录foobar

$ mkdir foo bar
$ touch foo/FOO bar/BAR
$ ls foo/
FOO
$ ls bar/
BAR

如果我们安装foo在上面bar然后重命名foobar则不受影响:

$ sudo mount --bind foo bar
$ ls bar/
FOO
$ mv foo foo.renamed
$ ls bar/
FOO
于 2019-05-14T19:59:43.283 回答