Docker en Windows 10 "el controlador no pudo programar la conectividad externa en el punto final"

134

Estoy tratando de usar $ docker-compose up -dpara un proyecto y recibo este mensaje de error:

ERROR: para api No se puede iniciar el servicio API: controlador no pudo programar la conectividad externa en dataexploration_api_1 punto final (8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117): Error al iniciar el entorno de usuario de proxy: mkdir /port/tcp:0.0.0.0:9000:tcp:172.19.0.2:80: error de entrada / salida Se encontraron errores al abrir el proyecto.

Me pregunto si es quizás el puerto. Había estado probando el puerto 8080 anteriormente. El proyecto se configuró originalmente en una Mac y he clonado el repositorio de gitHub.

Calcetín_Rogers
fuente
Agregue un enlace al boleto de github para que todos podamos ir allí y votarlo.
PussInBoots

Respuestas:

270

Recibí el mismo mensaje de error en mi Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0 usando Windows Powershell x86 en modo administrador.

La solución fue simplemente reiniciar Docker.

Jens Christian Eldøy
fuente
Utilizo la ventana acoplable Versión 18.03.0-ce-win59 (16762) en Windows 10 Professional. La imagen de Docker es jenkins / jenkins: 2.107.2. Después de tirar, uso este comando para instalar docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2. Después de terminar de configurar jenkins, lo uso docker stop myJenkinsen otra ventana de comandos y apago mi host Windows 10. Cuando inicio Windows 10 que inicia Docker automáticamente, uso el comando docker start myJenkinsy obtengo el mensaje familiar. Sin embargo, reiniciar Docker resuelve el problema :)
Charles Wu
1
¿Alguien sabe por qué sucede esto? Reiniciar Docker parece hacky, ¿hay alguna manera de resolver esto correctamente?
Storm Muller el
La misma solución funcionó para mí en marzo de 2019. Uso de Docker Desktop versión 2.0.0.3 (31259) Canal: estable Compilación: 8858db3 Cliente: Docker Engine - Versión de la comunidad: 18.09.2 Versión de API: 1.39 Versión de Go: go1.10.8 Git commit: 6247962 Construido: dom 10 de febrero 04:12:31 2019 OS / Arch: windows / amd64 Experimental: falso Win 10 Versión 10.0.18346.1 (versión rápida de prelanzamiento)
JohnC
tuve el mismo problema en una Mac y al reiniciar la ventana acoplable también lo solucioné ... Jesús, debería haber verificado tu respuesta antes de reinstalar todo el entorno de la
ventana
67

Si sucede una vez, reiniciar Docker hará el trabajo. En mi caso, sucedía cada vez que reiniciaba mi computadora.

En este caso, desactive el Inicio rápido , o probablemente reinicie Docker cada vez que se inicie su computadora. Esta solución se obtuvo de aquí

chomp
fuente
66
Esto debe ser aceptado como respuesta. Reiniciar funciona pero cuando necesitas hacerlo cada vez que se vuelve molesto
Vitalii
Recibí este error al cambiar de usuario en Windows 10
Vasko
58

Simplemente reiniciar Docker no solucionó el problema para mí en Windows 10.

En mi caso, resolví el problema con los pasos exactos a continuación:

1) Cierre "Escritorio Docker"

2) Ejecute los siguientes comandos:

net stop com.docker.service
net start com.docker.service

3) Inicie "Docker Desktop" nuevamente

Espero que esto ayude a alguien más.

Mohammed Réda OUASSINI
fuente
3
¡Esto funciona para mí después de intentar simplemente reiniciar la ventana acoplable! Además, no se olvide de ejecutar esta pareja con privilegios de administrador
Gad Wissberg
Funcionó, pero no tengo privilegios de administrador todo el tiempo :(
Hassan Tareq
3
Me funcionó reiniciar el servicio de docker, por lo general, solo un reinicio de escritorio de docker fue suficiente, pero esta vez ... docker en Windows 10 es realmente doloroso (latencias, errores, documento, ...)
a11r
Esto funcionó! Debería ser la respuesta real aceptada. Gracias
Dominik K
¡Trabajó para mí, gracias!
G.Mast
9

También obtuve ese error, si desea saber la razón principal por la que ocurre el error, es porque Docker ya está ejecutando un contenedor similar, para resolver el problema (evite reiniciar Docker), debe:

docker container ls

Tienes algo similar a:

CONTAINER ID        IMAGE               COMMAND             CREATED
1fa4ab2cf395        friendlyhello       "python app.py"     28 seconds ago

Esta es una lista de los contenedores en ejecución, tome la ID DEL CONTENEDOR (copia Ctrl+ C)

Ahora tiene que finalizar el proceso (y dejar ejecutar otra imagen) ejecute este comando.

docker container stop <CONTAINER_ID>

¡Y eso es todo! Ahora puedes crear el contenedor.

Para obtener más información, visite https://docs.docker.com/get-started/part2/

Andres Rodriguez
fuente
7

Soy consciente de que ya hay muchas respuestas, pero ninguna de ellas me resolvió el problema.
En cambio, me deshice de este mensaje de error restableciendo la ventana acoplable a los valores predeterminados de fábrica :

ingrese la descripción de la imagen aquí

jasie
fuente
¿Tuviste algún informe de error de Docker antes de hacerlo, porque en mi caso tuve un error emergente con la sugerencia de restablecer los valores predeterminados de fábrica?
Theodosios Asvestopoulos
No, @TheodosiosAsvestopoulos, no obtuve esa ventana emergente.
jasie
Extraño, tuve el mismo problema nuevamente hoy, el reinicio de Docker no ayudó. No quería volver a restablecer los valores predeterminados de fábrica, porque extraemos imágenes realmente grandes, así que simplemente salí de Docker Desktop y lo abrí nuevamente y funcionó (parece ser una acción diferente a solo reiniciarlo).
Theodosios Asvestopoulos
6

Normalmente, este error ocurre cuando intenta iniciar un contenedor, pero los puertos que el contenedor necesita están ocupados, generalmente por el mismo Docker, como resultado de un último proceso incorrecto para detenerse.

Para mí la solución es:

  1. Abra Windows CMD como administrador, escriba netstat -oanpara encontrar el proceso (Docker es ese proceso) que está ocupando su puerto:

En mi caso, mis puertos de acoplamiento son 3306 6001 8000 9001.

  1. Ahora necesitamos liberar esos puertos, así que vamos a matar este proceso por PID (PID de columna), escriba

    TASKKILL /PID 9816 /F
    
  2. Reinicia la ventana acoplable.

  3. Sea feliz.

Saludos.

Jhon Didier Sotto
fuente
2

En mi caso, el problema era que el contenedor docker (Nginx) usa el puerto 80 e IIS usa lo mismo. Configurar otro puerto en IIS resuelve el problema

Артур Камильянов
fuente
1

En la mayoría de los casos, el primer caso en el que debe pensar es que hay un servicio antiguo ejecutándose y usando ese puerto. En mi caso, dado que cambio el nombre de la imagen, cuando uso docker-compose para detener (luego hacia arriba), no detendrá el contenedor antiguo (servicio), lo que hace que el nuevo contenedor no se pueda iniciar.

Phuoc Quach ngoc
fuente
0

Una respuesta un poco tardía, pero la dejaré aquí, podría ayudar a alguien más En un mojave de Mac después de muchos reinicios de Mac y Docker tuve que hacerlo sudo apachectl stop.

Tarek
fuente
0
  • La forma más sencilla de resolver esto es reiniciando la ventana acoplable. Pero en algunos casos puede que no funcione aunque no tenga ningún contenedor que se esté ejecutando en el puerto. Puede verificar los contenedores en ejecución usando el docker pscomando y puede ver todos los contenedores que no se borraron pero salieron antes de usar el docker ps -acomando.

Imagine que hay un contenedor que tiene la identificación del contenedor 8e35276e845e. Puede usar el comando docker rm 8e35276e845eo docker rm 8e3para finalizar el contenedor. Tenga en cuenta que las primeras 3 cadenas son la identificación de esa identificación de contenedor de docker en particular. Por lo tanto, de acuerdo con el escenario anterior, 8e3 es el id de 8e35276e845e .

  • Si reiniciar no funciona, puede intentar cambiar los puertos de los servicios en el archivo docker-compose.yml y de acuerdo con el puerto apache, debe cambiar el puerto del host v (si lo hay). Esto resolverá su problema.

Ex:

    build:
      context: ./apache
      dockerfile: Dockerfile
    working_dir: /var/www/
    volumes:
      - .:/var/www
    networks:
      - app-network
    ports:
      - 8082:80
    depends_on:
      - mysql_db

debe ser cambiado a

apache_server:
    build:
      context: ./apache
      dockerfile: Dockerfile
    working_dir: /var/www/
    volumes:
      - .:/var/www
    networks:
      - app-network
    ports:
      - 8083:80
    depends_on:
      - mysql_db

y el v-host particular también tiene que ser cambiado,

Ej (según el escenario anterior):

<VirtualHost *:80> 
    ProxyPreserveHost On
    ServerAlias phpadocker.lk
    ProxyPass / http://localhost:8083/
    ProxyPassReverse / http://localhost:8083/
</VirtualHost>

Esto te ayudará a resolver el problema anterior.

Hirumina
fuente
0

Para muchos usuarios de Windows que tienen el mismo problema, sugeriría reiniciar la computadora también, porque la mayoría de las veces (al menos para mí) reiniciar solo Docker no funciona. Por lo tanto, te sugiero que sigas los siguientes pasos:

  1. Reinicia tu pc.
  2. Luego, inicie su PowerShell como administrador y ejecute esto:

    Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private

  3. Después de eso reinicia tu Docker.

Después de completar estos pasos, podrá ejecutar sin problemas. Espero que eso ayude.

Donald Shahini
fuente