首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使尚未启动的容器的DNS条目在另一个容器中可用?

如何使尚未启动的容器的DNS条目在另一个容器中可用?
EN

Stack Overflow用户
提问于 2017-04-19 16:34:24
回答 1查看 377关注 0票数 1

我正在尝试运行一组容器。通过环境变量为每个实例提供其他实例的主机和端口列表。我想使用docker网络(即,不是主机网络)。我的想法是使用"--name“(或--network-alias)运行选项为每个实例指定一个显式的主机名。

所以我想这样开始:

代码语言:javascript
复制
docker run --name x1 -e clusterMembers=x2:12345,x3:12345 --network=mynet -d my/image
docker run --name x2 -e clusterMembers=x1:12345,x3:12345 --network=mynet -d my/image
docker run --name x3 -e clusterMembers=x1:12345,x2:12345 --network=mynet -d my/image

问题是,当我启动引用主机名x2和x3的第一个容器时,这些主机名还不存在。我的服务器启动,执行查找,但查找失败,服务器再次退出(不,我不能更改代码以重试DNS查找)。请注意,如果其他实例尚不可访问,则服务器不会出现故障...只是它不能容忍失败的DNS查找。

您知道如何使主机名x2和x3对容器x1可用(主机名x3对容器x2可用)吗?

我尝试使用"-- add -host“选项将一个假条目添加到/etc/hosts文件中,但当然,这个假条目将”隐藏“DNS查找,并且即使启动了其他实例,服务器也永远看不到正确的IP地址。

除了使用主机网络之外,还有什么方法可以做到这一点吗?

根据BMitch的建议,我提出的解决方案是采用wait- for -it脚本,对其稍作修改,以便只对给定主机执行DNS查找,而不是“port”主机+端口。

然后,在我的容器入口点脚本中,我首先从上面示例中的"clusterMembers“环境变量中提取主机名,并对每个主机名使用我的wait-for-dns脚本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-19 19:26:52

我会在图像中更改或添加一个类似于wait-for-it的入口点。然后,您可以以任何顺序启动您的容器,而无需担心竞争条件或为尚不存在的容器注入DNS地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43490506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档