我正在尝试将主机文件夹映射到guest虚拟机,方法与通过-v "$(pwd)":/code
在linux / mac上轻松完成的方式相同。我无法想出一个简单的例子来使用Windows Containers。
docker build -t="webdav" .
docker run --rm -it -v C:\junk:C:\code --name webdav webdav powershell
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: container f0fa313478fddb73e34d47699de0fc3c2a3bdb202ddcfc2a124c5c8b7523ec09 encountered an error during Start: failure in a Windows system call: The connection with the Virtual Machine hosting the container was closed. (0xc037010a).
我尝试了无数其他变体,并且接受的答案here也会出现同样的错误。
docs似乎只是指Docker Toolbox。该示例仅向我invalid bind mount spec
。
我的Dockerfile
FROM microsoft/windowsservercore
RUN powershell -Command Add-WindowsFeature Web-Server
RUN powershell -Command mkdir /code
WORKDIR /code
ADD * /code/
操作系统名称:Microsoft Windows 10 Pro 操作系统版本:10.0.14393 N / A Build 14393
版本17.03.1-ce-win5(10743) 频道:稳定 b18e2a5
免责声明:我最初在docker forums发布此内容,但没有任何回复。
答案 0 :(得分:5)
编辑: 找到了。 https://docs.docker.com/engine/reference/builder/#volume “当使用基于Windows的容器时,容器内容量的目标必须是以下之一:不存在或空目录;或C以外的驱动器:”
或者在这里:https://docs.docker.com/engine/reference/commandline/run/#mount-volume--v---read-only “使用基于Windows的容器时,以下示例将失败,因为容器中的卷或bind-mount的目标必须是以下之一:不存在或空目录;或C:以外的驱动器。 bind mount的源必须是本地目录,而不是文件。“
令我印象深刻的是,这些都是记录这种差异的非显而易见的地方。您在哪里查找此问题的文档?我会在那里加上:)
是否一般需要总结Linux和Windows之间的差异?
OLD ANSWER(针对上下文) 以下是使用GUI安装卷的分步指南: https://rominirani.com/docker-on-windows-mounting-host-directories-d96f3f056a2c
通过阅读其他一些论坛帖子,听起来像密码中的特殊字符可能会让事情绊倒。
如果您仍然遇到问题,可以阅读一个主题: https://github.com/docker/docker/issues/23992
希望这有帮助!
答案 1 :(得分:0)
我不确定moby repo文档是否/何处发布到Docker文档,但client-side using Annotations表示卷无法引用容器中的现有文件夹。在我的例子中,我首先创建了c:\ code。如果我更改命令:
docker run --rm -it -v C:\junk:C:\code2 --name webdav webdav powershell
...它将在容器中创建并挂载c:\ code2,指向主机上的c:\ junk。