So weisen Sie einem Docker-Container eine statische IP zu

0
92

Statische IP-Adressen ändern sich nicht, wenn Container oder Dienste angehalten werden und gestartet, was sie für die permanente Vernetzung nützlich macht. Die Zuweisung 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 “statischer IP”; private IP-Adressen, die für interne Netzwerke innerhalb eines Servers verwendet werden, und öffentliche IP-Adressen, die verwendet werden, um eine Verbindung außerhalb des Servers herzustellen, oft über das Internet.

Wenn Sie eine öffentliche IP-Adresse für einen Container einrichten müssen, sollten Sie Portbindungen verwenden. Sie können “veröffentlichen” Ports auf dem Docker-Container, damit vom Host aus zugegriffen werden kann. Obwohl es fortgeschrittenere Netzwerkkonfigurationen gibt, ist dies bei weitem die 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 Folgendes in Betracht ziehen wenn Sie überhaupt einen brauchen. In den meisten Fällen möchten Sie, dass eine statische IP von einem anderen Container oder vom Host aus mit einem Container kommuniziert. In den meisten Fällen kann das integrierte Netzwerk von Docker damit umgehen.

Docker wird mit einem Standardnetzwerk geliefert, aber wenn Sie ein eigenes erstellen, können Sie Container-Aliasnamen vergeben, wenn sie in diesem Netzwerk gestartet werden. Dieser Alias ​​wird automatisch in die private IP des Containers aufgelöst. Der NGINX-Container hier kann beispielsweise 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 Advertisement

Weitere Informationen finden Sie in der Docker-Dokumentation zu benutzerdefinierten Bridge-Netzwerken.

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 aus auf Container zugreifen. Sie müssen dazu weiterhin ein benutzerdefiniertes Docker-Netzwerk verwenden, das jedoch einfach einzurichten ist.

Static einrichten IPs

Zuerst müssen Sie ein Docker-Netzwerk einrichten, und da uns die IP-Adresse wichtig ist, müssen Sie ein festes Subnetz angeben:

Docker-Netzwerk create –subnet=172.20.0.0/16 benutzerdefiniertes Netzwerk

VERWANDT: Was sind Subnetze und wie wirken sie sich auf mein Netzwerk aus?

Dann können Sie einen Container ausführen und das Netzwerk mit dem Flag –net angeben. und geben Sie die IP mit dem -ip Flag an:

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/überprüfen. bash, oder indem Sie die Docker-Containerliste überprüfen:

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

Verwenden 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 mithilfe des hier gezeigten Konfigurationsblocks ipv4_address Config Container an Netzwerke mit festen IPs anhängen:

version: '2' services: webserver: image: nginx container_name: web-server networks: benutzerdefiniertes Netzwerk: ipv4_address: 172.20.0.10 Netzwerke: benutzerdefiniertes Netzwerk: ipam: config: – Subnetz: 172.20.0.0/16