在Windows Server 2019上运行的Docker中挂载单个文件(错误:无效的卷规范...)

时间:2019-12-04 14:29:52

标签: docker docker-for-windows docker-volume

我正在尝试在Windows Server 2019上运行的Docker EE中运行多个 Linux 容器。一切正常,直到我将单个文件装入到容器中为止,例如:

VOLUME:
 - c:\xxx\yyy.xml:/app/yyy.xml

启动实例时收到错误消息:

  

错误:对于xxx无法为服务s1创建容器:无效的卷规范:'C:\ Users \ xxx \ yyy.xml:/app/yyy.xml'类型“绑定”的无效安装配置:源路径必须为目录

在运行Docker CE(在Windows上)中可以装载单个文件。

是否有一种无需太多自定义变通办法就能使它正常工作的方法?

2 个答案:

答案 0 :(得分:0)

难过-这是github上相关问题的链接。

https://github.com/moby/moby/issues/30555

要点...

thaJeztah写道

  

在Windows上无法正确地进行绑定安装文件。在Linux上,   但是也有很多陷阱,因此挂载目录是   在许多情况下都是首选。

但是,Drewster727指出了以下内容

  

对于我的情况,

     

我们正在旧版.NET Framework世界(/ sad-face)中运行应用程序-   我们的应用程序二进制文件中混有.config文件。我们不   想要构建特定于环境的容器,因此,我们当然尝试   共享直接根据环境转换的配置文件   在容器中找到应用程序期望的位置。

     

万一它对任何人都有帮助,我有一个简单的entrypoint.ps1脚本黑客   暂时解决此问题。与共享目录到c:\ conf   配置文件,脚本会将其复制到应用程序上下文中   开始文件夹:

     

if(测试路径c:\ conf){       复制项-path c:\ conf *。*-递归-目的地。 -Force}

答案 1 :(得分:0)

对于Windows绑定的卷,您必须像这样格式化路径:

VOLUME:
 - /c/xxx/yyy.xml:/app/yyy.xml

我创建了一个方便的AutoHotkey脚本,以使在Windows中创建Docker格式的Windows路径更加容易:

How to mount a host directory in a Docker container