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


17

如何将卷从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 / [路径]:/ [容器路径] ...`

我试过了:

docker run --name iisdemo2 -it -p 80:80 -v /c/Users/mlin/meinedaten:/meinedaten iis cmd

这给我一个错误:

docker : docker: Error response from daemon: Invalid bind mount spec "/c/Users/mlin/meinedaten:/meinedaten": volumeinvalid: Invalid volume specification: 
'/c/Users/mlin/meinedaten:/meinedaten'.

我也尝试过:

docker run --name iisdemo2 -it -p 80:80 -v /c/Users/mlin/meinedaten:/c/meinedaten iis cmd

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

根据文档,该命令对我而言看起来正确。

在此处输入图片说明

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

更新资料

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

Add-ContainerSharedFolder -ContainerName mysql2 -SourcePath C:\Users\mlin\meinedaten -DestinationPath C:\meinedaten

但是我也遇到了问题。

在此处输入图片说明

最终相关主题:

Answers:


23

在Windows上,必须使用Windows样式的语义指定路径。您不应在路径前面使用斜线。

docker run -v c:\Users\[path]:c:\[containerPath]

如果使用复制或添加命令创建了文件夹,则此方法将无效。
史蒂夫·科尔曼

主机目录也可以是相对的“ ./”,而来宾内部操作系统可能是os的linux类型,因此docker中的常规linux路径“ / a / b / c /”就像这样,`volumes:-./:/var / www / html`
FantomX1

7

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

添加卷:

docker run -d -v my-named-volume:C:\MyNamedVolume testimage:latest

挂载主机目录:

docker run -d -v C:\Temp\123:C:\My\Shared\Dir testimage:latest
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.