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
iptableso 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.