Statické IP adresy se nemění, když jsou kontejnery nebo služby zastaveny a spuštěny, takže jsou užitečné pro trvalé síťové propojení. Přiřazení statických IP adres kontejnerům Docker je snadný způsob, jak je zpřístupnit.
Proč používat statickou IP?
Existují dva druhy „statické IP“; privátní IP adresy používané pro vnitřní síť uvnitř serveru a veřejné IP adresy používané pro připojení mimo server, často přes internet.
Pokud potřebujete nastavit veřejnou IP adresu pro kontejner, budete chtít použít vazby portů. Porty můžete „publikovat“ v kontejneru Docker, aby byly přístupné z hostitele. I když existují pokročilejší nastavení sítě, toto je zdaleka nejjednodušší a nejběžnější. Například vazba portu 80 (HTTP) na hostiteli, aby ukazoval na kontejner NGINX:
docker run --publish=80:8080 nginx
Pokud chcete vytvořit statickou soukromou IP adresu, měli byste zvážit, zda ji vůbec potřebujete použít. Většinu času budete chtít statickou IP pro komunikaci s jedním kontejnerem z jiného nebo z hostitele. Ve většině případů to zvládne integrovaná síť Dockeru.
Docker je dodáván s výchozí sítí, ale pokud si vytvoříte vlastní, můžete kontejnerům při spuštění v této síti přidělit aliasy. Tento alias se automaticky převede na soukromou IP adresu kontejneru. Například kontejner NGINX zde může přistupovat k instanci MongoDB pomocí připojovacího řetězce mongodb://mongohost:27017
.
docker network create example docker run --net example --name nginx -d nginx docker network connect example --alias mongohost mongodb
Chcete-li se dozvědět více, můžete si přečíst dokumentaci Dockeru o uživatelsky definovaných mostních sítích.
Stále však existuje mnoho případů, kdy budete chtít ručně zadat soukromou IP adresu, jako je například přístup ke kontejnerům přímo z hostitele. Stále k tomu budete muset použít vlastní síť Docker, ale její nastavení je snadné.
Nastavení statických IP adres
Nejprve budete muset nastavit síť Docker, a protože nám záleží na IP adrese, budete muset zadat pevnou podsíť:
docker network create --subnet=172.20.0.0/16 customnetwork
SOUVISEJÍCÍ: Co jsou podsítě a jak ovlivňují moji síť?
Poté můžete spustit kontejner a specifikovat síť pomocí --net
příznak a specifikaci IP pomocí -ip
příznak:
docker run --net customnetwork --ip 172.20.0.10 -d container
Správnost adresy můžete ověřit kontrolou v kontejneru pomocí exec -t bin/bash
nebo kontrolou seznamu kontejnerů Docker:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' name_or_id
Použití Docker Compose
Docker Compose je nástroj používaný ke spouštění více kontejnerů s předdefinovaným nastavením. To zahrnuje nastavení sítí se specifickými podsítěmi a kontejnery můžete připojit k sítím s pevnými IP pomocí ipv4_address
konfigurační blok zobrazený zde:
version: '2' services: webserver: image: nginx container_name: web-server networks: customnetwork: ipv4_address: 172.20.0.10 networks: customnetwork: ipam: config: - subnet: 172.20.0.0/16