Comment accéder aux ports sur l'hôte à partir d'un conteneur Docker

0
165

Si vous vous connectez au monde extérieur, Docker se comporte comme si la requête provenait du machine hôte. Mais si vous souhaitez accéder aux processus en cours d'exécution sur l'hôte, votre pare-feu peut nécessiter une configuration supplémentaire.

La solution : ajoutez une règle de pare-feu pour 172.18 .0.0/16

Si vous venez d'essayer d'accéder à un processus exécuté sur la machine hôte comme un service HTTP, vous avez peut-être été bloqué. En effet, même si les conteneurs Docker s'exécutent sur l'hôte, ils utilisent un réseau spécial sous le capot pour les garder logiquement séparés, et à cause de cela, ils ont des adresses IP différentes.

Vous pouvez le voir lors de l'exécution d'ifconfig , vous verrez votre interface réseau standard, mais aussi l'interface docker0. Par défaut, Docker utilise le bloc 172.18.0.0/16 pour allouer les adresses IP des conteneurs.

Le correctif est très simple—ouvrez cette plage de ports dans votre pare-feu. Les demandes de la plage d'adresses IP utilisées par Docker sont probablement bloquées. Il s'agit d'une plage d'adresses IP privée, il y a donc un risque minime à l'ouvrir. Pour UFW, ce serait :

sudo ufw allow from 172.18.0.0/24

Spécifier éventuellement un port à ouvrir :

sudo ufw allow from 172.18.0.0/24 vers n'importe quel port 9200

Pour iptables, ce serait :

iptables –append INPUT –protocol tcp –src 172.18.0.0/24 –jump DROP

Pour les services d'hébergement gérés comme AWS, vous peut ne pas avoir besoin de changer quoi que ce soit les groupes de sécurité sont des pare-feu de réseau qui se trouvent devant les instances et ne devraient pas affecter le trafic interne.