Docker Compose – Standard-Gateway-Route deaktivieren

Docker Compose – Standard-Gateway-Route deaktivieren

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.1und das Skript kümmert sich um den Rest. Stellen Sie außerdem sicher, dass Sie das Skript entweder in das CMDoder ENTRYPOINTin Ihrer Docker-Datei aufnehmen.
NOTIZ:Erfordert das iproute2Paket.

Ist vielleicht nicht die schönste Lösung, aber sie erfüllt ihren Zweck.

verwandte Informationen