
Ist es möglich, Docker daran zu hindern, die Standardroute zu definieren, wenn eine Docker-Compose-YAML-Datei verwendet wird?
Wenn meine Datei „docker-compose.yaml“ das Netzwerk „ipam“ mit dem Standardtreiber und einem beliebigen Subnetz definiert, sieht es so aus, als ob Docker (oder Docker Compose) automatisch die Standardroute der Routing-Tabelle des Dockers zuweist, der an dieses Netzwerk angeschlossen ist. Gibt es eine Möglichkeit, dies zu deaktivieren?
Antwort1
Unglücklicherweise nicht.
Eine ähnliche Funktionsanforderung (#20179) ist seit fast 6 Jahren im GitHub-Repository verfügbar, daher bin ich der festen Überzeugung, dass diese Funktion in naher Zukunft nicht implementiert wird.
Mein aktueller Workaround besteht, ähnlich wie @Zoredache erwähnt hat, darin, Ihren Containern ein Bash-Skript hinzuzufügen und die gewünschte Gateway-IP-Adresse über Umgebungsvariablen festzulegen. Das Skript löscht die Standardroute und fügt sie mit der benutzerdefinierten IP als Gateway wieder hinzu.
Bearbeiten:die Essenz meines Skripts:
if [ -n "$GW" ]; then
ip route delete default ;
ip route add default via $GW ;
fi
Wenn Sie das Standard-Gateway Ihres Containers ändern möchten, führen Sie den Container mit der entsprechenden Umgebungsvariable aus GW=192.168.0.1
und das Skript kümmert sich um den Rest. Stellen Sie außerdem sicher, dass Sie das Skript entweder in das CMD
oder ENTRYPOINT
in Ihrer Docker-Datei aufnehmen.
NOTIZ:Erfordert das iproute2
Paket.
Ist vielleicht nicht die schönste Lösung, aber sie erfüllt ihren Zweck.