¿Es posible evitar que Docker defina la ruta predeterminada cuando se utiliza el archivo yaml de Docker-Compose?
Si mi docker-compose.yaml define el ipam de red con el controlador predeterminado y cualquier subred, costuras como Docker (o Docker Compose) asignan automáticamente la ruta predeterminada a la tabla de enrutamiento de la ventana acoplable que está conectada a esta red). Hay alguna manera de desactivarlo?
Respuesta1
Lamentablemente no.
Una solicitud de función similar (#20179) ha estado abierto en el repositorio de GitHub durante casi 6 años, por lo que realmente creo que esta característica no se implementará pronto.
Mi solución actual es, similar a la que mencionó @Zoredache, agregar un script bash a sus contenedores y configurar la dirección IP de la puerta de enlace deseada a través de variables de entorno. El script elimina la ruta predeterminada y la vuelve a agregar con la IP personalizada como puerta de enlace.
Editar:la esencia de mi guión:
if [ -n "$GW" ]; then
ip route delete default ;
ip route add default via $GW ;
fi
Si desea cambiar la puerta de enlace predeterminada de su contenedor, ejecute el contenedor con la variable de entorno adecuada GW=192.168.0.1
y el script se encarga del resto. Además, asegúrese de incluir el script en el CMD
o ENTRYPOINT
en su Dockerfile.
NOTA:Requiere el iproute2
paquete.
Puede que no sea la solución más bonita, pero hace el trabajo.