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!