假设我像这样运行一个容器:
docker run -v /host/folder:/data some-image
如果我们运行mv /host/folder /host/folder2,我肯定会发生不好的事情,唯一的解决方案是停止容器并重新启动它?
假设我像这样运行一个容器:
docker run -v /host/folder:/data some-image
如果我们运行mv /host/folder /host/folder2,我肯定会发生不好的事情,唯一的解决方案是停止容器并重新启动它?
Docker 使用绑定挂载mount --bind来使卷可用。
绑定挂载的行为很像硬链接。如果你硬链接foo到barwith ln foo bar,你可以重命名或删除foo,它不会影响bar,因为两个文件都指向同一个 inode。同样,如果您绑定foo到barwith mount --bind foo 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