假设我像这样运行一个容器:
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
到bar
with ln foo bar
,你可以重命名或删除foo
,它不会影响bar
,因为两个文件都指向同一个 inode。同样,如果您绑定foo
到bar
with 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