docker集装箱通过端口转发链接?

看起来,将服务公开到其他Docker容器的首选方法是容器链接,它设置了一些环境variables,然后在应用程序代码中使用它来查找主机名和端口号:

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时,端口转发将被设置,就像服务器端口一样。

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

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

Docker将很快允许启动一个容器来共享另一个容器的networking名称空间; 这将有助于这些情况(并在短期内,它将允许做你很容易build议)。

Project Atomic也遵循这种方法:

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

Geard使用iptables来启用容器相互连接。 networking名称空间允许将iptables规则添加到容器的networking名称空间。 基本的想法是使远程端点看起来好像是一个容器的本地端点。 例如,可以使数据库容器看起来在应用程序容器内本地运行。