Enlace de error de Docker: dirección ya en uso

Resuelto Ngoral asked hace 8 años • 41 respuestas

Cuando ejecuto docker-compose upmi 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.

Ngoral avatar Jun 22 '16 22:06 Ngoral
Aceptado

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 .

Tomasz Bartkowiak avatar Apr 10 '2019 13:04 Tomasz Bartkowiak

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 3000le 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 psfue 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 psme ayudó:

docker rm -f $(docker ps -aq)es un comando corto que uso para eliminar todos los contenedores.

Editar: Agregué cómo docker psme ayudó.

Ayushya avatar Jun 26 '2017 12:06 Ayushya

Yo tuve el mismo problema. Lo solucioné deteniendo el servicio Apache2 en mi host.

Fabien Thetis avatar Oct 23 '2017 10:10 Fabien Thetis

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.