Skip to content

Instantly share code, notes, and snippets.

@fferriere
Created January 12, 2016 15:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fferriere/9402023c591b3c0802a3 to your computer and use it in GitHub Desktop.
Save fferriere/9402023c591b3c0802a3 to your computer and use it in GitHub Desktop.
Utiliser dnsmasq lors du lancement d'un container docker

Quand on lance un nouveau container docker, une adresse IP lui est attribuée. Sauf que cette adresse IP n'est pas toujours la même.

Pour palier à ce problème j'utilise un serveur DNS qui est hydraté grâce au script de lancement des mes containers.

Comme serveur DNS j'utilise dnsmasq. J'ai même crée un container pour l'utiliser : https://github.com/fferriere/docker-dnsmasq .

Petite illustration avec run.sh

#!/bin/bash
CONTAINER_NAME='mon-container'
DNSMASQ_CONF_DIR=/path/of/dnsmasq/name-configuration
DNSMASQ_RELOAD=/path/of/dnsmasq/dnsmasq.sh reload
# Je lance mon container
docker run mon_image -n $CONTAINER_NAME
# Je récupère son adresse IP
IP_ADDRESS=$(docker inspect -f "{{.NetworkSettings.IPAddress}}" "$CONTAINER_NAME")
# J'écrit l'association du nom de domaine avec l'adresse IP
echo "address=/mon-nom-de-domaine.lan/$IP_ADDRESS" > $DNSMASQ_CONF_DIR/mon-nom-de-domaine.lan.conf
# /!\ Ici j'utilise la redirection '>' pour écraser ce qui pourait déjà y avoir dans le fichier (l'ancienne IP).
# C'est pour cela que je préfère utiliser un fichier par nom de domaine
# Je recharge la configuration de dnsmasq
$DNSMASQ_RELOAD
# Maintenant mon container est accessible avec le nom de domaine mon-nom-de-domaine.lan
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment