【问题标题】:How to reach additional containers by the hostname after docker-compose scale?docker-compose scale 后如何通过主机名访问其他容器?
【发布时间】:2016-10-06 23:32:32
【问题描述】:

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

Networking in Compose 中所述,创建了新网络,并在docker-compose up 之后为所有容器分配了主机名。

如何通过docker-compose scale <component>=2 之后的主机名访问其他(即扩展的)容器?

【问题讨论】:

标签: docker docker-compose


【解决方案1】:

使用“规模”时,内部 docker dns 服务仅解析全名,如 projectname_db_1、projectname_db_2 等。当然,最好另外提供解析服务名+索引,不带项目名前缀。

【讨论】:

  • 从 docker-compose 版本 1.17.1 开始,这对我有用
【解决方案2】:

根据我看到的示例,假设您的容器名称是 db,缩放后的容器名称为 db_1db_2 等...

【讨论】:

  • 如何使用 nginx 等预定义配置的工具?我是否必须使用 Docker 事件来扫描新主机并更新后端列表? (类似于联锁的工作原理)
  • 我尝试使用容器名称,但似乎它们没有填充到 DNS
  • @tpbowden 一种方法是编辑 nginx 配置并在添加其他容器后重新启动 nginx。负载均衡器的自动缩放可以通过 github.com/docker/dockercloud-haproxy 之类的项目实现,但似乎这些工作是通过将 docker 守护进程套接字绑定安装到容器中来实现的。
【解决方案3】:

我有 answered 那个基于 python 和 docker api 的问题。

您基本上可以使用docker api,来确定您的项目名称和服务名称是什么。

然后您可以过滤所有可用容器以获取相同的project+service 以获取您自己的其他实例。

通过查找数字,您最终可以构建主机名。

How to get infos about ourself in a compose cluster (backup at gist.github.com)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 2016-06-12
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多