Comment attribuer une adresse IP statique à un conteneur Docker

0
1955

Les adresses IP statiques ne changent pas lorsque les conteneurs ou les services sont arrêtés et démarrés, ce qui les rend utiles pour mise en réseau permanente. L'attribution d'adresses IP statiques aux conteneurs Docker est un moyen simple de les rendre plus accessibles.

Pourquoi utiliser une IP statique ?

Il existe deux types d'”IP statiques” ; adresses IP privées utilisées pour la mise en réseau interne à l'intérieur d'un serveur et adresses IP publiques utilisées pour se connecter à l'extérieur du serveur, souvent via Internet.

Si vous devez configurer une adresse IP publique pour un conteneur, vous souhaiterez utiliser des liaisons de port. Vous pouvez “publier” ports sur le conteneur Docker pour qu'ils soient accessibles depuis l'hôte. Bien qu'il existe des configurations réseau plus avancées, celle-ci est de loin la plus simple et la plus courante. Par exemple, lier le port 80 (HTTP) sur l'hôte pour pointer vers un conteneur NGINX :

docker run –publish=80:8080 nginx

Si vous souhaitez créer une adresse IP privée statique, vous devriez envisager si vous avez besoin d'en utiliser un. La plupart du temps, vous souhaiterez qu'une adresse IP statique communique avec un conteneur depuis un autre ou depuis l'hôte. Dans la plupart des cas, la mise en réseau intégrée de Docker peut gérer cela.

Docker est livré avec un réseau par défaut, mais si vous créez le vôtre, vous pouvez donner des alias aux conteneurs lorsqu'ils sont lancés sur ce réseau. Cet alias se résoudra automatiquement en IP privée du conteneur. Par exemple, le conteneur NGINX ici peut accéder à l'instance MongoDB avec la chaîne de connexion mongodb://mongohost:27017.

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

Pour en savoir plus, vous pouvez lire la documentation de Docker sur les réseaux de pont définis par l'utilisateur.

Cependant, il y a encore beaucoup de fois où vous voudrez spécifier manuellement une adresse IP privée, comme accéder aux conteneurs directement à partir de l'hôte. Vous aurez toujours besoin d'utiliser un réseau Docker personnalisé pour le faire, mais c'est facile à configurer.

Configuration statique IPs

Tout d'abord, vous devrez configurer un réseau Docker, et puisque nous nous soucions de l'adresse IP, vous devrez spécifier un sous-réseau fixe :

docker network créer –subnet=172.20.0.0/16 customnetwork

CONNEXES : Que sont les sous-réseaux et comment affectent-ils mon réseau ?

Ensuite, vous pouvez exécuter un conteneur, en spécifiant le réseau avec l'indicateur –net, et en spécifiant l'adresse IP avec l'indicateur -ip :

docker run –net customnetwork –ip 172.20.0.10 -d container

Vous pouvez vérifier que l'adresse est correcte en la vérifiant dans le conteneur avec exec -t bin/bash, ou en inspectant la liste des conteneurs Docker :

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

Utiliser Docker Compose

Docker Compose est un outil utilisé pour lancer plusieurs conteneurs avec des paramètres prédéfinis. Cela inclut la configuration de réseaux avec des sous-réseaux spécifiques, et vous pouvez associer des conteneurs à des réseaux avec des adresses IP fixes à l'aide du bloc de configuration ipv4_address illustré ici :

version : “2” services : serveur Web : image : nginx nom_conteneur : réseaux de serveur Web : customnetwork : ipv4_address : 172.20.0.10 réseaux : customnetwork : ipam : config : – sous-réseau : 172.20.0.0/16