将卷装载到包含相同名称文件的位置会覆盖这些文件还是将其使用?

时间:2019-01-29 12:54:07

标签: docker

我正在寻求帮助。如果我使用docker run运行容器,并且已经使用-v挂载到已经包含文件的卷(这些文件是容器先前运行的文件,但是编辑了配置文件)。我运行的容器会使用我覆盖的文件的内容,还是仍然使用容器中的文件而不理会我编辑的文件? 我在跑步 sudo docker run --rm -it -p "8000:8000" -v "/opt/stellar:/opt/stellar" --name stellar stellar/quickstart --testnet

在我的机器(AWS EC2)上的/opt/stellar中,我有一些文件,其中包括编辑过的stellar-core.cfg文件。

抱歉,这有点令人困惑。我正在尽力解释我的意思。感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果您运行:

docker run -v /host/directory:/container/directory ...

然后,主机目录中的内容将始终隐藏该路径上映像中的内容,并且如果容器中的应用程序在/container/directory中进行更改,它们将反映在相应的主机目录中。

如果将映像更新为在容器目录中进行了更改,并且运行了相同的docker run命令,则主机目录仍将隐藏映像的内容,并且在重新启动后将看不到这些更改。运行容器。

答案 1 :(得分:1)

严格来说,您不是在谈论volumes,而是在谈论bind mounts,与volumes不同,它们允许您指定主机上的位置。

您的问题的答案如下:

  1. 绑定安装始终使用主机内容。如果容器在装入的文件夹中有东西,它将被覆盖。

  2. 无论何时从容器中修改文件夹,更改都将保留在主机上(除非您绑定ion只读模式-否则您的更改将被拒绝)

相关问题