web-dev-qa-db-fra.com

Rendre le conteneur accessible uniquement à partir de l'hôte local

J'ai un moteur Docker installé sur Debian Jessie et j'y exécute un conteneur contenant nginx. Ma commande "run" ressemble à ceci:

docker run -p 1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9

Cela fonctionne très bien, le problème est que maintenant le contenu de ce conteneur est accessible via http://{server_ip}:1234. Je souhaite exécuter plusieurs conteneurs (domaines) sur ce serveur, je souhaite donc configurer des proxy inverses pour eux.

Comment puis-je m'assurer que le conteneur ne sera accessible que via un proxy inverse et non directement depuis IP:port? Par exemple.:

http://{server_ip}:1234  # not found, connection refused, etc...
http://localhost:1234  # works fine

// EDIT: Juste pour être clair - je ne demande pas comment configurer le proxy inverse, mais comment exécuter le conteneur Docker pour être accessible uniquement à partir de localhost.

20
Pavel Štěrba

Spécifiez l'IP hôte requis dans le mappage de port

docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9

Si vous faites un proxy inverse, vous voudrez peut-être les mettre tous sur un réseau défini par l'utilisateur avec votre proxy inverse, alors tout est dans un conteneur et accessible sur leur réseau interne.

docker network create net
docker run -d --net=web -v /var/www/:/usr/share/nginx/html nginx:1.9
docker run -d -p 80:80 --net=web haproxy
26
Matt

Eh bien, la solution est assez simple, il suffit de spécifier 127.0.0.1 lors du mappage du port:

docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9
4
Pavel Štěrba