【问题标题】:Linking containers in Docker在 Docker 中链接容器
【发布时间】:2014-08-28 16:24:32
【问题描述】:

Docker 允许您按名称link containers

对此我有两个问题:

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

【问题讨论】:

标签: docker


【解决方案1】:

你研究过大使模式吗?

非常适合这个概念,您可能希望将应用服务器链接到数据库服务器,但如果您关闭数据库服务器,那么应​​用服务器也需要重新启动。

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

【讨论】:

  • 是的,我做到了……基本上没问题,尽管我认为如果 Docker 可以自动重新启动依赖项会非常好(但对于本地链接也是如此)。无论如何,这基本上是我一直在寻找的。​​span>
【解决方案2】:

我会说:试试;)。

目前,docker 无法控制进程一旦启动,因为它 execve(3) 没有分叉。无法更新 env,这就是为什么链接需要在容器运行之前完成并且之后无法编辑的原因。

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

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

不,您还不能跨网络链接容器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2016-04-16
    • 2017-09-02
    • 2015-02-23
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    相关资源
    最近更新 更多