Docker Swarm/Docker가 0.0.0.0 대신 특정 IP에서만 수신하도록 강제합니다.

Docker Swarm/Docker가 0.0.0.0 대신 특정 IP에서만 수신하도록 강제합니다.

배경: 포트 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에 스택 컨테이너 포트를 게시할 수 없습니다. 이에 대해 많은 공개 질문이 있습니다.

현재 Swarm 모드를 사용할 때 포트는 항상 0.0.0.0 호스트 주소에 게시됩니다.

그리고 귀하의 링크(https://docs.traefik.io/user-guide/cluster-docker-consul/)은 404입니다.

관련 정보