lunes, 11 de mayo de 2020

Contenedores Docker Sin Conectividad a Internet Después de Actualizar a Fedora 32

      En la ultima actualización de Fedora, en su versión 32 muchos usuarios se encontraron con la sorpresa de que sus contenedores docker perdieron la capacidad de conectarse a internet internamente utilizando la red bridge que Docker crea por defecto para nosotros.

       Muchos usuarios ya han reportado el issue al proyecto Docker, reclamando además de esto la creación del repositorio correspondiente para esta versión de Fedora. A continuación se detallaran 2 workarounds que pueden salvar nuestro flujo de trabajo y que pueden ocurrirnos probablemente si actualizamos Fedora a su ultima versión.


Problema Reportado
 
         El problema reportado corresponde al issue #955 (docker for-linux), en el cual se puede apreciar como los usuarios estan reportando este inconveniente de conectividad dentro de los contenedores docker y la creación del repositorio.
 

 
Solventar Conectividad
 
        Para solventar el problema de conectividad podemos ayudarnos de algunas pruebas basicas, las mismas constan de probar y ver si los contenedores resuelven o no los DNS (es decir, si pueden resolver nombres de dominio como google.com por ejemplo). Entonces haremos 2 pruebas, una intentando conectividad hacia una IP (sin usar DNS) y luego intentando usar alguna web para resolver el DNS.
 
        Desde una terminal o linea de comandos ejecutar los siguientes comandos:

# Conectividad utilizando la IP publica de NASA Ames Research Center
$ docker run busybox ping -c 1 192.203.230.10
PING 192.203.230.10 (192.203.230.10): 56 data bytes
64 bytes from 192.203.230.10: seq=0 ttl=55 time=29.695 ms

--- 192.203.230.10 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
 
# Conectividad utilizando google.com
$ docker run busybox nslookup google.com
* Failed to connect to 200.49.130.40 port 6379: No route to host
* Closing connection 0
 
 
 
         Entonces, para solventar este incoveniente basta con agregar la interfaz de red de Docker (docker0) a la zona confiable del firewall. Esto se logra ejecutando el siguiente comando:
 
$ sudo firewall-cmd --zone=trusted --change-interface=docker0
 
 
         Y ya con esto podemos comprobar que al intentar nuevamente consultar con un ping una pagina web que resuelva por DNS ira bien:
 
 
 
 
 
Problema en cgroups

       En algunos casos ademas del inconveniente de conectividad anterior, también algunos usuarios han experimentado un problema con cgroups. Con una leyenda en pantalla como la siguiente:
 
cgroups: cgroup mountpoint does not exist: unknown
 
 
         Esto se debe a que Fedora 32 actualiza la versión de cgroups y hace que docker no encuentre el nuevo punto de montaje, esto se soluciona con 2 simples comandos:
 
$ sudo mkdir /sys/fs/cgroup/systemd
$ sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
 
 
Con esto ya tenemos solucionado nuestro flujo de trabajo y podemos continuar con nuestras tareas.
 
Cualquier aclaración o duda puede discutirse libremente y con respeto en la caja de comentarios de este articulo.

No hay comentarios:

Publicar un comentario