Docker Nginx Mount "¿Está intentando montar un directory en un file (o viceversa)?"

He intentado hacer un sistema de respaldo para mis usuarios y todo funciona bien para los contenedores de bases de datos, excepto para el server web que se ejecuta bajo Nginx. He estado mirando alnetworkingedor y parece que no soy el único con este problema. Sin embargo, no he podido encontrar una solución.

Pasos:

# docker load -i /path/to/backup-image.tar # docker run \ > -v $(pwd)/volumes/home/project/project-git-repo/project-docker/volumes/php-conf/custom-php.ini:/usr/local/etc/php/conf.d/custom-php.ini \ > -v $(pwd)/volumes/home/project/project-git-repo/project-docker/volumes/php-conf/opcache-recommended.ini:/usr/local/etc/php/conf.d/opcache-recommended.ini \ > -v $(pwd)/volumes/home/project/project-git-repo/project-docker/volumes/wp-content:/var/www/html \ > -v $(pwd)/volumes/tmp/html/.well-known:/var/www/html/.well-known \ > --name websrv project_backup_tmp 

Este último command genera:

  container_linux.go:262: starting container process caused "process_linux.go:339: container init caused \"rootfs_linux.go:57: mounting \\\"/tmp/project_restre/docker/7aa016ba40e9/volumes/home/project/project-git-repo/project-docker/volumes/php-conf/custom-php.ini\\\" to rootfs \\\"/var/lib/docker/aufs/mnt/b23066c3007d106ae9364ca4e2603e4d5a3e63a0f47d2669ca6580be735adb06\\\" at \\\"/var/lib/docker/aufs/mnt/b23066c3007d106ae9364ca4e2603e4d5a3e63a0f47d2669ca6580be735adb06/usr/local/etc/php/conf.d/custom-php.ini\\\" caused \\\"not a directory\\\"\"" docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "process_linux.go:339: container init caused \"rootfs_linux.go:57: mounting \\\"/tmp/project_restre/docker/7aa016ba40e9/volumes/home/project/project-git-repo/project-docker/volumes/php-conf/custom-php.ini\\\" to rootfs \\\"/var/lib/docker/aufs/mnt/b23066c3007d106ae9364ca4e2603e4d5a3e63a0f47d2669ca6580be735adb06\\\" at \\\"/var/lib/docker/aufs/mnt/b23066c3007d106ae9364ca4e2603e4d5a3e63a0f47d2669ca6580be735adb06/usr/local/etc/php/conf.d/custom-php.ini\\\" caused \\\"not a directory\\\"\"" : Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type. ERRO[0001] error waiting for container: context canceled 

Aquí está el resultado de mi docker info :

 Containers: 14 Running: 1 Paused: 0 Stopped: 13 Images: 79 Server Version: 17.06.0-ce Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 184 Dirperm1 Supported: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: cfb82a876ecc11b5ca0977d1733adbe58599088a runc version: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4 init version: 949e6fa Security Options: apparmor seccomp Profile: default Kernel Version: 4.4.0-83-generic Operating System: Ubuntu 16.04.2 LTS OSType: linux Architecture: x86_64 CPUs: 8 Total Memory: 19.59GiB Name: rajiska-server ID: 4YFX:52ZF:QKGV:IMY4:6PP4:6P33:JXGT:QHJW:MZTI:QVVX:YU77:ZGR6 Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false WARNING: No swap limit support 

He cruzado el mismo problema y generalmente se trata de intentar montar un file en el host a un contenedor que se ejecuta en otra máquina o máquina virtual.

Entonces, si los contenedores que está ejecutando están en VirtualBox VM o en alguna otra máquina que no sea su local, debe encontrar otra manera de sincronizar sus directorys.

Sin embargo, si está utilizando docker-machine para configurar su VirtualBox VM, generalmente monta su /home directory a /hosthome en la VM creada.

Por ejemplo, si su proyecto está ubicado en su directory de inicio, podría ser montado así:

 docker run -v /hosthome/USERNAME/PROJECT:/path/on/container imageame 

Dónde:

  • USERNAME es tu nombre de usuario en la máquina host
  • PROJECT es el nombre del directory del proyecto en la máquina host