Открытые порты для контейнеров Docker

Я начинаю с docker, просто пытаюсь запустить контейнер Docker с веб-приложением и пытаюсь увидеть его в нашей локальной сети.

Я установил свежую Ubuntu 14 LTS в VirtualBox без каких-либо дополнительных сервисов (без графического интерфейса, без LAMP, без OpenSSH ...), а затем установил только Docker:

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

и я запустил контейнер Odoo (OpenERP) (ранее запускал контейнер 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

Очень просто. Похоже, это работает. Я не установил браузер, но я подключился через telnet к 127.0.0.1:8069 и отправил запрос GET. Он ответил.

Теперь мне нужно получить доступ к сервису извне. Как?

  • Сетевой интерфейс VirtualBox настроен как мост.

  • Я установил фиксированный IP-адрес (192.168.0.150) в интерфейсе Ubuntu eth0.

  • UFW отключен

  • Я могу выполнить пинг на 192.168.0.150 с других компьютеров, и ubuntu отвечает.

  • Но браузер ничего не обнаруживает на 192.168.0.150:8069

  • Не удается подключиться через telnet к 192.168.0.150:8069

Я полагаю, это должна быть какая-то конфигурация перенаправления портов или сопоставления интерфейсов. Не могли бы вы мне помочь, пожалуйста? :)

Наконец-то я нашел ответ. Проблема заключалась в назначении порта. Если вы установите:

-p 127.0.0.1:8069:8069

вы предоставляете доступ ТОЛЬКО к localhost. Это отличный вариант безопасности, если вам нужна только локальная служба и вы хотите получить к ней доступ только с сервера. Но, если вы хотите открыть порт для ВСЕХ интерфейсов, просто введите:

-p 8069:8069

Затем вы можете получить доступ к сервису через сеть через интерфейс eth0 :)