Así que aquí está tu problema:
Docker ha asignado el rango 172.17.0.1/16
a tu docker0
interfaz. Esto incluye todas las direcciones desde 172.17.0.1
hasta 172.17.255.255
. Notará que este rango incluye sus servidores DNS (172.17.100.3
y 172.17.100.70
). Lo que tienes es un problema de enrutamiento:
Cada vez que su host necesita llegar a sus servidores DNS, ve que ya tiene una interfaz en la misma red (docker0
), por lo que intenta enrutar paquetes usando esa interfaz... que por supuesto no van a ninguna parte, razón por la cual su DNS deja de funcionar.
Docker no tiene un mecanismo simple para excluir un rango de direcciones de su proceso de selección automática, por lo que probablemente deba hacer dos cosas para resolver el problema:
Primero, establezca explícitamente la dirección de docker0
en tu /etc/docker/daemon.json
. Utilice cualquier red que no entre en conflicto con sus redes internas. Por ejemplo:
{
"bip": "172.31.0.1/16"
}
Deberá reiniciar Docker.
A continuación, para evitar que Docker seleccione el mismo rango de red para una red definida por el usuario (una que crea explícitamente usando docker network create
o usando implícitamente, por ejemplo, docker-compose
o docker stack ...
), cree una nueva red y nunca la use:
docker network create --subnet 172.17.0.0/16 --config-only do_not_use
Esto debería resolver su problema y evitar que vuelva a aparecer en el futuro.
Actualizar
Docker en realidad documenta una forma posiblemente mejor de lograr esto en ¿Cómo influyo en qué rangos de direcciones de red elige Docker durante una 'creación de red de Docker'?.
Esto requiere configurar rutas estáticas persistentes en su sistema, que varía entre las distribuciones de Linux.