É possível ter uma porta de acesso ao contêiner do Docker aberta pelo host? Concretamente, tenho o MongoDB e o RabbitMQ em execução no host e gostaria de executar um processo em um contêiner do Docker para ouvir a fila e (opcionalmente) gravar no banco de dados.
Eu sei que posso encaminhar uma porta do contêiner para o host (através da opção -p) e ter uma conexão com o mundo externo (por exemplo, internet) de dentro do contêiner Docker, mas gostaria de não expor as portas RabbitMQ e MongoDB do host para o mundo exterior.
EDIT: alguns esclarecimentos:
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
Eu tive que fazer esse truque para obter qualquer conexão com a Internet dentro do contêiner: Meu firewall está bloqueando as conexões de rede do contêiner do Docker para fora
EDIT : Eventualmente, eu fui com a criação de uma ponte personalizada usando tubulações e fazendo com que os serviços escutassem os IPs da ponte. Eu segui essa abordagem em vez de o MongoDB e o RabbitMQ ouvirem na ponte de encaixe, porque ela oferece mais flexibilidade.