Problème de routage réseau dans un conteneur

modifié le : 16 octobre 2022,
par Guillaume Chéramy
 

Ce petit article est un compte rendu d'intervention sur un conteneur qui veut pas m'obéir ... le méchant ...

Le contexte : je déploie un Nextcloud avec docker-compose, ce Nextcloud est derrière un Traefik (voir article ), j'en déploie plusieurs régulièrement sans problèmes et là pour celui-ci de façon aléatoire il me prends pas le bon réseau comme réseau par défaut, et donc pas de routage correct et donc l'application ne peut pas fonctionner correctement !!!

Je suis donc obligé de manipuler le namespace netns pour changer la route par défaut de mon conteneur, voici comment je fais.

# Récupération du pid du conteneur 
pid=$(sudo docker inspect -f '{{.State.Pid}}' container)

# Création du répertoire pour travailler 
sudo mkdir -p /var/run/netns

# Faire un liens entre le namespace du process et le répertoire de travail
sudo ln -s /proc/$pid/ns/net /var/run/netns/$pid

# Manipuler
sudo ip netns exec $pid ip route
sudo ip netns exec $pid ip route del default 
sudo ip netns exec $pid ip route add default via 192.168.130.3

# Nettoyer
sudo rm -rf /var/run/netns/$pid

Dans tout cela ce qui est assez bizarre c'est que c'est aléatoire ... des fois ça marche des fois ça marche pas ... les plus vieux comprendront le pourquoi de l'image de cet article 😉