Enlace de error de Docker: dirección ya en uso
Cuando ejecuto docker-compose up
mi proyecto Docker, falla y aparece el siguiente mensaje:
Error al iniciar el proxy del área de usuario: escuche tcp 0.0.0.0:3000: enlace: dirección ya en uso
netstat -pna | grep 3000
muestra esto:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
Ya lo he intentado docker-compose down
, pero no ayuda.
Esto 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 port
y luego:
kill -9 <process id>
(macOS) o sudo kill <process id>
(Linux).
Fuente: comentario del usuario Rub21 .
En su caso, fue algún otro proceso el que estaba usando el puerto y, como se indica en los comentarios, sudo netstat -pna | grep 3000
le ayudó a resolver el problema.
Mientras que en otros casos (yo mismo lo encontré muchas veces) en su mayoría es el mismo contenedor ejecutándose en alguna otra instancia. En ese caso docker ps
fue muy útil ya que a menudo dejaba los mismos contenedores ejecutándose en otros directorios y luego intentaba ejecutarlos nuevamente en otros lugares, donde se usaban los mismos nombres de contenedores.
Cómo docker ps
me ayudó:
docker rm -f $(docker ps -aq)
es un comando corto que uso para eliminar todos los contenedores.
Editar: Agregué cómo docker ps
me ayudó.
Yo tuve el mismo problema. Lo solucioné deteniendo el servicio Apache2 en mi host.
Puede finalizar el proceso que escucha en ese puerto fácilmente con el siguiente comando:
kill -9 $(lsof -t -i tcp:<port#>)
ex :
kill -9 $(lsof -t -i tcp:<port#>)
o para ubuntu:
sudo kill -9 `sudo lsof -t -i:8000`
Página de manual para lsof: https://man7.org/linux/man-pages/man8/lsof.8.html
-9 es para matar con fuerza sin verificar ningún departamento.
(No está relacionado, pero podría ser útil si es un misterio el PORT 5000): el proceso culpable se debe a la montería de Mac OS.
El puerto 5000 se usa comúnmente para dar servicio a servidores de desarrollo local. Al actualizar al último sistema operativo macOS, no pude vincular la ventana acoplable al puerto 5000 porque ya estaba en uso. (Es posible que encuentre un mensaje similar al Puerto 5000 que ya está en uso).
Al ejecutar lsof -i :5000, descubrí que el proceso que utilizaba el puerto se llamaba ControlCenter , que es una aplicación nativa de macOS. Si esto le sucede a usted, incluso si usa fuerza bruta (y elimina) la aplicación, se reiniciará sola. En mi computadora portátil, lsof -i :5000 devuelve que el Centro de control está siendo utilizado por el ID de proceso 433. Podría hacer killall -p 433, pero macOS sigue reiniciando el proceso.
El proceso que se ejecuta en este puerto resulta ser un servidor AirPlay. Puedes desactivarlo en
Preferencias del Sistema › Compartir y desmarcar AirPlay Receiver para liberar el puerto 5000.