Est-il possible d'ouvrir des ports d'accès au conteneur Docker par l'hôte? Concrètement, j'ai MongoDB et RabbitMQ en cours d'exécution sur l'hôte et j'aimerais exécuter un processus dans un conteneur Docker pour écouter la file d'attente et (éventuellement) écrire dans la base de données.
Je sais que je peux transférer un port du conteneur vers l'hôte (via l'option -p) et avoir une connexion au monde extérieur (c'est-à-dire Internet) à partir du conteneur Docker, mais j'aimerais ne pas exposer les ports RabbitMQ et MongoDB de l'hôte au monde extérieur.
EDIT: quelques éclaircissements:
Starting Nmap 5.21 ( http://nmap.org ) at 2013-07-22 22:39 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00027s latency).
PORT STATE SERVICE
6311/tcp open unknown
joelkuiper@vps20528 ~ % docker run -i -t base /bin/bash
root@f043b4b235a7:/# apt-get install nmap
root@f043b4b235a7:/# nmap 172.16.42.1 -p 6311 # IP found via docker inspect -> gateway
Starting Nmap 6.00 ( http://nmap.org ) at 2013-07-22 20:43 UTC
Nmap scan report for 172.16.42.1
Host is up (0.000060s latency).
PORT STATE SERVICE
6311/tcp filtered unknown
MAC Address: E2:69:9C:11:42:65 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 13.31 seconds
J'ai dû faire cette astuce pour obtenir une connexion Internet avec le conteneur: mon pare-feu bloque les connexions réseau du conteneur docker vers l'extérieur
EDIT : Finalement, j'ai créé un pont personnalisé en utilisant la tuyauterie et en faisant écouter les services sur les IP du pont. J'ai choisi cette approche au lieu de laisser MongoDB et RabbitMQ écouter sur le pont docker car cela donne plus de flexibilité.