我正在寻求帮助。如果我使用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文件。
抱歉,这有点令人困惑。我正在尽力解释我的意思。感谢您的帮助。
答案 0 :(得分:1)
如果您运行:
docker run -v /host/directory:/container/directory ...
然后,主机目录中的内容将始终隐藏该路径上映像中的内容,并且如果容器中的应用程序在/container/directory
中进行更改,它们将反映在相应的主机目录中。
如果将映像更新为在容器目录中进行了更改,并且运行了相同的docker run
命令,则主机目录仍将隐藏映像的内容,并且在重新启动后将看不到这些更改。运行容器。
答案 1 :(得分:1)
严格来说,您不是在谈论volumes
,而是在谈论bind mounts
,与volumes
不同,它们允许您指定主机上的位置。
您的问题的答案如下:
绑定安装始终使用主机内容。如果容器在装入的文件夹中有东西,它将被覆盖。
无论何时从容器中修改文件夹,更改都将保留在主机上(除非您绑定ion只读模式-否则您的更改将被拒绝)