Windows – Docker / Windows Container: how to mount a host folder as data volume on Windows 2016

dockermountwindows-serverwindows-server-2016

How to mount a volume from Windows host to Windows guest system?

I am on Windows Server 2016 TP4 using Docker.

Following the documentation on
https://docs.docker.com/engine/userguide/containers/dockervolumes/

If you are using Docker Machine on Mac or Windows, your Docker daemon
has only limited access to your OS X or Windows filesystem. Docker
Machine tries to auto-share your /Users (OS X) or C:\Users (Windows)
directory. So, you can mount files or directories on OS X using.

On Windows, mount directories using:

docker run -v /c/Users/[path]:/[container path] …`

I tried:

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

which gives me an error:

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

I also tried:

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

Note that the path C:\meinedaten on the guest/container exist already, which is required according to the docker documentation.

The command looks correct to me according to the documentation.

enter image description here

(Mounting volumes from Mac OS X host to Ubuntu docker container works fine, I am just having problems with Windows.)

Update

I also just tried to use Windows Containers natively (via Powershell), not using Docker. I follow the documentation on 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

But I am getting problems there are as well.

enter image description here

Eventually related topics:

Best Answer

On Windows, the paths must be specified using Windows-style semantics. You should not use a leading slash in front of the path.

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