Identifica el servicio antes de detenerlo
Lista los contenedores activos y sus puertos publicados. Busca el lado del host en un mapeo como 8080->80/tcp. En Linux, ss -ltnp también lista escuchas TCP; algunos detalles requieren privilegios adecuados.
docker ps --format 'table {{.Names}}\t{{.Ports}}'Una lista vacía de contenedores no demuestra que el puerto esté libre: puede ocuparlo un programa del host. Revisa también la dirección y el protocolo. Identifica el servicio y su función antes de detenerlo.
Elige un puerto del host disponible
Para este ejemplo web temporal, comprueba que el puerto host 8081 esté libre y el nombre devsheet-web no se use. El ejemplo utiliza la dirección de loopback del host e inicia nginx en primer plano.
docker run --rm --name devsheet-web -p 127.0.0.1:8081:80 nginxEl mapeo es HOST_IP:HOST_PORT:CONTAINER_PORT. Solo cambia el puerto del host a 8081; nginx sigue en el puerto interno 80. Prueba desde otra terminal. Ctrl+C detiene el ejemplo y --rm elimina su contenedor.
Actualiza el mapeo en Compose
En tu archivo Compose, cambia la entrada ports del servicio previsto a 127.0.0.1:8081:80, después de comprobar el puerto. Recrea ese servicio para aplicar el cambio; sustituye web por su nombre real.
docker compose ps
docker compose up -d webUn simple reinicio no aplica un mapeo modificado. Revisa el proyecto Compose antes de recrear el servicio y conserva sus montajes y datos. Detener contenedores ajenos puede interrumpir otros servicios.
Comprueba el servicio publicado
Revisa el mapeo activo y envía una petición HTTP al puerto host elegido. El ejemplo nginx debería responder; otras aplicaciones pueden tardar en arrancar.
docker ps --format 'table {{.Names}}\t{{.Ports}}'
curl --head http://127.0.0.1:8081/Si el conflicto persiste, revisa dirección, puerto y protocolo, incluidas las escuchas IPv4 e IPv6. Un error HTTP después de conectar es distinto de un fallo de enlace del puerto. Consulta logs y configuración del servicio afectado.