在docker-compose scale之后如何通过主机名访问额外的容器?

我使用docker-compose 1.6与docker 1.10.1和docker-compose.yml的版本2。

正如Compose中的Networking所述, 在docker docker-compose up后,将创build新的networking,并为其中的所有容器分配主机名。

docker-compose scale <component>=2后,如何通过主机名访问附加(即缩放)的容器?

基于我见过的例子,假设你的容器名称是db ,缩放容器的名称是db_1db_2等等。

当使用“scale”时,内部docker dns服务只parsing全名,比如projectname_db_1,projectname_db_2等等。 当然,最好还是提供parsing服务名称+索引而不用项目名称前缀。

我已经用docker api的python来回答这个问题。

你基本上可以使用docker api ,找出你的项目名称和服务名称是什么。

然后,你可以过滤所有可用的容器为同一个project + service来获得自己的其他实例。

随着数字的查找,你可以最终构build主机名。

请参阅如何在组合群集中获取有关我们自己的信息 (备份在gist.github.com上)