Hur man tilldelar en statisk IP till en Docker Container

0
169

Statiska IP-adresser ändras inte när containrar eller tjänster stoppas och började, vilket gjorde dem användbara för permanent nätverkande. Att tilldela Docker-behållare statiska IP-adresser är ett enkelt sätt att göra dem mer tillgängliga.

Varför använda en statisk IP-adress?

Det finns två typer av “statisk IP”; privata IP-adresser som används för internt nätverk inuti en server och offentliga IP-adresser som används för att ansluta utanför servern, ofta över internet.

Om du behöver ställa in en offentlig IP-adress för en behållare, vill du använda portbindningar. Du kan “publicera” portar på Docker-behållaren för att vara åtkomliga från värden. Även om det finns mer avancerade nätverksinställningar, är detta det i särklass enklaste och vanligaste. Till exempel binda port 80 (HTTP) på värden för att peka på en NGINX-behållare:

docker run –publish=80:8080 nginx

Om du vill skapa en statisk privat IP-adress bör du överväga om du behöver använda en överhuvudtaget. För det mesta vill du att en statisk IP ska prata med en behållare från en annan eller från värden. I de flesta fall kan Dockers inbyggda nätverk hantera detta.

Docker kommer med ett standardnätverk, men om du gör ditt eget kan du ge behållare alias när de startas i det nätverket. Detta alias kommer automatiskt att lösas till behållarens privata IP. Till exempel kan NGINX-behållaren här komma åt MongoDB-instansen med anslutningssträngen mongodb://mongohost:27017.

docker network create example docker run –net example –name nginx -d nginx docker network connect example – -alias mongohost mongodb Annons

Om du vill veta mer kan du läsa Dockers dokumentation om användardefinierade bryggnätverk.

Men det finns fortfarande många tillfällen då du vill ange en privat IP-adress manuellt, som att komma åt behållare direkt från värden. Du behöver fortfarande använda ett anpassat Docker-nätverk för att göra det, men det är enkelt att konfigurera.

Konfigurera statisk IP -adresser

Först måste du konfigurera ett Docker -nätverk, och eftersom vi bryr oss om IP -adressen måste du ange ett fast undernät:

dockernätverk skapa –subnet=172.20.0.0/16 anpassat nätverk

RELATED: Vad är undernät och hur påverkar de mitt nätverk?

Då kan du köra en behållare och ange nätverket med flaggan –net, och ange IP-adressen med -ip-flaggan:

docker run –net customnetwork –ip 172.20.0.10 -d container

Du kan verifiera att adressen är korrekt genom att kontrollera den i container med exec -t bin/bash, eller genom att inspektera Docker-behållarelistan:

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' name_or_id

Använda Docker Compose

Docker Compose är ett verktyg som används för att starta flera behållare med fördefinierade inställningar. Detta inkluderar att konfigurera nätverk med specifika undernät, och du kan koppla behållare till nätverk med fasta IP-adresser med hjälp av ipv4_address-konfigurationsblocket som visas här:

version: '2' tjänster: webbserver: bild: nginx containernamn: webbservernätverk: anpassat nätverk: ipv4_adress: 172.20.0.10 nätverk: anpassat nätverk: ipam: config: – subnät: 172.20.0.0/16