如何让 traefik 从同一张图片自动分配给一个前端 docker 个后端?

How to make traefik automatically assign to one frontend docker backends from the same image?

我开始将我所有的 systemd-nspawn 容器转换为 dockertraefik 解决方案,并且我设法在 docker 容器(后端)已启动。

我想让几个容器从同一个 docker 图像(每个都有一个自动创建的名称)开始,以附加到我要设置的名称的前端。这样的设置可行吗?

也就是说,今天我运行

# docker run myimage
# docker run myimage
# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
5b4af3466ba6        wazaa               "/bin/sh -c 'python …"   About an hour ago   Up About an hour    5000/tcp            cranky_montalcini
59b1be83bf98        wazaa               "/bin/sh -c 'python …"   About an hour ago   Up About an hour    5000/tcp            inspiring_goldwasser

我得到两个容器(cranky-montalciniinspiring-goldwasser 根据下面的屏幕截图和上面的 docker ps 输出)分配了两个前端。另一方面,我想将它们分配给一个 myfrontend.example.com,它会以某种方式识别出从 myimage 生成的容器是给他的。

我不是很清楚你在问什么,所以如果这个答案没有完全切中要害,我深表歉意。你应该只有一个 "frontend" (这是你的 traefik 容器)。 Traefik 根据名称将新容器映射到后端。如果您希望两个具有不同名称的容器被视为同一后端的一部分(以便定向到该后端的请求将在它们之间循环),您可以设置 traefik.backend 标签。例如,这将使以下两个容器成为 foo 后端的成员:

docker run --label traefik.backend=foo some_image
docker run --label traefik.backend=foo another_image

当然,这假设您还配置了一个适当的 traefik.frontend.rule 将流量定向到此特定后端。

有关其他信息,请参阅 https://docs.traefik.io/configuration/backends/docker/