En ocasiones necesitamos conectarnos de manera remota a un servidor docker para gestionar los contenedores, por ejemplo, para que un pipeline haga algún cambio.
Nota importante. No usar este método para acceder a docker desde internet, ya que no tiene algún mecanismo de autenticación, este método es adecuado para servidores en la misma red o a través de una vpn.
Para esto podemos habilitar la conexión usando un puerto tcp, lo primero que habrá que hacer es editar el archivo /lib/systemd/system/docker.service y buscar la siguiente línea:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Agregamos al final -H tcp://0.0.0.0:4243
Quedando se la siguiente manera:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:4243
Dónde:
-
0.0.0.0 es la ip desde la que podremos conectarnos (si dejamos 0.0.0.0 permitirá conectar desde cualquier lado, lo cuál no es recomendado para producción).
-
4243 es el puerto a través del cual nos conectaremos.
Recargamos la configuración:
sudo systemctl daemon-reload
Reiniciamos el servicio:
sudo systemctl restart docker
Para probar la conexión vamos a nuestro cliente y definimos la variable de entorno DOCKER_HOST de la siguiente manera:
export DOCKER_HOST='tcp://miservidordocker:4243'
Y eso es todo, al ejecutar docker ps -a veremos los contenedores ejecutando en nuestro servidor remoto.