Tengo una ventana acoplable con versión 17.06.0-ce
. Cuando intento instalar NGINX usando la ventana acoplable con el comando:
docker run -p 80:80 -p 8080:8080 --name nginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx:latest
Muestra que
docker: Respuesta de error de daemon: oci runtime error: container_linux.go: 262: el proceso de inicio del contenedor provocó "process_linux.go: 339: el inicio del contenedor provocó \" rootfs_linux.go: 57: montaje \\ "/ appdata / nginx / conf / nginx. \\ "causado \\" no es un directorio \\ "\" ": ¿Estás intentando montar un directorio en un archivo (o viceversa)? Compruebe si la ruta de host especificada existe y es del tipo esperado.
Si no monta el nginx.conf
archivo, todo está bien. Entonces, ¿cómo puedo montar el archivo de configuración?
ls -al .
? Quiero ver cómo se ve tu pwd.docker rm …
) y luego volver a crearlo.Respuestas:
Porque Docker reconocerá
$PWD/conf/nginx.conf
como una carpeta y no como un archivo. Compruebe si el$PWD/conf/
directorio contienenginx.conf
como directorio .Prueba con
De lo contrario, abra un problema de Docker .
Funciona bien para mí con la misma configuración.
fuente
-v
nginx.conf
ya existiera previamente en esa ruta, Linux lo reconocería como un archivo, ¿verdad?Esto ya no debería suceder (desde v2.2.0.0), vea aquí
Si está utilizando Docker para Windows , este error puede ocurrir si ha cambiado recientemente su contraseña.
Como arreglar:
docker rm -v <container_name>
Actualización: Los pasos a continuación pueden funcionar sin necesidad de eliminar volúmenes primero.
El crédito va a BaranOrnarli en GitHub por la solución.
fuente
TL; DR : Elimina los volúmenes asociados con el contenedor.
Busque el nombre del contenedor usando y
docker ps -a
luego elimine ese contenedor usando:Problema:
El error al que se enfrenta puede ocurrir si anteriormente intentó ejecutar el
docker run
comando mientras el archivo no estaba presente en la ubicación donde debería haber estado en el directorio de host.En este caso, el demonio de la ventana acoplable habría creado un directorio dentro del contenedor en su lugar, que luego no se puede asignar al archivo correcto cuando se colocan los archivos correctos en el directorio del host y se ejecuta nuevamente el comando de la ventana acoplable.
Solución:
Elimine los volúmenes asociados con el contenedor. Si no le preocupan otros volúmenes de contenedores, también puede utilizar:
fuente
docker volume
comando / interfaz es solo para volúmenes anónimos y con nombre, que no forman parte de la pregunta original./var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0\\\"
Mi deducción: ya tiene una carpeta debido a una ejecución anterior, por lo que si intenta asignar un archivo a esa carpeta, fallará.Respuesta para personas que usan Docker Toolbox
Ha habido al menos 3 respuestas aquí que tocan el problema, pero no lo explican correctamente y no dan una solución completa. Este es solo un problema de montaje de carpeta .
Descripción del problema:
Docker Toolbox evita el requisito de Hyper-V de Docker al crear una máquina virtual (en VirtualBox, que viene incluida). Docker está instalado y se ejecuta dentro de la VM. Para que Docker funcione correctamente, debe tener acceso al desde la máquina host. Que aquí no es así.
Después de instalar Docker Toolbox, creó la VM VirtualBox y solo se montó
C:\Users
en la máquina, como\c\Users\
. Mi proyecto estabaC:\projects
tan en ninguna parte en el volumen montado. Cuando estaba enviando la ruta a la VM, no existiría, yaC:\projects
que no está montada. De ahí el error anterior.Digamos que tenía mi proyecto que contenía mi configuración ngnix en
C:/projects/project_name/
Arreglando lo:
Vaya a VirtualBox, haga clic derecho en Predeterminado (la VM de Docker)> Configuración> Carpetas compartidas
Al hacer clic en el icono pequeño con el signo más en el lado derecho, agregue un nuevo recurso compartido. Usé la siguiente configuración:
C:\projects
a/projects
(ROOT/projects
) en la VM, lo que significa que ahora puede hacer referencia a cualquier ruta en proyectos como este:/projects/project_name
- porqueproject_name
desdeC:\projects\project_name
ahora está montado.En mi archivo de docker, ahora hago referencia
nginx.conf
a esto:Donde nginx.conf realmente reside en
C:\projects\project_name\docker_config\nginx\nginx.conf
fuente
La explicación dada por @Ayushya fue la razón por la que recibí este mensaje de error un tanto confuso y la limpieza necesaria se puede hacer fácilmente de esta manera:
fuente
Yo tuve el mismo problema. Estaba usando Docker Desktop con WSL en Windows 10 17.09.
Causa del problema:
El problema es que Docker para Windows espera que proporcione sus rutas de volumen en un formato que coincida con este:
/c/Users/username/app
PERO, WSL en su lugar usa el formato:
/mnt/c/Users/username/app
Esto es confuso porque al revisar el archivo en la consola lo vi, y para mí todo estaba correcto. No conocía las expectativas de Docker para Windows sobre las rutas de volumen .
Solución al problema:
Uní los puntos de montaje personalizados para corregir las diferencias de Docker para Windows y WSL:
sudo mount --bind /mnt/c /c
Como se sugiere en esta increíble guía: Configurar Docker para Windows y WSL para que funcionen sin problemas y todo funciona perfectamente ahora.
Antes de comenzar a usar WSL, estaba usando Git Bash y también tenía este problema.
fuente
Estoy usando Docker ToolBox para Windows. De manera predeterminada, C Drive se monta automáticamente, por lo que para montar los archivos, asegúrese de que sus archivos y carpetas estén dentro de C DRIVE .
Ejemplo:
C:\Users\%USERNAME%\Desktop
fuente
Quizás alguien encuentre esto útil. Mi archivo de redacción tenía el siguiente volumen montado
Como ./file no existía, se montó en ABC (por defecto como carpeta).
En mi caso tuve un contenedor resultado de
Cuando más tarde creé ./file y lo ejecuté
docker-compose up
, tuve el error:El contenedor traído desde
cool_image
recordó que/dir/file
era un directorio y entró en conflicto con el creado y montado recientemente../file
.La solucion fue:
fuente
En Windows 10, obtengo este error sin cambiar nada en mi
docker-compose.yml
archivo o configuración de Docker en general.En mi caso, estaba usando una VPN con una política de firewall que bloquea el puerto 445.
Después de desconectarse de la VPN, el problema desaparece.
Por lo tanto, recomiendo verificar su firewall y no usar un proxy o VPN cuando ejecute Docker Desktop.
Consulte Docker para Windows: reglas de firewall para unidades compartidas para obtener más detalles.
Espero que esto ayude a alguien más.
fuente
¿Podría utilizar la ruta absoluta / completa en lugar de
$PWD/conf/nginx.conf
? Entonces funcionará.EX:docker run --name nginx-container5 --rm -v /home/sree/html/nginx.conf:/etc/nginx/nginx.conf -d -p 90:80 nginx b9ead15988a93bf8593c013b6c27294d38a2a40f4ac75b1c1ee362de4723765b root@sree-VirtualBox:/home/sree/html# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b9ead15988a9 nginx "nginx -g 'daemon of…" 7 seconds ago Up 6 seconds 0.0.0.0:90->80/tcp nginx-container5 e2b195a691a4 nginx "/bin/bash" 16 minutes ago Up 16 minutes 0.0.0.0:80->80/tcp test-nginx
fuente
Experimenté el mismo problema al usar Docker sobre WSL1 en Windows 10 con esta línea de comando:
Lo resolví cambiando la ruta del archivo en el sistema host a una ruta absoluta de estilo UNIX:
o usando una ruta absoluta de estilo Windows con en
/
lugar de\
como separadores de ruta:fuente
La actualización de Virtual Box a 6.0.10 solucionó este problema para Docker Toolbox
https://github.com/docker/toolbox/issues/844
Estaba experimentando este tipo de error:
Después de actualizar VitualBox, todos los comandos funcionaron bien 🎉
fuente
Tuve el mismo rasguño en la cabeza porque no tenía el archivo localmente, así que lo creó como una carpeta.
fuente
Tuve un error similar en niginx en el entorno Mac. Docker no reconoció correctamente el archivo default.conf. Una vez que se cambió la ruta relativa a la ruta absoluta, se solucionó el error.
fuente
Para mí, esto no funcionó:
Pero esto funciona bien (obviamente también moví mi archivo de configuración dentro de un nuevo directorio:
fuente
Compartiré mi caso aquí, ya que esto puede ahorrarle mucho tiempo a otra persona en el futuro.
Tenía un docker-compose que funcionaba perfectamente en mi macos, hasta que comencé a usar docker-in-docker en Gitlab CI. Solo me dieron permisos para trabajar como maestro en un repositorio, y Gitlab CI es autohospedado y configurado por otra persona y no se compartió ninguna otra información sobre cómo está configurado, etc.
Lo siguiente causó el problema:
Solo cuando noté que esto podría estar ejecutándose en Windows (horas rascándome la cabeza), intenté cambiar el nombre de wodpress.conf a default.conf y simplemente establecí los nombres de ruta de directorio:
¡Esto resolvió el problema!
fuente
Tuve este problema en Windows 7 porque mi archivo docker estaba en una unidad diferente.
Esto es lo que hice para solucionar el problema:
En este punto,
docker-compose up
debería funcionar.fuente
Recibí el mismo error en Windows10 después de una actualización de Docker: 2.3.0.2 (45183).
Estaba usando caminos absolutos como este
//C/workspace/nginx/nginx.conf
y todo funcionó a la perfección.La actualización rompió mi docker-compose, y tuve que cambiar las rutas a
/C/workspace/nginx/nginx.conf
una única/
para la raíz.fuente
Tenga en cuenta que esta situación también ocurrirá si intenta montar un volumen desde el host que no se ha agregado a la sección Recursos> Compartir archivos de las Preferencias de Docker.
Agregar la ruta raíz como un recurso para compartir archivos ahora permitirá a Docker acceder al recurso para montarlo en el contenedor. Tenga en cuenta que es posible que deba borrar el contenido de su contenedor Docker para intentar volver a montar el volumen.
Por ejemplo, si su aplicación se encuentra en
/mysites/myapp
, querrá agregar/mysites
como ubicación de recursos para compartir archivos.fuente
Tuve el mismo problema, docker-compose estaba creando un directorio en lugar de un archivo, luego fallaba a mitad de camino.
Lo que hice:
Ejecute el contenedor sin ningún mapeo.
Copie el
.conf
archivo en la ubicación del host:docker cp containername:/etc/nginx/nginx.conf ./nginx.conf
Retire el recipiente (
docker-compose down
).Vuelva a colocar el mapa.
Vuelva a montar el contenedor.
Componer ventana acoplable se encuentra el
.conf
archivo y asignar , en lugar de tratar de crear un directorio .fuente
He resuelto el problema de la montura. Estoy usando un entorno Win 7 y me sucedió el mismo problema.
El contenedor tiene un directorio de sincronización predeterminado en
C:\Users\
, por lo que moví mi proyecto yC:\Users\
luego lo recreé. Ahora funciona.fuente