【发布时间】:2020-07-23 16:52:34
【问题描述】:
我正在学习 docker。在我的图像构建过程中,我在名为“Config”的文件夹中创建了一个名为“appsettings.json”的文件。我希望容器外的用户可以编辑此文件。最终目标是用户可以停止容器、更改设置文件并使用新的设置文件重新启动容器。
我在 Windows 10 主机上使用 Windows 容器。我先创建了一个新卷:
docker volume create myvolume
之后我尝试启动我的容器
docker run -v myvolume:C:/app/Config
但是,-v 参数似乎删除 Config 文件夹中的所有内容。我知道绑定挂载会使用主机上的文件夹覆盖容器中的文件夹,但我认为这个命名卷会将 appsettings 文件复制到主机。
我可以做的是首先创建卷,启动容器并将文件从容器内复制到卷中,但这似乎是一个恼人的矫枉过正。
是否有任何更简单的方法或最佳实践可以使作为构建过程的一部分生成的文件对主机文件系统可见?
【问题讨论】:
-
我想如果你只是将 Windows 路径挂载到容器路径,比如
docker run -v C:/pathonwindows:/pathoncontainer,它大部分时间都对我有用 -
不,这不起作用,绑定安装在容器中创建新文件夹,这符合预期。但我认为它应该适用于命名卷。
-
在这种情况下,您需要在开始时使用脚本填充卷。 Docker 不会自动复制任何数据。
-
您确定该卷是新鲜的并且从未被任何其他容器使用过吗?您描述的行为应该是正确的。 (另外,你使用的 Dockerfile 可能很方便)
标签: windows docker continuous-integration containers microservices