diff --git a/HowtoDocker.md b/HowtoDocker.md index ca243555..cfdb0248 100644 --- a/HowtoDocker.md +++ b/HowtoDocker.md @@ -815,7 +815,7 @@ $ docker stack deploy -c ma-stack.yml -c ma-stack.dev.yml ma-stack ## FAQ -> Les conteneurs ont des problèmes de connectivités entre eux/vers l'extérieur +### Les conteneurs ont des problèmes de connectivités entre eux/vers l'extérieur C'est très probablement lié à un outil manipulant les règles netfilter qui a effacé les règles spécifiques à Docker, notamment dans la table _nat_. @@ -827,7 +827,7 @@ de redémarrer le démon : # /etc/init.d/docker restart ~~~ -> Espace insuffisant lors du build d'une image +### Espace insuffisant lors du build d'une image Solutions: @@ -838,7 +838,7 @@ Solutions: *Build context: Tout ce qui se trouve à la racine du Dockerfile.* -> Lors d'un redéploiement d'une stack Docker (docker stack deploy), les services ne sont pas redémarrer avec la nouvelle image +### Lors d'un redéploiement d'une stack Docker (docker stack deploy), les services ne sont pas redémarrer avec la nouvelle image Vérifier que le tag _latest_ est bien précisé dans le nom de l'image dans le _docker-stack.yml_ : @@ -846,7 +846,7 @@ Vérifier que le tag _latest_ est bien précisé dans le nom de l'image dans le image: registrydocker.example.com:5000/foo:latest ~~~ -> Est-il possible de ne faire écouter un service d'une stack que sur une interface précise de la machine hôte (par exemple sur un LAN privé) ? +### Est-il possible de ne faire écouter un service d'une stack que sur une interface précise de la machine hôte (par exemple sur un LAN privé) ? Non, Docker ne supporte pas ça. Il faut bloquer le port en question dans le pare-feu, dans la chaîne iptables DOCKER-USER. @@ -857,11 +857,11 @@ Pour bloquer l'accès au _registry_ Docker depuis l'extérieur par exemple : # iptables -A DOCKER-USER -i eth0 -p tcp -m tcp --dport 5000 -j DROP ~~~ -> Au sein des conteneurs, un `getent ` ou `getent tasks.` ne retourne pas l'adresse IP du service alors que celui-ci est bien lancé. +### Au sein des conteneurs, un `getent ` ou `getent tasks.` ne retourne pas l'adresse IP du service alors que celui-ci est bien lancé. Stopper le conteneur du service avec un `docker stop `. Docker stack devrait le relancer automatiquement. -> Comment obtenir l'adresse IP des _tasks_ d'un _service_ (dans le cadre de l'utilisation de Docker stack) au sein de conteneur (à des fins de debug) ? +### Comment obtenir l'adresse IP des _tasks_ d'un _service_ (dans le cadre de l'utilisation de Docker stack) au sein de conteneur (à des fins de debug) ? L'adresse IP virtuelle qui redirige aléatoirement sur chacune des _tasks_ (si le réseau utilise le driver _overlay_, cas par défaut) : @@ -875,7 +875,7 @@ L'adresse IP des différentes _tasks_ d'un service : $ getent hosts tasks. ~~~ -> Comment trouver le PID d'un processus roulant dans un conteneur? +### Comment trouver le PID d'un processus roulant dans un conteneur? Docker et autres technologies de conteneurs, utilisent des namespace linux pour isoler les processus. L’utilité pgrep(1) est capable @@ -886,4 +886,13 @@ processus. $ pgrep --ns $dockerPID $query ~~~ -Ce concept provient du système Plan9 \ No newline at end of file +Ce concept provient du système Plan9 + +### Accéder aux ports locaux (docker-proxy) avec minifirewall + +Vous devez autoriser l'interface docker0 + +~~~ +# Autorisation Docker +/sbin/iptables -A INPUT -i docker0 -j ACCEPT +~~~ \ No newline at end of file