remove - docker run image
Ejecutando Docker para Windows, error al exponer puertos (8)
Soy consciente de que hay muchas preguntas sobre la ejecución de Docker en Windows, sin embargo, esta pregunta se trata de ejecutar el nuevo Docker para Windows, en Windows.
En mi caso estoy usando Windows 10 Pro 64 bit.
Según el sitio, esta versión debería ser compatible.
He estado siguiendo un tutorial que encontré aquí:
https://prakhar.me/docker-curriculum/
También intenté seguir la guía oficial, por supuesto:
https://docs.docker.com/docker-for-windows/
En ambos tutoriales recibo el mismo mensaje de error cuando intento asignar un puerto usando el parámetro
-P
o cuando intento especificar un puerto
-p 8080:5000
:
En la guía oficial ejecuto
docker run -d -p 80:80 --name webserver nginx
y obtengo:
C: / Archivos de programa / Docker / Docker / Resources / bin / docker.exe: Respuesta de error del demonio: el controlador no pudo programar la conectividad externa en el servidor web de punto final (f9946544e4c6ad2dd9cb8cbccd251e4d48254e86562/2012e6da75c3bd42c7e45a). 80: tcp: 172.17.0.2: 80: error de entrada / salida.
Siguiendo la guía no oficial ejecuto
docker run -p 8888:5000 prakhar1989/catnip
y obtengo básicamente el mismo error:
C: / Archivos de programa / Docker / Docker / Resources / bin / docker.exe: Respuesta de error del daemon: el controlador falló al programar la conectividad externa en el punto central focus_swartz (48a0c005779c6e89bf525ead2ecff44a7f092495cd22ef7d19973002963cb232): Error al iniciar el proxy de usuario :.0kc: tkcpp.0.0: tpc 8888: tcp: 172.17.0.2: 5000: error de entrada / salida.
Si no trato de asignar un puerto, el contenedor se ejecutará, pero no sé cómo acceder a él.
La versión de Docker que estoy ejecutando:
- Docker versión 1.12.3, compilación 6b644ec`
- docker-compose versión 1.8.1, compilación 004ddae`
- docker-machine.exe versión 0.8.2, compilación e18a919`
Cualquier ayuda será muy apreciada. Gracias.
1) Detenga todos los contenedores en ejecución
docker stop $(docker ps -a -q)
luego
2) Detenga el Docker en su máquina y reinícielo.
Luego ejecute el comando requerido. Esto resolverá el problema.
Aquí hay un nuevo giro.
La última actualización de Windows 10 (Fall Creators Update, 2017) tiene una nueva "característica". Inicia automáticamente las aplicaciones que se estaban ejecutando la última vez que cerró.
Esto reconstituye Docker para Windows en mal estado. Eso hizo que pareciera que esos puertos estaban siendo utilizados por otra cosa: era el fantasma de sí mismo. Esto explicaba por qué esos puertos todavía estaban en uso a pesar de que detuve / comencé mis contenedores e incluso reinicié.
La solución en este caso es simplemente reiniciar Docker daemon.
Para evitar esto después del próximo apagado, no use el botón de apagado. Escriba esto en su lugar:
shutdown /s /t 0
Esto evita la nueva característica.
Vea la respuesta de Jason [MS] en este hilo:
Aquí está la solución alternativa de un chico (desde el final de este hilo, no lo he probado yo mismo):
http://www.icttoolbox.nl/info/stop-windows-10-creator-fall-reopening-programs-reboot/
Esto es causado por un conflicto de numeración de puertos: problema de github aquí https://github.com/docker/compose/issues/3277
¡Esencialmente el puerto está en uso! La razón por la que el restablecimiento funcionó es porque borró otras asignaciones.
Intenté todas las sugerencias sobre este tema: eliminar todos los contenedores, reiniciar Docker Desktop, deshabilitar "Inicio rápido", reiniciar mi computadora, asegurándome de que las "Características experimentales" estuvieran deshabilitadas. Nada de eso funcionó.
Eventualmente lo puse en funcionamiento. Aquí hay algunas cosas que quizás desee probar (porque no estoy seguro de qué lo solucionó realmente).
- Busque "Docker Desktop" y haga clic con el botón derecho en "Ejecutar como administrador ..."
- Presta atención al puerto del que se queja. Algunas personas dicen que esto podría ser la manera poco amigable de Docker de decir "ese puerto está en uso". En mi caso, el puerto era 80. Ingresé a los Servicios en Windows Pro y desactivé el "Servicio de publicación World Wide Web" solo para estar seguro.
Intente detener Docker e iniciarlo nuevamente en modo administrador. Después de que comience, abra Power Shell en modo administrador también. Debido a que el error dice "mkdir" tal vez esto resolverá su problema. No estoy seguro, pero funcionó para mí. En el caso de usar -P, un conflicto de puertos no parece ser la razón del error una vez que -P elegirá los puertos al azar. El error en sí no fue muy amigable para mí, pero debido a que vi la palabra mkdir, imaginé que podría ser un error de permiso, por eso reinicié docker en modo administrador e inicié power shell en modo administrador.
Para Linux: usuarios de Debian,
Use docker stop $ (docker ps -a -q) solo cuando sepa si desea detener todos los contenedores o no ... En caso afirmativo, ejecute docker rm $ (docker ps -a -q) para eliminar los contenedores. ...
Luego detenga el docker daemon - systemctl stop docker Luego inicie docker daemon - systemctl start docker
Verifique también si el dacker de Docker está activo o no: estado del acoplador de servicio
Después de seguir todos los pasos mencionados anteriormente, debería estar bien .....
Reiniciar el demonio Docker soluciona este problema temporalmente, pero para deshacerme de él finalmente tuve que deshabilitar el inicio rápido de Windows 10 , que es la característica descrita en @ biscuit314.
Para deshabilitar el inicio rápido de Windows 10, vaya al Panel de control> Opciones de energía> Elija lo que hacen los botones de encendido> Cambie la configuración que actualmente no está disponible> Desmarque Activar inicio rápido (recomendado) y Guardar cambios
Si está en el sistema operativo Windows, reinicie Docker. Esto me ha solucionado el problema.