Estoy tratando de asignar una carpeta de host al invitado de la misma manera que se logra fácilmente en linux/mac a través -v "$(pwd)":/code . No puedo encontrar un ejemplo simple para hacer que esto funcione con contenedores de Windows.
docker build -t="webdav" . docker run --rm -it -v C:\junk:C:\code --name webdav webdav powershell C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: container f0fa313478fddb73e34d47699de0fc3c2a3bdb202ddcfc2a124c5c8b7523ec09 encountered an error during Start: failure in a Windows system call: The connection with the Virtual Machine hosting the container was closed. (0xc037010a).He probado innumerables otras variaciones, y la respuesta aceptada aquí da el mismo error.
Los documentos parecen referirse solo a Docker Toolbox. El ejemplo solo me da invalid bind mount spec .
Mi Dockerfile
FROM microsoft/windowsservercore RUN powershell -Command Add-WindowsFeature Web-Server RUN powershell -Command mkdir /code WORKDIR /code ADD * /code/Nombre del SO: Microsoft Windows 10 Pro Versión del SO: 10.0.14393 N/A Compilación 14393
Versión 17.03.1-ce-win5 (10743) Canal: estable b18e2a5
Descargo de responsabilidad: originalmente publiqué esto en los foros de Docker , pero no he recibido ninguna respuesta.
EDITAR: Lo encontré. https://docs.docker.com/engine/reference/builder/#volume "Al usar contenedores basados en Windows, el destino de un volumen dentro del contenedor debe ser uno de los siguientes: un directorio inexistente o vacío; o una unidad aparte de C:"
O aquí: https://docs.docker.com/engine/reference/commandline/run/#mount-volume--v---read-only "Los siguientes ejemplos fallarán al usar contenedores basados en Windows, como destino de un volumen o montaje de enlace dentro del contenedor debe ser uno de los siguientes: un directorio vacío o inexistente, o una unidad que no sea C:. Además, la fuente de un montaje de enlace debe ser un directorio local, no un archivo".
Me sorprende que estos no sean lugares obvios para documentar esta diferencia. ¿Dónde buscó la documentación de este problema? Agregaré esto allí :)
¿Existe una necesidad general de un resumen de las diferencias entre Linux y Windows?
RESPUESTA ANTIGUA (para contexto) Aquí hay una guía paso a paso sobre cómo montar volúmenes con la GUI: https://rominirani.com/docker-on-windows-mounting-host-directories-d96f3f056a2c
Al leer otras publicaciones del foro, parece que los caracteres especiales en las contraseñas pueden hacer tropezar las cosas.
Si aún tiene problemas, aquí hay un hilo que puede leer: https://github.com/docker/docker/issues/23992
¡Espero que esto ayude!
No estoy seguro de si/dónde se publican los documentos del repositorio de moby en los documentos de Docker, pero este problema indica que un volumen no puede hacer referencia a una carpeta existente en el contenedor. En mi ejemplo, primero estaba creando c:\code. Si cambio el comando:
docker run --rm -it -v C:\junk:C:\code2 --name webdav webdav powershell
... creará y montará c:\code2 en el contenedor para apuntar a c:\junk en el host.