20

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:

3 Answers3

31

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]
jmlane
  • 227
7

Windows 10 Anniversary Update and Windows Server 2016 RTM.

Add a volume:

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

Mount a host directory:

docker run -d -v C:\Temp\123:C:\My\Shared\Dir testimage:latest
0

Are you running the docker CLI from a Mac machine and trying to run Windows containers? If so, I'm assuming you've got a DOCKER_HOST env var set and your daemon is running on a Windows machine (since you can't run Windows containers on any OS other than Windows).

If that's the case, then the directory you're trying to mount into the container must be a directory on the docker host, not the machine that happens to be running the docker CLI. Therefore you can use the Windows format on both sides of the colon. If you're trying to mount a directory that exists on your Mac, I haven't figured that part out yet, but will need to myself :)

Andrew M.
  • 101