Cuando ejecuto docker-compose upmi proyecto de Docker, falla con el siguiente mensaje:
Error starting userland proxy: listen tcp 0.0.0.0:3000: bind: address already in use
netstat -pna | grep 3000
muestra esto:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
Ya lo intenté docker-compose down, pero no ayuda.
ubuntu
docker
ubuntu-14.04
bind
docker-compose
Ngoral
fuente
fuente

sudo netstat -pna | grep 3000para obtener el proceso que está escuchando.sudover el nombre del proceso.sudopodía cambiar la salida :)Respuestas:
En su caso, fue algún otro proceso que estaba usando el puerto y, como se indica en los comentarios, lo
sudo netstat -pna | grep 3000ayudó a resolver el problema.Mientras que en otros casos (yo mismo lo encontré muchas veces), la mayoría de las veces es el mismo contenedor que se ejecuta en otra instancia. En ese caso,
docker psfue muy útil, ya que a menudo dejé los mismos contenedores ejecutándose en otros directorios y luego intenté ejecutarlos nuevamente en otros lugares, donde se usaban los mismos nombres de contenedor.Cómo
docker psme ayudó:docker rm -f $(docker ps -aq)es un comando corto que utilizo para eliminar todos los contenedores.Editar: Se agregó cómo
docker psme ayudó.fuente
docker-compose downayudadocker-compose up. Aunque recomiendo en mi respuesta encontrar el contenedor que ya se está ejecutando y tomar la acción deseada. Me sentí apropiado para eliminarlos, si alguien no quiere eliminarlos, entonces hayrmusostoppara detenerlos.tensorflow/tensorflowse ejecutará la imagen. ¿Cómo puedo configurar mi imagen para que se ejecute en otro puerto? He intentado esto:docker run -it -d -p 8888:8000 tensorflow/tensorflowenlacé el puerto 8888 de mi imagen al 8000 en el cliente, pero no funciona.-dopción. Ahora, los puertos se exponen comoHOST:CONTAINER. Por lo tanto, debe correrdocker run -it -p 8000:8888Esto me ayudó:
docker-compose down # Stop container on current dir if there is a docker-compose.yml docker rm -fv $(docker ps -aq) # Remove all containers sudo lsof -i -P -n | grep <port number> # List who's using the porty luego:
kill -9 <process id>(macOS) osudo kill <process id>(Linux).Fuente: comentario del usuario Rub21 .
fuente
docker rm -fv $(docker ps -aq)esta línea era todo lo que necesitaba. GraciasTuve el mismo problema,
docker-compose down --rmi all(en el mismo directorio donde ejecuta docker-compose up)ayuda
fuente
downes lo último que suele querer hacer. Perder el estado actual no es pan comido.Para Linux / Unix:
Búsqueda simple de la utilidad de Linux usando el siguiente comando
Mostrará el procesamiento ejecutándose en este puerto, luego matará ese proceso usando PID (busque un PID en la fila) de ese proceso.
fuente
Yo tuve el mismo problema. Arreglé esto deteniendo el servicio Apache2 en mi host.
fuente
En mi caso fue
Y todo lo que necesito es desactivar la escucha de depuración en php storm
fuente
En algunos casos, es fundamental realizar una depuración más profunda del problema antes de detener un contenedor o matar un proceso.
Considere seguir la siguiente lista de verificación:
1) Verifique su actual entorno de composición Docker
Run
docker-compose ps.Si otro contenedor está usando el puerto, deténgalo
docker-compose stop <service-name-in-compose-file>o retírelo reemplazándolostopconrm.2) Compruebe los contenedores que se ejecutan fuera de su espacio de trabajo actual
Ejecutar
docker pspara ver la lista de todos los contenedores que se ejecutan en su host.Si encuentra que el puerto está siendo utilizado por otro contenedor, puede detenerlo con
docker stop <container-id>.(*) Debido a que no está bajo el alcance del
composeentorno de origen , es una buena práctica primero usar Docker Inspect para recopilar más información sobre el contenedor que está a punto de detener.3) Compruebe si otros procesos que se ejecutan en el host utilizan
el puerto. Por ejemplo, si el puerto es 6379, ejecute:
(*) También puede usar el comando lsof que se usa principalmente para recuperar información sobre archivos que son abiertos por varios procesos (sugiero ejecutar
netstatantes de eso).Entonces, en el caso de la salida anterior,
PIDis915. Ahora puedes ejecutar:Y vea el ID del proceso padre (
PPID) y el comando de ejecución.También puede ejecutar:
$ pstree -s <PID>a una visualización visual del proceso y sus procesos relacionados.En nuestro caso, podemos ver que el proceso probablemente sea un demonio (PPID es 1); en ese caso, considere ejecutar:
A)
$ cat /proc/<PID>/statuspara obtener información más detallada sobre el proceso, como la cantidad de subprocesos generados por el proceso, sus capacidades, etc. '.B)
$ systemctl status <PID>para ver elsystemdunidad que provocó la creación de un proceso específico. Si el servicio no es crítico, puede detenerlo y deshabilitarlo .4) Reiniciar servicio acoplable
Run:
sudo service docker restart.5) Ha llegado a este punto y ...
Sólo si no pone en riesgo su sistema, considere reiniciar el servidor.
fuente
Actualicé mi ventana acoplable esta tarde y encontré el mismo problema. Intenté reiniciar Docker pero no tuve suerte.
Finalmente, tuve que reiniciar mi computadora y funcionó. Definitivamente un error.
fuente
Compruebe
docker-compose.yml, podría darse el caso de que el puerto se especifique dos veces.fuente
Me encontré con el mismo problema varias veces. Reiniciar Docker parece hacer el truco
fuente
Resuelvo el problema reiniciando Docker.
fuente
y luego reinicia tu computadora
fuente
Una variación de la respuesta de @ DmitrySandalov: tenía tomcat / java ejecutándose en 8080, que necesitaba continuar. Miré el archivo docker-compose.yml y modifiqué la entrada de 8080 a otra de mi elección.
Funcionó perfectamente. (El único inconveniente es que el cambio se borrará si alguna vez actualizo el proyecto, ya que proviene de un repositorio externo).
fuente
Solo una nota al margen si tiene el mismo problema y está con Windows:
En mi caso el proceso a mi manera es justo
grafana-server.exe. Porque primero descargué la versión binaria y hice doble clic en el ejecutable, y ahora comienza como un servicio por parte del usuarioSYSTEMque no puedotaskkill(sin permiso)Tengo que ir al "Administrador de servicios" de Windows, buscar el servicio "Grafana" y detenerlo. Después de eso, el puerto 3000 ya no está ocupado.
Espero que ayude.
fuente
El que estaba usando el puerto 8888 era Jupiter y tuve que cambiar el archivo de configuración del portátil Jupiter para que se ejecutara en otro puerto.
para enumerar quién está usando ese puerto específico. sudo lsof -i -P -n | grep 9
Puede especificar el puerto que desea que ejecute Jupyter sin comentar / editar la siguiente línea en ~ / .jupyter / jupyter_notebook_config.py:
c.NotebookApp.port = 9999
En caso de que no tenga un jupyter_notebook_config.py intente ejecutar jupyter notebook --generate-config. Consulte esto para obtener más detalles sobre la configuración de Jupyter.
fuente
Cambiar network_mode: "bridge" a "host" lo hizo por mí.
Esto con
fuente
Antes de que se ejecutara en: docker run -d --name oracle -p 1521: 1521 -p 5500: 5500 qa / oracle Acabo de cambiar el puerto a docker run -d --name oracle -p 1522: 1522 -p 5500: 5500 qa / oráculo
funcionó bien para mí!
fuente
En mi máquina, este comando no mostraba un PID
netstat -tulpnpara el puerto en uso (8080), por lo que no pude eliminarlo, eliminar los contenedores y reiniciar la computadora no funcionó. Entonces, elservice docker restartcomando reinició la ventana acoplable para mí (ubuntu) y el puerto ya no estaba en uso y soy un tipo feliz y me voy a almorzar.fuente
Recibí el siguiente error cuando intentaba iniciar un nuevo conatier: escuche tcp 0.0.0.0:8080: bind: address ya está en uso.
Solución: netstat -tulnp | grep 8080
[[email protected] (aws_main) ~] # netstat -tulnp | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* ESCUCHAR 12749 / java [[email protected] (aws_main) ~] #
matar -9 12749
Luego intente reiniciar el contenedor, debería funcionar
fuente
Hace el truco.
fuente