web-dev-qa-db-ja.com

Docker Swarm / Dockerに0.0.0.0ではなく特定のIPのみをリッスンさせる

背景:ポート80/443でApache2を実行する専用サーバーがHetznerにあります。次に、eth0インターフェイスにも属する別のIPを追加しました。 IPアドレスに到達してpingを実行できます。サーバーのプライマリIPのみをリッスンするようにApache2を構成しましたが、Docker Swarm TraefikIngressに新しいIPを使用したいと思います...

このセットアップを実装する予定です: https://docs.traefik.io/user-guide/cluster-docker-consul/ (うまくいく場合はIPを追加する予定です)

しかし、それはうまくいかないようです。 "ip":"<newip>"/etc/docker/daemon.jsonを設定しました

Dockerは、(traefik.ymlファイルでIPを指定しても、気にしないと言っているだけです。

~ # 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'

さらに、それはいくつかの厄介なDNAT-Ruleをiptablesに投げ込み、私の考えをボイコットします:

# 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
mt_

ホスト上の特定のIPでスタックコンテナポートを公開することはできません。多くの問題があります https://github.com/moby/moby/issues/32299

https://github.com/moby/moby/issues/35318

スウォームモードを使用する場合、ポートは常に0.0.0.0ホストアドレスで公開されます。

また、あなたのリンクは404 https://docs.traefik.io/user-guide/cluster-docker-consul/

1
Slava Kryvel