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
> 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 <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.
> 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.<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
linux pour isoler les processus. Lutilité pgrep(1) est capable
@ -886,4 +886,13 @@ processus.
$ 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
~~~