Accéder aux ports locaux (docker-proxy) avec minifirewall

This commit is contained in:
Benoît S. 2019-07-19 15:01:03 +02:00
parent 713172d74d
commit 662742beb8

View file

@ -815,7 +815,7 @@ $ docker stack deploy -c ma-stack.yml -c ma-stack.dev.yml ma-stack
## FAQ ## 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 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_. 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 # /etc/init.d/docker restart
~~~ ~~~
> Espace insuffisant lors du build d'une image ### Espace insuffisant lors du build d'une image
Solutions: Solutions:
@ -838,7 +838,7 @@ Solutions:
*Build context: Tout ce qui se trouve à la racine du Dockerfile.* *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_ : 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 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. Non, Docker ne supporte pas ça.
Il faut bloquer le port en question dans le pare-feu, dans la chaîne iptables DOCKER-USER. 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 # iptables -A DOCKER-USER -i eth0 -p tcp -m tcp --dport 5000 -j DROP
~~~ ~~~
> Au sein des conteneurs, un `getent <service>` ou `getent tasks.<service>` ne retourne pas l'adresse IP du service alors que celui-ci est bien lancé. ### Au sein des conteneurs, un `getent <service>` ou `getent tasks.<service>` ne retourne pas l'adresse IP du service alors que celui-ci est bien lancé.
Stopper le conteneur du service avec un `docker stop <conteneur du service>`. Docker stack devrait le relancer automatiquement. Stopper le conteneur du service avec un `docker stop <conteneur du service>`. 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) : 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.<nom du service> $ getent hosts tasks.<nom du service>
~~~ ~~~
> 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 Docker et autres technologies de conteneurs, utilisent des namespace
linux pour isoler les processus. Lutilité pgrep(1) est capable linux pour isoler les processus. Lutilité pgrep(1) est capable
@ -886,4 +886,13 @@ processus.
$ pgrep --ns $dockerPID $query $ pgrep --ns $dockerPID $query
~~~ ~~~
Ce concept provient du système Plan9 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
~~~