Puertos abiertos a contenedores Docker

Estoy empezando con docker, solo tratando de ejecutar un contenedor Docker con una aplicación web y tratando de verlo en nuestra red local.

He instalado un Ubuntu 14 LTS nuevo en VirtualBox, sin ningún servicio adicional (sin GUI, sin LAMP, sin OpenSSH...), y luego instaló solo Docker:

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

y he ejecutado un contenedor Odoo (OpenERP) (anteriormente ejecutaba el contenedor 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

Muy simple. Parece que está funcionando. No he instalado el navegador, pero me conecté a través de telnet a 127.0.0.1: 8069 y envié la solicitud GET. Respondió.

Ahora necesito acceder al servicio desde fuera. ¿Cómo?

  • La interfaz de red de VirtualBox está configurada como puente.

  • He configurado una IP fija (192.168.0.150) en la interfaz Ubuntu eth0.

  • UFW está deshabilitado

  • Puedo hacer ping a 192.168.0.150 desde otras computadoras, y Ubuntu responde.

  • Pero el navegador no detecta nada en 192.168.0.150:8069

  • No se puede conectar a través de telnet a 192.168.0.150: 8069

Supongo que debe ser alguna configuración de redirección de puertos o mapeo de interfaz. ¿Podrías ayudarme, por favor? :)

Finalmente encontré la respuesta. El problema era la asignación de puertos. Si configuras:

-p 127.0.0.1:8069:8069

está exponiendo solo localhost. Esta es una excelente opción de seguridad si solo necesita un servicio local y desea acceder a él solo desde el servidor. Pero, si desea exponer el puerto a TODAS las interfaces, simplemente escriba:

-p 8069:8069

Luego, puede acceder al servicio a través de la red a través de la interfaz eth0 :)