Docker容器通过端口转发链接?

时间:2014-03-24 00:39:55

标签: docker

似乎将服务公开给其他Docker容器的首选方法是容器链接,它设置了一些环境变量,然后您必须在应用程序代码中使用它们来查找主机名和端口号:

 psql -h $PG_PORT_5432_TCP_ADDR -p $PG_PORT_5432_TCP_PORT 

有没有理由不通过端口转发以对应用程序透明的方式完成?因此,就像我可以在标准端口80上的容器内运行我的Web服务器并让Docker弄清楚要使用的实际端口一样,我可以这样做

psql -h 0.0.0.0  # no -p necessary, we use the default port

当我启动docker时,将设置端口转发,就像使用服务器端口一样。

2 个答案:

答案 0 :(得分:2)

这是可能的!它实际上是由CoreOS团队提出的;您可以在以下博客文章中阅读更多内容:

http://coreos.com/blog/Jumpers-and-the-software-defined-localhost/

Docker很快就会允许启动一个容器来共享另一个容器的网络命名空间;它将有助于这些场景(在短期内,它将允许你很容易地做你的建议)。

答案 1 :(得分:0)

Project Atomic也遵循这种方法:

http://www.projectatomic.io/docs/inter-container-networking/

  

Geard使用iptables使容器能够相互连接。网络命名空间允许将iptables规则添加到容器的网络命名空间。基本思想是使远程端点看起来好像它们是容器的本地端点。例如,可以使数据库容器看起来在应用程序容器内本地运行。