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です。

おすすめ記事