我开始转换我所有的systemd-nspawn
容器到 docker
和 traefik
解决方案,我设法在 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-montalcini
和 inspiring-goldwasser
根据下面的屏幕截图和 docker ps
上面的输出),它们分配了两个前端。另一方面,我希望将它们分配给单个 myfrontend.example.com
这会以某种方式识别容器是从 myimage
生成的是给他的。最佳答案
我不完全清楚你在问什么,所以如果这个答案没有完全达到目标,我深表歉意。您应该只有一个“前端”(即您的 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/了解更多信息。
关于docker - 如何使 traefik 自动分配给同一图像中的一个前端 docker 后端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55858505/