我设置了一个由3个节点,一个主节点和2个从节点组成的docker swarm集群。
我以traffik作为docker swarm服务开始使用docker stack deploy。
我创建了一个具有群集范围的可附加覆盖网络,并且在该网络上附加了traefik。
Traefik正在监听端口443和80,而入口网络的运行就像一个魅力,但是如果我使用docker-compose启动容器(无堆栈!),traefik不会发现它们。
如果我将traefik部署为swarmmode设置为false的docker swarm服务,它将仅发现在运行traefik容器的主机上启动的容器。
traefik.toml文件的[docker]
endpoint = "unix:///var/run/docker.sock"
watch = true
exposedByDefault = false
swarmmode = true
network = "nextcloud_swarm"
labels:
- traefik.enable=true
- traefik.backend.loadbalancer.stickiness=true
- traefik.domain=mydomain.com
- traefik.backend=cloud
- traefik.frontend.rule=Host:cloud.mydomain.com
- traefik.docker.network=nextcloud_swarm
- traefik.basic.protocol=http
- traefik.port=80
出于某种原因,我必须在不同节点上启动服务,而不是将其作为docker swarm服务,而是作为docker-compose启动(例如,docker stack不支持sysctl命令或NET_ADMIN)。