Generator voor Docker-daemon-subnetten
Genereer de instellingen in daemon.json die bepalen welke subnetten Docker gebruikt: default-address-pools en het bridge-adres van docker0 (bip). Bekijk hoeveel netwerken binnen je bereiken passen en controleer op overlappingen.
Invoer
Uitvoer
Readme
Wat zijn Docker-adrespools?
Elk Docker-netwerk krijgt een eigen bereik van IP-adressen, een subnet genoemd. Wanneer je een netwerk maakt zonder een subnet te kiezen, neemt Docker er een uit een ingebouwde lijst met adrespools, die begint bij 172.17.0.0/16 en doorloopt tot en met 172.31.0.0/16 en 192.168.0.0/16. Dit werkt totdat het gekozen bereik conflicteert met iets anders, zoals een VPN, een kantoornetwerk of een database die op een vast adres staat. Om dit in één keer voor elk netwerk op te lossen, wijzig je de adrespools in de instellingen van de Docker-daemon.
Beschrijving van de tool
Deze tool genereert de instellingen voor daemon.json die bepalen welke subnetten Docker gebruikt. Voer een of meer bereiken van adrespools en de grootte van elk netwerk in om de instelling default-address-pools te verkrijgen. Je kunt ook het adres van de standaardbridge docker0 instellen met bip. De tool toont hoeveel netwerken in je pools passen en hoeveel hosts elk netwerk heeft, controleert je invoer terwijl je typt en markeert bereiken die waarschijnlijk conflicten veroorzaken. Alles wordt in je browser berekend.
Voorbeelden
Geef alle nieuwe netwerken een /24 uit 10.10.0.0/16. Daarmee ontstaat ruimte voor 256 netwerken met elk 254 bruikbare hosts:
{
"default-address-pools": [
{
"base": "10.10.0.0/16",
"size": 24
}
]
}Verplaats de standaardbridge naar een ander bereik en gebruik twee 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
}
]
}Functies
- Meerdere bereiken van adrespools tegelijk, één per regel
- De grootte van de netwerken die Docker uit elke pool uitsnijdt
- Optioneel adres voor de standaardbridge
docker0 - Toont hoeveel netwerken in de pools passen en hoeveel bruikbare hosts elk netwerk heeft
- Waarschuwt voor openbare bereiken, overlappende pools en adressen met ingestelde hostbits
- Download het resultaat als
daemon.json
Hoe het werkt
Een bereik wordt geschreven als een adres en een prefixlengte, bijvoorbeeld 10.10.0.0/16. De prefix geeft aan hoeveel van de 32 bits het netwerkdeel vormen; de overige bits tellen de hosts. Elke pool heeft een basisbereik en een netwerkgrootte. Docker splitst de basis op in netwerken van die grootte en deelt ze één voor één uit. Een basis van 10.10.0.0/16 met grootte 24 levert dus 2^(24 − 16) = 256 netwerken op. Een /24-netwerk heeft 256 adressen, waarvan er 254 bruikbaar zijn, omdat het eerste het netwerkadres is en het laatste het broadcastadres. Docker gebruikt ook het eerste bruikbare adres als gateway van een bridgenetwerk.
De grootte mag niet kleiner zijn dan de prefix van de basis en is beperkt tot /30, omdat een netwerk ruimte nodig heeft voor een gateway en minimaal één container.
Tips
- Kies bereiken uit 10.0.0.0/8 of 172.16.0.0/12 die niet door je VPN en je kantoornetwerk worden gebruikt. Bereiken rond 192.168.0.0/16 veroorzaken het vaakst conflicten, omdat thuis- en kantoorrouters deze gebruiken
- De standaardbridge
docker0gebruikt altijd 172.17.0.0/16. Als dit conflicteert met je netwerk, stel jebipin op een ander adres, bijvoorbeeld 10.200.0.1/24 - Sla het resultaat op als
/etc/docker/daemon.jsonop Linux, of in Instellingen → Docker Engine in Docker Desktop, en start Docker opnieuw. Voeg het samen met de instellingen die al in het bestand staan in plaats van ze te vervangen - Een wijziging van
default-address-poolsheeft alleen gevolgen voor netwerken die daarna worden gemaakt. Verwijder de bestaande netwerken en maak ze opnieuw aan om ze naar het nieuwe bereik te verplaatsen - Pools die elkaar overlappen zijn moeilijk te overzien, dus houd ze gescheiden
- Wanneer je het bericht "all predefined address pools have been fully subnetted" ziet, heeft Docker geen bereiken meer. Voeg een grotere basis of een kleinere netwerkgrootte toe om meer netwerken te krijgen