Docker / Windows Container: cómo montar una carpeta de host como volumen de datos en Windows 2016

17

¿Cómo montar un volumen del host de Windows al sistema invitado de Windows?

Estoy en Windows Server 2016 TP4 con Docker.

Siguiendo la documentación en https://docs.docker.com/engine/userguide/containers/dockervolumes/

Si está utilizando Docker Machine en Mac o Windows, su demonio Docker solo tiene acceso limitado a su sistema de archivos OS X o Windows. Docker Machine intenta compartir automáticamente su directorio / Users (OS X) o C: \ Users (Windows). Por lo tanto, puede montar archivos o directorios en OS X usando.

En Windows, monte directorios usando:

docker run -v / c / Users / [ruta]: / [ruta del contenedor] ... `

Lo intenté:

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

lo que me da un 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'.

También probé:

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

Tenga en cuenta que la ruta C: \ meinedaten en el invitado / contenedor ya existe, lo cual se requiere de acuerdo con la documentación de la ventana acoplable.

El comando me parece correcto según la documentación.

ingrese la descripción de la imagen aquí

(Los volúmenes de montaje desde el host de Mac OS X al contenedor de acoplador de Ubuntu funcionan bien, solo estoy teniendo problemas con Windows)

Actualizar

También intenté usar Windows Containers de forma nativa (a través de Powershell), sin usar Docker. Sigo la documentación en 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

Pero también tengo problemas allí.

ingrese la descripción de la imagen aquí

Temas eventualmente relacionados:

Mathias Conradt
fuente

Respuestas:

22

En Windows, las rutas deben especificarse utilizando la semántica de estilo Windows. No debe usar una barra diagonal delante del camino.

docker run -v c:\Users\[path]:c:\[containerPath]
Mathias Conradt
fuente
Esto no funciona si creó las carpetas con un comando copiar o agregar.
Steve Coleman
el directorio de host también puede ser relativo "./" y el sistema operativo interno invitado puede ser un tipo de sistema operativo Linux, por lo tanto, la ruta de linux regular "/ a / b / c /" como, en Docker, componen de esta manera `volúmenes: - ./:/var / www / html`
FantomX1
7

Actualización de aniversario de Windows 10 y Windows Server 2016 RTM.

Agrega un volumen:

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

Montar un directorio de host:

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