打开端口到Docker容器

我开始与docker,只是试图运行一个networking应用程序的Docker容器,并试图看到它在我们的本地networking。

我已经在VirtualBox中安装了新的Ubuntu 14 LTS,没有任何额外的服务(没有GUI,没有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 postgres docker run -p 127.0.0.1:8069:8069 --name odoo --link db:db -t odoo 

很简单。 它看起来像在工作。 我没有安装浏览器,但我通过telnet连接到127.0.0.1:8069,并发送GET请求。 它回答。

现在我需要从外面访问这个服务。 怎么样?

  • VirtualBoxnetworking接口被configuration为网桥。

  • 我在Ubuntu eth0接口中设置了一个固定IP(192.168.0.150)。

  • UFW被禁用

  • 我可以ping到192.168.0.150forms的其他电脑,和Ubuntu的答案。

  • 但浏览器不检测任何东西在192.168.0.150:8069

  • 无法通过telnet连接到192.168.0.150:8069

我猜想它必须是端口redirect或接口映射的一些configuration。 请问你能帮帮我吗? 🙂

最后我find了答案。 问题是港口分配。 如果你设置:

 -p 127.0.0.1:8069:8069 

你只暴露localhost。 如果您只需要本地服务,并且只想从服务器访问,则这是一个很好的安全选项。 但是,如果要将端口暴露给所有接口,只需键入:

 -p 8069:8069 

然后,你可以通过eth0接口通过networking访问服务:)