with run from windows docker containers volume boot2docker

windows - run - docker share folder with host



¿Cómo montar un volumen de docker mientras se usa un host de Windows? (3)

Es posible que / sea ​​interpretado como una opción por el shell de Windows de CMD.

Pruebe primero una máquina Docker-machine ssh por defecto, para abrir una sesión ssh en su máquina virtual. A partir de ahí, intente ejecutar de nuevo la docker run -v /c/Users/phisch/dev/htdocs:/var/www phisch:dev : docker run -v /c/Users/phisch/dev/htdocs:/var/www phisch:dev

Como lo comentó thaJeztah en el número 18290 :

Podría considerar usar docker-componte ; docker-compose le permite definir volúmenes montados en enlace en relación con la ubicación del archivo docker-compose.yml .
El uso de un archivo docker-compose permite especificar todas las opciones necesarias para ejecutar sus contenedores en un solo archivo, lo que lo hace ideal para compartir entre los miembros del equipo (es decir, solo ejecute docker-compose up -d iniciará todos los contenedores para el proyecto con las opciones correctas).

Este comentario menciona a & dding a second /:

docker run -v //c/Users/phisch/dev/htdocs:`/var/www` phisch:dev

Incluso en la sesión del shell msys toolbox msys, hay problemas (como el problema 282 )

Después de una larga discusión, el problema era que /var/www tenía una carpeta.

El montaje /c/Users/phisch/dev/htdoc en una carpeta vacía funciona, pero podría no dar el resultado esperado, ya que el CMD apache2-foreground predeterminado todavía podría servir su contenido basado en /var/www (que no tendría htdocs contenido si ese htdocs está montado en otra carpeta).

Montar el volumen de un docker mientras estaba bajo un host de Windows, ha sido un gran dolor para mí, y no pude lograr que funcionara.

Actualmente tengo el siguiente archivo Docker simple:

FROM php:5-apache RUN apt-get update

Cuando construyo una imagen de ella, y comienzo un contenedor

docker build -t phisch:dev . docker run phisch:dev

el contenedor comienza correctamente

Pero cuando intento montar un volumen:

docker run -v /c/Users/phisch/dev/htdocs:/var/www phisch:dev

se mostrará el siguiente mensaje:

C:/Users/phisch/dev>docker run -v /c/Users/phisch/dev/htdocs:/var/www phisch:dev no such file or directory docker: Error response from daemon: Container command not found or does not exist..

El directorio /var/www definitivamente existe en el contenedor, intentar otros directores no cambia el resultado. El anteponer una barra inclinada al directorio del lado del servidor tampoco ayuda. ( //c/Users/phisch/dev/htdocs )

Cómo montar, por ejemplo /var/www a C:/Users/phisch/dev/htdocs ?

phisch@DESKTOP-UC1LB9J MINGW64 ~/dev (master) $ docker inspect phisch:dev [ { "Id": "sha256:73c1533222a905a378f12505ccbd9e9b34cde5a4b34ed008c39e23d5d58a9c91", "RepoTags": [ "dev_web:latest", "phisch:dev", "phisch:dev3" ], "RepoDigests": [], "Parent": "sha256:d2c4149d86c4dfceaff0e9c4eb5a5d42ca7815f81dd08baad4dc8bda6db2fb10", "Comment": "", "Created": "2016-02-10T12:16:37.667236134Z", "Container": "dad811f51ef3b94d9845d13a0e43ad07ccd5684ea2747b3846accdc71abeb628", "ContainerConfig": { "Hostname": "e06f5a03fe1f", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "ExposedPorts": { "80/tcp": {} }, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "PHP_INI_DIR=/usr/local/etc/php", "PHP_EXTRA_BUILD_DEPS=apache2-dev", "PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2", "GPG_KEYS=0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3", "PHP_VERSION=5.6.18", "PHP_FILENAME=php-5.6.18.tar.xz", "PHP_SHA256=54dd9106c3469bc7028644d72ac140af00655420bbaaf4a742a64e9ed02ec1b0" ], "Cmd": [ "/bin/sh", "-c", "apt-get update" ], "ArgsEscaped": true, "Image": "sha256:d2c4149d86c4dfceaff0e9c4eb5a5d42ca7815f81dd08baad4dc8bda6db2fb10", "Volumes": null, "WorkingDir": "/var/www/html", "Entrypoint": null, "OnBuild": [], "Labels": {} }, "DockerVersion": "1.10.0", "Author": "", "Config": { "Hostname": "e06f5a03fe1f", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "ExposedPorts": { "80/tcp": {} }, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "PHP_INI_DIR=/usr/local/etc/php", "PHP_EXTRA_BUILD_DEPS=apache2-dev", "PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2", "GPG_KEYS=0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3", "PHP_VERSION=5.6.18", "PHP_FILENAME=php-5.6.18.tar.xz", "PHP_SHA256=54dd9106c3469bc7028644d72ac140af00655420bbaaf4a742a64e9ed02ec1b0" ], "Cmd": [ "apache2-foreground" ], "ArgsEscaped": true, "Image": "sha256:d2c4149d86c4dfceaff0e9c4eb5a5d42ca7815f81dd08baad4dc8bda6db2fb10", "Volumes": null, "WorkingDir": "/var/www/html", "Entrypoint": null, "OnBuild": [], "Labels": {} }, "Architecture": "amd64", "Os": "linux", "Size": 491287784, "VirtualSize": 491287784, "GraphDriver": { "Name": "aufs", "Data": null } } ]

Resulta que el directorio /var/www del contenedor necesita estar vacío, ya que tenía un subdirectorio www , Docker no pudo usarlo como punto de montaje.


si hablamos de Docker en Windows, debemos tener en cuenta el hecho de que todos los contenedores se ejecutan en Virtual Box (VB). Antes de montar el volumen en un contenedor, debemos asegurarnos de que esa carpeta esté disponible para VB.

En primer lugar, defina el nombre de la máquina acopladora actual en ejecución, ejecute

$ docker-machine.exe active default

En segundo lugar, agregue la carpeta compartida a VB

$ VBoxManage sharedfolder add default --name "some_project" --hostpath D:/Projects/some_project

En tercer lugar, crea una carpeta

$ docker-machine.exe ssh default ''sudo mkdir --parents /d/projects/some_project''

En cuarto lugar, móntelo

$ docker-machine.exe ssh default ''sudo mount -t vboxsf some_project /d/projects/some_project''

Por último, crear contenedor

$ docker run -v //d/projects/some_project://d/projects/some_project -d some-image_name


Utilizo Docker para Windows con powershell y uso $PWD para referirme al directorio actual cuando monté un volumen y me funciona bien. Un par de ejemplos:

docker run -p 2368:2368 -v $PWD/ghost:/var/lib/ghost -d ghost docker run -p 2368:2368 -v $PWD/:/var/lib/ghost -d ghost