Compartir comentarios
Las respuestas se generan en base a la documentación.

Configurar el acceso remoto para el demonio de Docker

Por defecto, el demonio de Docker escucha las conexiones en un socket Unix para aceptar solicitudes de clientes locales. Puedes configurar Docker para aceptar solicitudes de clientes remotos configurándolo para que escuche en una dirección IP y un puerto, además de en el socket Unix.

Warning

Configurar Docker para aceptar conexiones de clientes remotos puede dejarte vulnerable al acceso no autorizado al host y a otros ataques.

Es de vital importancia que comprendas las implicaciones de seguridad que conlleva abrir Docker a la red. Si no se toman medidas para proteger la conexión, es posible que usuarios remotos sin privilegios de root obtengan acceso de root en el host.

El acceso remoto sin TLS no se recomienda y requerirá una aceptación explícita en una versión futura. Para obtener más información sobre cómo utilizar certificados TLS para proteger esta conexión, consulta Proteger el socket del demonio de Docker.

Habilitar el acceso remoto

Puedes habilitar el acceso remoto al demonio utilizando un archivo de unidad de systemd docker.service para las distribuciones de Linux que usan systemd, o puedes utilizar el archivo daemon.json si tu distribución no utiliza systemd.

Configurar Docker para escuchar conexiones utilizando tanto el archivo de unidad de systemd como el archivo daemon.json provoca un conflicto que impide que Docker se inicie.

Configurar el acceso remoto con el archivo de unidad de systemd

  1. Utiliza el comando sudo systemctl edit docker.service para abrir un archivo de personalización (override) para docker.service en un editor de texto.

  2. Añade o modifica las siguientes líneas, sustituyendo tus propios valores:

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
  3. Guarda el archivo.

  4. Recarga la configuración de systemctl:

    $ sudo systemctl daemon-reload
    
  5. Reinicia Docker:

    $ sudo systemctl restart docker.service
    
  6. Verifica que el cambio se haya aplicado correctamente:

    $ sudo netstat -lntp | grep dockerd
    tcp        0      0 127.0.0.1:2375          0.0.0.0:*               LISTEN      3758/dockerd
    

Configurar el acceso remoto con daemon.json

  1. Configura la matriz hosts en el archivo /etc/docker/daemon.json para conectarte al socket Unix y a una dirección IP de la siguiente manera:

    {
      "hosts": ["unix:///var/run/docker.sock", "tcp://127.0.0.1:2375"]
    }
  2. Reinicia Docker.

  3. Verifica que el cambio se haya aplicado correctamente:

    $ sudo netstat -lntp | grep dockerd
    tcp        0      0 127.0.0.1:2375          0.0.0.0:*               LISTEN      3758/dockerd
    

Permitir el acceso a la API remota a través de un cortafuegos (firewall)

Si ejecutas un cortafuegos en el mismo host en el que ejecutas Docker y deseas acceder a la API remota de Docker desde otro host remoto, debes configurar tu cortafuegos para permitir conexiones entrantes en el puerto de Docker. El puerto predeterminado es 2376 si utilizas transporte cifrado con TLS, o 2375 en caso contrario.

Dos demonios de cortafuegos comunes son:

Consulta la documentación de tu sistema operativo y de tu cortafuegos. La siguiente información puede ayudarte a comenzar. La configuración utilizada en estas instrucciones es permisiva y es posible que prefieras utilizar una configuración diferente que restrinja más tu sistema.

  • Para ufw, establece DEFAULT_FORWARD_POLICY="ACCEPT" en tu configuración.

  • Para firewalld, añade reglas similares a las siguientes a tu política: una para solicitudes entrantes y otra para solicitudes salientes.

    <direct>
      [ <rule ipv="ipv6" table="filter" chain="FORWARD_direct" priority="0"> -i zt0 -j ACCEPT </rule> ]
      [ <rule ipv="ipv6" table="filter" chain="FORWARD_direct" priority="0"> -o zt0 -j ACCEPT </rule> ]
    </direct>

    Asegúrate de que los nombres de las interfaces y de las cadenas sean correctos.

Información adicional

Para obtener información más detallada sobre las opciones de configuración para el acceso remoto al demonio, consulta la referencia de la CLI de dockerd.