배경: 포트 80/443에서 Apache2를 실행하는 Hetzner에 전용 서버가 있고 이제 eth0 인터페이스에도 속하는 다른 IP를 추가했습니다. IP 주소에 액세스하고 ping할 수 있습니다. 서버의 기본 IP만 수신하도록 Apache2를 구성했으며 Docker Swarm Traefik Ingress에 새 IP를 사용하고 싶습니다...
다음 설정을 구현할 계획입니다.https://docs.traefik.io/user-guide/cluster-docker-consul/(가능하다면 IP를 더 추가할 계획입니다)
그러나 이것은 작동하지 않는 것 같습니다. 내가 설정해 "ip":"<newip>"
놨어/etc/docker/daemon.json
Docker는 신경 쓰지 않는다고 말합니다(파일에 IP를 지정했음에도 불구하고 traefik.yml
:
~ # docker stack deploy -c traefik.yml traefik-consul
WARN[0000] ignoring IP-address (138.201.xx.xx:80:80/tcp) service will listen on '0.0.0.0'
WARN[0000] ignoring IP-address (138.201.xx.xx:443:443/tcp) service will listen on '0.0.0.0'
또한 iptables에 불쾌한 DNAT 규칙을 추가하고 내 생각에 저항합니다.
# iptables -L -n -v -t nat
Chain PREROUTING (policy ACCEPT 6 packets, 490 bytes)
pkts bytes target prot opt in out source destination
1474K 111M DOCKER-INGRESS all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
1198 72892 DOCKER all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
...
Chain DOCKER-INGRESS (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED tcp spt:443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED tcp spt:80
분명 방법이 있을 텐데요? 아니면 이것이 지원되지 않는 걸까요? 어떤 아이디어가 있나요? 힌트?
답변1
호스트의 특정 IP에 스택 컨테이너 포트를 게시할 수 없습니다. 이에 대해 많은 공개 질문이 있습니다.
- https://github.com/moby/moby/issues/32299
- https://github.com/moby/moby/issues/35318
- https://github.com/moby/moby/issues/26696
현재 Swarm 모드를 사용할 때 포트는 항상 0.0.0.0 호스트 주소에 게시됩니다.
그리고 귀하의 링크(https://docs.traefik.io/user-guide/cluster-docker-consul/)은 404입니다.