Docker容器/ etc / hostsparsingID

我的例子:我有100个容器运行。 有一次,他们中的50人称为“ http:// partner / greet ”(这是不能改变的)。 我希望这50个遏制者知道他们每个人在哪里可以find他们相应的伙伴容器(另外50个)。 这是一个1:1的关系。

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

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

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

我需要一些东西,可以让我将一个容器的ID或名称映射到“合作伙伴”,所以这些URL调用工作。 我该怎么做? 这甚至可能吗?

我觉得你正在search的是启动一个容器时的 – --link选项:

– 链接= CONTAINER_NAME或ID:ALIAS

在运行容器时使用此选项会为新容器的/ etc / hosts添加一个名为ALIAS的额外条目,该条目指向由CONTAINER_NAME_or_ID标识的容器的IP地址。 这使新容器内的进程连接到主机名ALIAS,而不必知道它的IP。 下面将更详细地讨论–link =选项。 由于Docker可能会在重新启动时为链接的容器分配不同的IP地址,因此Docker会更新收件人容器的/ etc / hosts文件中的ALIAS条目。

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

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

因此,在容器中, partner将parsing为伙伴容器IP,并且不必硬编码IP地址。