Abra portas para contêineres Docker

Estou começando com docker, apenas tentando executar um contêiner Docker com uma aplicação da web e tentando vê-lo em nossa rede local.

Eu instalei um novo Ubuntu 14 LTS no VirtualBox, sem nenhum serviço extra (sem GUI, sem lâmpada, sem OpenSSH...) e, em seguida, instalado apenas Docker:

curl -sSL https://get.docker.com/ | sh

e eu executei um contêiner Odoo (OpenERP) (anteriormente executei o contêiner postgree)

docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo --name db postgresdocker run -p 127.0.0.1:8069:8069 --name odoo --link db:db -t odoo

Simples. Parece que está a funcionar. Eu não instalei o navegador, mas me conectei via telnet a 127.0.0.1: 8069 e enviei a solicitação GET. Respondeu.

Agora eu preciso acessar o serviço de fora. Como?

  • A interface de rede VirtualBox é configurada como bridge.

  • Eu defini um ip fixo (192.168.0.150) na interface Ubuntu eth0.

  • UFW está desativado

  • Posso fazer ping para 192.168.0.150 formar outros computadores e Respostas do ubuntu.

  • Mas o navegador não detecta nada em 192.168.0.150: 8069

  • Não é possível conectar via telnet a 192.168.0.150: 8069

Suponho que deve ser alguma configuração de redirecionamento de porta ou mapeamento de interface. Podes ajudar-me, por favor? :)

Finalmente encontrei a resposta. O problema era a atribuição de portas. Se você definir:

-p 127.0.0.1:8069:8069

você está expondo apenas localhost. Esta é uma ótima opção de segurança se você precisar apenas de um serviço local e quiser acessá-lo apenas a partir do servidor. Mas, se você quiser expor a porta a todas as interfaces, basta digitar:

-p 8069:8069

Então, você pode acessar o serviço através da rede via interface eth0:)