Hva er Docker-adressepooler?

Hvert Docker-nettverk får sitt eget område med IP-adresser, kalt et subnett. Når du oppretter et nettverk uten å velge et subnett, henter Docker et fra en innebygd liste over adressepooler som starter med 172.17.0.0/16 og fortsetter gjennom 172.31.0.0/16 og 192.168.0.0/16. Dette fungerer helt til det valgte området kolliderer med noe annet, for eksempel en VPN, et kontornettverk eller en database som ligger på en fast adresse. For å rette dette for alle nettverk samtidig endrer du adressepoolene i innstillingene for Docker-daemonen.

Beskrivelse av verktøyet

Dette verktøyet genererer daemon.json-innstillingene som styrer hvilke subnett Docker bruker. Angi ett eller flere adressepoolområder og størrelsen på hvert nettverk for å få innstillingen default-address-pools. Du kan også angi adressen til standardbroen docker0 med bip. Verktøyet viser hvor mange nettverk som får plass i poolene, og hvor mange verter hvert nettverk har, validerer inndataene mens du skriver og markerer områder som sannsynligvis vil føre til konflikter. Alt beregnes i nettleseren din.

Eksempler

Gi alle nye nettverk et /24-nettverk fra 10.10.0.0/16, noe som gir plass til 256 nettverk med 254 brukbare verter hver:

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

Flytt standardbroen til et annet område og bruk to 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
    }
  ]
}

Funksjoner

  • Flere adressepoolområder samtidig, ett per linje
  • Størrelsen på nettverkene Docker deler ut fra hver pool
  • Valgfri adresse for standardbroen docker0
  • Viser hvor mange nettverk som får plass i poolene, og hvor mange brukbare verter hvert nettverk har
  • Advarer om offentlige områder, overlappende pooler og adresser med vertsbitene satt
  • Last ned resultatet som daemon.json

Slik fungerer det

Et område skrives som en adresse og en prefikslengde, for eksempel 10.10.0.0/16. Prefikset angir hvor mange av de 32 bitene som utgjør nettverksdelen, mens resten teller vertene. Hver pool har et basisområde og en nettverksstørrelse. Docker deler basisområdet opp i nettverk med denne størrelsen og deler dem ut ett etter ett. Et basisområde på 10.10.0.0/16 med størrelse 24 gir derfor 2^(24 − 16) = 256 nettverk. Et /24-nettverk har 256 adresser, hvorav 254 kan brukes, fordi den første er nettverksadressen og den siste er kringkastingsadressen. Docker bruker også den første brukbare adressen som gateway for et brokoblet nettverk.

Størrelsen kan ikke være mindre enn prefikset til basisområdet, og den er begrenset til /30, fordi et nettverk må ha plass til en gateway og minst én container.

Tips

  • Velg områder fra 10.0.0.0/8 eller 172.16.0.0/12 som VPN-en og kontornettverket ditt ikke bruker. Områder nær 192.168.0.0/16 vil sannsynligvis føre til flest konflikter, fordi hjemme- og kontorrutere bruker dem
  • Standardbroen docker0 bruker alltid 172.17.0.0/16. Hvis dette kolliderer med nettverket ditt, angir du bip til en annen adresse, for eksempel 10.200.0.1/24
  • Lagre resultatet som /etc/docker/daemon.json på Linux, eller under Innstillinger → Docker Engine i Docker Desktop, og start Docker på nytt. Slå det sammen med innstillingene som allerede finnes i filen, i stedet for å erstatte dem
  • En endring av default-address-pools påvirker bare nettverk som opprettes senere. Fjern og opprett de eksisterende nettverkene på nytt for å flytte dem til det nye området
  • Pooler som overlapper hverandre, er vanskelige å holde oversikt over, så hold dem adskilt
  • Når du ser «alle forhåndsdefinerte adressepooler er fullstendig subnettinndelt», har Docker gått tom for områder. Legg til et større basisområde eller en mindre nettverksstørrelse for å få flere nettverk