Tag Archives: docker dns firewalld

Nuestro docker no resuelve DNS

hoy mientras instalaba un nuevo docker en CentOS-8 me topé por segunda ocasión que el contenedor no resolvía nombres de domino.

Cuando intentaba realizar alguna operación dentro del contenedor que requería resolver un nombre me devolvía error de que no podía resolver.

Por ejemplo, el contenedor era de CentOS, y cuando intentaba instalar un paquete (yum install….) me devolvía:

Cannot find a valid baseurl for repo: base/7/x86_64

Pero, puede ocurrir con cualquier otro comando (apt, dnf, ping, wget, curl, etc).

Para validar que efectivamente era un problema de mi servidor y no del contenedor en específico probé un docker muy sencillo “busybox” que tiene el conocido comando ping:

docker run --rm busybox ping -c 1 8.8.8.8
...
64 bytes from 8.8.8.8: seq=0 ttl=116 time=18.972 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss

Como se puede ver, hace perfectamente ping desde un contenedor hacia 8.8.8.8

Ahora probaré lo mismo pero con un nombre, para que se vea obligado a resolver

docker run --rm busybox ping -c 1 www.google.com
ping: bad address 'www.google.com'

¡Efectivamente falla! no puede resolver una dirección.

Esto se debe a que en el firewall de nuestro CentOS-8 no se están permitiendo la resolución de nombres. Agrego la interfaz docker0 a la lista de interfaces confiables:

sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
sudo firewall-cmd --reload

Y ahora pruebo:

docker run --rm busybox ping -c 1 www.google.com
PING www.google.com (172.217.170.4): 56 data bytes
64 bytes from 172.217.170.4: seq=0 ttl=116 time=18.897 ms
--- www.google.com ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 18.897/18.897/18.897 ms

Trabajó al 100% luego de esto!