Skip to main content

Activar conexiones externas en Docker


Introducción

Docker no expone su API por red de forma predeterminada, pero en algunos casos puede ser útil activarla (por ejemplo, para usar Portainer desde otro host). Aquí se explica cómo hacerlo en el puerto 2375.


⚠️ Advertencia de seguridad

Exponer la API sin protección es peligroso. Solo debería hacerse en entornos controlados. Lo ideal es usar firewall, túneles SSH o TLS.


Habilitar la API en el puerto 2375

1. Editar daemon.json

sudo nano /etc/docker/daemon.json

Contenido:

{
  "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}

Esto permite conexiones tanto locales (socket) como externas (2375).


2. Override del servicio Docker

Crea el directorio si no existe:

sudo mkdir -p /etc/systemd/system/docker.service.d

Archivo de override:

sudo nano /etc/systemd/system/docker.service.d/override.conf

Contenido:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd

Esto borra cualquier ExecStart previo y lo reemplaza por uno limpio.


3. Recargar systemd y reiniciar Docker

sudo systemctl daemon-reload
sudo systemctl restart docker.service

Verificar si funciona

ss -lntp | grep dockerd

Debes ver algo parecido a:

LISTEN 0 128 0.0.0.0:2375  0.0.0.0:*  users:("dockerd")

Seguridad adicional

  • Limitar IPs con iptables o el firewall del sistema.
  • Usar TLS para conexiones seguras.
  • Opción mejor: en lugar de abrir el puerto, usar un túnel SSH.

Conclusión

Si realmente necesitas acceso remoto a Docker, esto lo habilita. Pero solo debería usarse con medidas adicionales. Nunca abras 2375 sin protección en producción.


Referencias