Lorsque l'on souhaite configurer nous même le réseau utilisé par un conteneur, nous avons plusieurs possibilités :
La déclaration de l'adressage IP du réseau et la gateway se fait depuis la partie "networks" du fichier Docker-compose :
networks:
mon-reseau:
name: mon-reseau
ipam:
driver: default
config:
- subnet: SUBNET/MASK
gateway: IP
La déclaration de l'adresse IP du conteneur se fait directement dans la partie "networks" définie dans configuration du service qui sera déployé.
Biensur cette partie est à ajouter seulement si une adresse de réseau a été défini comme au dessus.
version: ""
services:
mon-service:
networks:
mon-reseau
ipv4_address: IP
...
...
Les DNS qui seront utilisés par le conteneur sont également à définir dans configuration du service qui sera déployé :
version: ""
services:
mon-service:
dns:
- IP
- IP
...
...
Voici un exemple de fichier docker-compose pour créer un conteneur qui va déployer le service Uptime-Kuma avec un réseau, une gateway, une IP et des DNS spécifiques :
version: "3.9"
services:
uptime-kuma:
image: louislam/uptime-kuma:latest
container_name: uptime-kuma
restart: on-failure
# Declaration des DNS
dns:
- 1.1.1.1
- 8.8.8.8
volumes:
- ./uptime-data:/app/data
# Declaration de l'IP du Conteneur
networks:
demo
ipv4_address: 10.10.10.1
volumes:
uptime-data:
# Declaration de l'adressage IP et de la Gateway du réseau utilisé
networks:
demo:
ipam:
driver: default
config:
- subnet: 10.10.10.0/24
gateway: 10.10.10.254
Si l'on ne souhaite pas faire apparaitre directement les informations dans le fichier docker-compose on peut utiliser un fichier d'environnement qui devra être créé et placé au même endroit que le fichier .yaml
Dans ce cas on pourrai avoir un fichier compose comme ceci :
version: "3.9"
services:
uptime-kuma:
image: louislam/uptime-kuma:latest
container_name: uptime-kuma
restart: on-failure
# Declaration des DNS
dns:
- ${DNS1}
- ${DNS2}
volumes:
- ./uptime-data:/app/data
# Declaration de l'IP du Conteneur
networks:
demo
ipv4_address: ${IP}
volumes:
uptime-data:
# Declaration de l'adressage IP et de la Gateway du réseau utilisé
networks:
demo:
ipam:
driver: default
config:
- subnet: ${SUBNET}
gateway: ${GATEWAY}
et un fichier .env comme ceci :
IP="10.10.10.1"
DNS1="1.1.1.1"
DNS2="8.8.8.8"
SUBNET="10.10.10.0/24"
GATEWAY="10.10.10.254"