Docker / Windows Container:如何在 Windows 2016 上将主机文件夹挂载为数据卷

Mat*_*adt 17 mount windows-server docker windows-server-2016

如何将卷从 Windows 主机挂载到 Windows 来宾系统?

我在使用 Docker 的 Windows Server 2016 TP4 上。

遵循https://docs.docker.com/engine/userguide/containers/dockervolumes/上的文档

如果您在 Mac 或 Windows 上使用 Docker Machine,则您的 Docker 守护程序只能有限地访问您的 OS X 或 Windows 文件系统。Docker Machine 会尝试自动共享您的 /Users (OS X) 或 C:\Users (Windows) 目录。因此,您可以使用在 OS X 上挂载文件或目录。

在 Windows 上,使用以下命令挂载目录:

docker run -v /c/Users/[path]:/[容器路径] ...`

我试过:

docker run --name iisdemo2 -it -p 80:80 -v /c/Users/mlin/meinedaten:/meinedaten iis cmd
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:

docker : docker: Error response from daemon: Invalid bind mount spec "/c/Users/mlin/meinedaten:/meinedaten": volumeinvalid: Invalid volume specification: 
'/c/Users/mlin/meinedaten:/meinedaten'.
Run Code Online (Sandbox Code Playgroud)

我也试过:

docker run --name iisdemo2 -it -p 80:80 -v /c/Users/mlin/meinedaten:/c/meinedaten iis cmd
Run Code Online (Sandbox Code Playgroud)

请注意,来宾/容器上的路径 C:\meinedaten 已经存在,这是根据 docker 文档所必需的。

根据文档,该命令对我来说是正确的。

在此处输入图片说明

(将卷从 Mac OS X 主机安装到 Ubuntu docker 容器工作正常,我只是在使用 Windows 时遇到问题。)

更新

我也只是尝试在本地使用 Windows 容器(通过 Powershell),而不是使用 Docker。我遵循https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/manage_powershell#create-a-shared-folder上的文档。

Add-ContainerSharedFolder -ContainerName mysql2 -SourcePath C:\Users\mlin\meinedaten -DestinationPath C:\meinedaten
Run Code Online (Sandbox Code Playgroud)

但我也遇到了问题。

在此处输入图片说明

最终相关主题:

Mat*_*adt 29

在 Windows 上,必须使用 Windows 风格的语义指定路径。您不应在路径前使用前导斜线。

docker run -v c:\Users\[path]:c:\[containerPath]
Run Code Online (Sandbox Code Playgroud)


Der*_*ter 7

Windows 10 周年更新和 Windows Server 2016 RTM。

添加卷:

docker run -d -v my-named-volume:C:\MyNamedVolume testimage:latest
Run Code Online (Sandbox Code Playgroud)

挂载主机目录:

docker run -d -v C:\Temp\123:C:\My\Shared\Dir testimage:latest
Run Code Online (Sandbox Code Playgroud)