Was sind Docker-Adresspools?

Jedes Docker-Netzwerk erhält einen eigenen Bereich von IP-Adressen, der als Subnetz bezeichnet wird. Wenn Sie ein Netzwerk erstellen, ohne ein Subnetz auszuwählen, nimmt Docker eines aus einer integrierten Liste von Adresspools, die bei 172.17.0.0/16 beginnt und sich über 172.31.0.0/16 und 192.168.0.0/16 erstreckt. Das funktioniert so lange, bis sich der ausgewählte Bereich mit etwas anderem überschneidet, etwa einem VPN, einem Büronetzwerk oder einer Datenbank mit einer festen Adresse. Um dies für alle Netzwerke gleichzeitig zu beheben, ändern Sie die Adresspools in den Einstellungen des Docker-Daemons.

Toolbeschreibung

Dieses Tool generiert die daemon.json-Einstellungen, die festlegen, welche Subnetze Docker verwendet. Geben Sie einen oder mehrere Adresspoolbereiche sowie die Größe jedes Netzwerks ein, um die Einstellung default-address-pools zu erhalten. Sie können auch die Adresse der standardmäßigen docker0-Bridge mit bip festlegen. Das Tool zeigt, wie viele Netzwerke in Ihre Pools passen und wie viele Hosts jedes Netzwerk umfasst, prüft Ihre Eingaben während der Eingabe und kennzeichnet Bereiche, die wahrscheinlich Konflikte verursachen. Alles wird in Ihrem Browser berechnet.

Beispiele

Weisen Sie allen neuen Netzwerken ein /24 aus 10.10.0.0/16 zu. Dadurch entstehen 256 Netzwerke mit jeweils 254 nutzbaren Hosts:

{
  "default-address-pools": [
    {
      "base": "10.10.0.0/16",
      "size": 24
    }
  ]
}

Verschieben Sie die standardmäßige Bridge in einen anderen Bereich und verwenden Sie zwei Pools:

{
  "bip": "10.200.0.1/24",
  "default-address-pools": [
    {
      "base": "10.10.0.0/16",
      "size": 24
    },
    {
      "base": "10.20.0.0/20",
      "size": 24
    }
  ]
}

Funktionen

  • Mehrere Adresspoolbereiche gleichzeitig, jeweils einer pro Zeile
  • Die Größe der Netzwerke, die Docker aus jedem Pool ausschneidet
  • Optionale Adresse für die standardmäßige docker0-Bridge
  • Zeigt, wie viele Netzwerke in die Pools passen und wie viele nutzbare Hosts jedes Netzwerk umfasst
  • Warnt vor öffentlichen Bereichen, sich überschneidenden Pools und Adressen mit gesetzten Host-Bits
  • Lädt das Ergebnis als daemon.json herunter

Funktionsweise

Ein Bereich wird als Adresse und Präfixlänge angegeben, zum Beispiel 10.10.0.0/16. Das Präfix gibt an, wie viele der 32 Bits den Netzwerkteil bilden; die übrigen Bits dienen zur Zählung der Hosts. Jeder Pool verfügt über einen Basisbereich und eine Netzwerkgröße. Docker teilt den Basisbereich in Netzwerke dieser Größe auf und weist sie nacheinander zu. Ein Basisbereich von 10.10.0.0/16 mit der Größe 24 ergibt daher 2^(24 − 16) = 256 Netzwerke. Ein /24-Netzwerk verfügt über 256 Adressen, von denen 254 nutzbar sind, da die erste die Netzwerkadresse und die letzte die Broadcast-Adresse ist. Docker verwendet außerdem die erste nutzbare Adresse als Gateway eines Bridge-Netzwerks.

Die Größe darf nicht kleiner als das Präfix des Basisbereichs sein und ist auf /30 begrenzt, da ein Netzwerk Platz für ein Gateway und mindestens einen Container benötigt.

Tipps

  • Wählen Sie Bereiche aus 10.0.0.0/8 oder 172.16.0.0/12, die von Ihrem VPN und Ihrem Büronetzwerk nicht verwendet werden. Bereiche nahe 192.168.0.0/16 verursachen am wahrscheinlichsten Konflikte, da Heim- und Bürorouter diese verwenden
  • Die standardmäßige docker0-Bridge verwendet immer 172.17.0.0/16. Wenn sich dieser Bereich mit Ihrem Netzwerk überschneidet, setzen Sie bip auf eine andere Adresse, zum Beispiel 10.200.0.1/24
  • Speichern Sie das Ergebnis unter /etc/docker/daemon.json unter Linux oder unter Einstellungen → Docker Engine in Docker Desktop und starten Sie Docker neu. Führen Sie die Einstellungen mit den bereits in der Datei vorhandenen Einstellungen zusammen, anstatt sie zu ersetzen
  • Eine Änderung von default-address-pools wirkt sich nur auf Netzwerke aus, die anschließend erstellt werden. Entfernen und erstellen Sie vorhandene Netzwerke neu, um sie in den neuen Bereich zu verschieben
  • Pools, die sich überschneiden, sind schwer nachvollziehbar. Halten Sie sie daher getrennt
  • Wenn die Meldung „all predefined address pools have been fully subnetted“ angezeigt wird, sind Docker die Bereiche ausgegangen. Fügen Sie einen größeren Basisbereich oder eine kleinere Netzwerkgröße hinzu, um mehr Netzwerke zu erhalten