Statische IP-Adressen ändern sich nicht, wenn Container oder Dienste gestoppt und gestartet werden, was sie für eine dauerhafte Vernetzung nützlich macht. Das Zuweisen statischer IP-Adressen für Docker-Container ist eine einfache Möglichkeit, sie leichter zugänglich zu machen.
Warum eine statische IP verwenden?
Es gibt zwei Arten von „statischen IPs“; private IP-Adressen, die für interne Netzwerke innerhalb eines Servers verwendet werden, und öffentliche IP-Adressen, die für Verbindungen außerhalb des Servers verwendet werden, oft über das Internet.
Wenn Sie eine öffentliche IP-Adresse für einen Container einrichten müssen, sollten Sie Portbindungen verwenden. Sie können Ports im Docker-Container „veröffentlichen“, damit sie vom Host aus zugänglich sind. Obwohl es fortgeschrittenere Netzwerk-Setups gibt, ist dies bei weitem das einfachste und gebräuchlichste. Binden Sie beispielsweise Port 80 (HTTP) auf dem Host so, dass er auf einen NGINX-Container verweist:
docker run --publish=80:8080 nginx
Wenn Sie eine statische private IP-Adresse erstellen möchten, sollten Sie überlegen, ob Sie überhaupt eine verwenden müssen. Meistens möchten Sie, dass eine statische IP mit einem Container von einem anderen oder vom Host kommuniziert. In den meisten Fällen kann das integrierte Netzwerk von Docker damit umgehen.
Docker wird mit einem Standardnetzwerk geliefert, aber wenn Sie Ihr eigenes erstellen, können Sie Containern Aliase geben, wenn sie in diesem Netzwerk gestartet werden. Dieser Alias wird automatisch in die private IP des Containers aufgelöst. Beispielsweise kann der NGINX-Container hier mit der Verbindungszeichenfolge mongodb://mongohost:27017
auf die MongoDB-Instanz zugreifen .
docker network create example docker run --net example --name nginx -d nginx docker network connect example --alias mongohost mongodb
Um mehr zu erfahren, können Sie die Docker-Dokumentation zu benutzerdefinierten Bridge-Netzwerken lesen.
Es gibt jedoch immer noch viele Fälle, in denen Sie eine private IP-Adresse manuell angeben möchten, z. B. wenn Sie direkt vom Host auf Container zugreifen. Sie müssen dazu immer noch ein benutzerdefiniertes Docker-Netzwerk verwenden, aber es ist einfach einzurichten.
Statische IPs einrichten
Zuerst müssen Sie ein Docker-Netzwerk einrichten, und da uns die IP-Adresse wichtig ist, müssen Sie ein festes Subnetz angeben:
docker network create --subnet=172.20.0.0/16 customnetwork
VERBINDUNG: Was sind Subnetze und wie wirken sie sich auf mein Netzwerk aus?
Dann können Sie einen Container ausführen, indem Sie das Netzwerk mit --net
angeben -Flag und Angabe der IP mit -ip
Flagge:
docker run --net customnetwork --ip 172.20.0.10 -d container
Sie können überprüfen, ob die Adresse korrekt ist, indem Sie sie im Container mit exec -t bin/bash
überprüfen , oder durch Überprüfen der Docker-Containerliste:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' name_or_id
Verwendung von Docker Compose
Docker Compose ist ein Tool zum Starten mehrerer Container mit vordefinierten Einstellungen. Dazu gehört das Einrichten von Netzwerken mit bestimmten Subnetzen, und Sie können Container mit der ipv4_address
an Netzwerke mit festen IPs anhängen Konfigurationsblock, der hier gezeigt wird:
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