Vad är Docker-adresspooler?

Varje Docker-nätverk får sitt eget intervall med IP-adresser, kallat ett subnät. När du skapar ett nätverk utan att välja ett subnät hämtar Docker ett från en inbyggd lista med adresspooler som börjar med 172.17.0.0/16 och fortsätter genom 172.31.0.0/16 och 192.168.0.0/16. Detta fungerar tills det valda intervallet krockar med något annat, till exempel ett VPN, ett kontorsnätverk eller en databas som finns på en fast adress. För att åtgärda detta för alla nätverk samtidigt ändrar du adresspoolerna i Docker-daemonens inställningar.

Verktygsbeskrivning

Det här verktyget genererar inställningarna i daemon.json som styr vilka subnät Docker använder. Ange ett eller flera adresspoolintervall och storleken på varje nätverk för att få inställningen default-address-pools. Du kan även ange adressen för standardbryggan docker0 med bip. Verktyget visar hur många nätverk som ryms i dina pooler och hur många värdar varje nätverk har, kontrollerar dina indata medan du skriver och markerar intervall som sannolikt orsakar konflikter. Allt beräknas i din webbläsare.

Exempel

Ge alla nya nätverk ett /24-nätverk från 10.10.0.0/16, vilket ger plats för 256 nätverk med 254 användbara värdadresser vardera:

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

Flytta standardbryggan till ett annat intervall och använd två pooler:

{
  "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
    }
  ]
}

Funktioner

  • Flera adresspoolintervall samtidigt, ett per rad
  • Storleken på de nätverk som Docker delar upp från varje pool
  • Valfri adress för standardbryggan docker0
  • Visar hur många nätverk som ryms i poolerna och hur många användbara värdadresser varje nätverk har
  • Varna för publika intervall, överlappande pooler och adresser med angivna värdbitar
  • Ladda ner resultatet som daemon.json

Så fungerar det

Ett intervall skrivs som en adress och en prefixlängd, till exempel 10.10.0.0/16. Prefixet anger hur många av de 32 bitarna som utgör nätverksdelen, medan resten räknar värdarna. Varje pool har ett basintervall och en nätverksstorlek. Docker delar upp basintervallet i nätverk av den angivna storleken och tilldelar dem ett i taget, så ett basintervall på 10.10.0.0/16 med storleken 24 ger 2^(24 − 16) = 256 nätverk. Ett /24-nätverk har 256 adresser, varav 254 kan användas, eftersom den första är nätverksadressen och den sista är broadcastadressen. Docker använder även den första användbara adressen som gateway för ett bryggnätverk.

Storleken kan inte vara mindre än basintervallets prefix och är begränsad till /30, eftersom ett nätverk behöver plats för en gateway och minst en container.

Tips

  • Välj intervall från 10.0.0.0/8 eller 172.16.0.0/12 som inte används av ditt VPN eller ditt kontorsnätverk. Intervall nära 192.168.0.0/16 löper störst risk att krocka, eftersom hem- och kontorsroutrar använder dem
  • Standardbryggan docker0 använder alltid 172.17.0.0/16. Om det krockar med ditt nätverk anger du bip till en annan adress, till exempel 10.200.0.1/24
  • Spara resultatet som /etc/docker/daemon.json i Linux eller under Inställningar → Docker Engine i Docker Desktop och starta om Docker. Slå ihop det med inställningarna som redan finns i filen i stället för att ersätta dem
  • En ändring av default-address-pools påverkar endast nätverk som skapas därefter. Ta bort och skapa de befintliga nätverken igen för att flytta dem till det nya intervallet
  • Pooler som överlappar varandra är svåra att överblicka, så håll dem åtskilda
  • När du ser ”alla fördefinierade adresspooler har delats upp helt i subnät” har Docker slut på intervall. Lägg till ett större basintervall eller en mindre nätverksstorlek för att få fler nätverk