【问题标题】:Mounting single file in docker running on windows server 2019 (error: Invalid volume specification...)在 Windows Server 2019 上运行的 docker 中挂载单个文件(错误:无效的卷规范...)
【发布时间】:2019-12-04 14:29:52
【问题描述】:

我正在尝试在 Windows server 2019 上运行的 Docker EE 中运行多个 Linux 容器。一切顺利,直到我将单个文件安装到容器中,例如:

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

当我启动一个实例时,我收到一个错误:

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

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

有没有办法在没有太多自定义变通方法的情况下使其正常工作?

【问题讨论】:

  • 如果任何答案解决了您的问题,请接受适当的答案以与社区分享解决方案。如果没有,请提供更多信息或分享您自己的解决方案。谢谢

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


【解决方案1】:

遗憾的是没有 - 这是 github 上相关问题的链接。

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

它的要点......

thaJeztah 写道

在 Windows 上无法进行正确的绑定挂载文件。在 Linux 上, 不过也有一些陷阱,所以挂载一个目录是 在许多情况下首选。

但是,Drewster727 指出了以下内容

关于我的情况--

我们在旧版 .NET 框架世界 (/sad-face) 中运行应用程序 -- 我们将 .config 文件与我们的应用程序二进制文件混合在一起。我们不 想要构建环境特定的容器,所以当然,我们尝试 直接共享每个环境已转换的配置文件 在容器内到我们的应用程序期望它们的位置。

如果它可以帮助任何人,我有一个简单的 entrypoint.ps1 脚本破解 暂时绕过这个问题。与 c:\conf 共享目录 配置文件,脚本会将它们复制到应用程序上下文中 文件夹开始:

if(测试路径 c:\conf){ 复制项目 -path c:\conf*.* -Recurse -Destination 。 -强制}

【讨论】:

  • 谢谢克莱门斯
【解决方案2】:

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

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

我创建了一个方便的 AutoHotkey 脚本,以便在 Windows 中更轻松地创建 Docker 格式的 Windows 路径:

How to mount a host directory in a Docker container

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    相关资源
    最近更新 更多