Docker容器/ etc / hosts解析ID

时间:2017-09-26 08:27:44

标签: docker

我的例子:我有100个容器正在运行。有一次,其中50人打电话给#34; http://partner/greet" (这不能改变)。 我希望这50个遏制者知道"其中"他们每个人都可以找到他们相应的伙伴容器(另外50个)。它是1:1的关系。

运行docker run的容器时,我知道我可以使用--add-host选项为主机名添加IP地址。因此,对于50个容器,我将相应的parnter容器IPv4映射到' partner'。

但我的问题是:容器IP不是静态的。当容器重新启动时,它的IP地址可能会发生变化。这是一个大问题。

我的容器可以通过ping <id>ping <name>相互联系。 但是当我尝试将ID而不是IP地址添加到主机文件时,我收到一个错误:ID不是有效的IP地址(当然不是)。

我需要能够将ID或容器名称映射到&#34; partner&#34;的内容,以便这些URL调用有效。我该怎么做?这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

我认为你在寻找的是启动容器时的--link选项:

  

- link = CONTAINER_NAME或ID:ALIAS

     

在运行容器时使用此选项会提供新容器   / etc /托管一个名为ALIAS的额外条目,指向的IP地址   由CONTAINER_NAME_or_ID标识的容器。这让流程   在新容器内部连接到主机名ALIAS而没有   知道它的知识产权。 --link =选项将在下面更详细地讨论。   因为Docker可能会为链接分配不同的IP地址   容器重启时,Docker更新了ALIAS条目   / etc / hosts收件人容器的文件。

使用以下命令启动容器时,基本上可以将容器链接到其伙伴:

docker run <partner-container-name>:partner ...

因此,在容器中,partner将解析为伙伴容器IP,您不必对IP地址进行硬编码。