在Docker中链接容器

时间:2014-02-04 12:49:43

标签: docker

Docker允许您按名称link containers

我有两个问题:

  • 假设A(客户端)链接到B(服务),B的端口是动态公开的(即实际主机端口由Docker确定,而不是由用户)。如果B发生故障并重新启动会发生什么?
    • Docker是否更新了A上的环境变量?
    • Docker是否再次将同一个端口分配给B
    • A链接到B已损坏?
    • ...?
  • 除此之外,很明显,如果两个容器都在同一台主机上运行,​​这样可以正常工作。链接容器是否也适用于机器边界?

2 个答案:

答案 0 :(得分:4)

您是否考虑过大使模式?

这个概念非常适用于您可能希望App服务器链接到数据库服务器但如果您关闭数据库服务器,则还需要重新启动App服务器。

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

答案 1 :(得分:2)

我会说:尝试;)。

目前,docker一旦开始就没有对该进程的任何控制,因为execve(3)没有分叉。无法更新env,这就是为什么链接需要在容器运行之前完成,之后无法编辑。

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

'破碎'是什么意思?如果您在未链接的容器之间禁用了网络连接,则在停止/启动容器时它仍然可以正常工作。

不,您还无法通过网络链接容器。