在Docker中链接容器

Docker允许你通过名字链接容器 。

我有两个问题:

  • 假设A (客户端)连接到B (服务),并且B的端口是dynamic暴露的(即,实际的主机端口由Docker决定,而不是由用户给出)。 如果B停机并重新启动,会发生什么情况?
    • Docker是否更新A上的环境variables?
    • Docker是否将相同的端口重新分配给B
    • B链接是否被破坏?
    • …?
  • 除此之外,很显然,如果两个容器都在同一台主机上运行,​​这个工作正常。 链接容器是否也跨机器边界工作?

我会说:尝试;)。

目前,docker在stream程上没有任何控制权,一旦启动,就会执行execve(3)没有fork的情况。 不能更新env,这就是为什么链接需要在容器运行之前完成,之后不能编辑。

Docker会尝试将同一个端口重新分配给B,但没有保证,因为其他容器可以使用它。

“破”是什么意思? 如果禁用了未链接的容器之间的联网,那么如果您停止/启动一个容器,它应该仍然可以正常工作。

不,您无法通过networking链接容器。

你看过大使模式吗?

这是理想的这个概念,你可能希望App服务器链接到数据库服务器,但如果你把数据库服务器closures,那么App服务器也需要重新启动。

http://docs.docker.io/en/latest/use/ambassador_pattern_linking/