адрес привязки контейнера docker swarm, отличный от 0.0.0.0

Я получил многоузловую установку роя докеров со следующими интерфейсами:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:8d:c0:4d brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 47333sec preferred_lft 47333sec
    inet6 fe80::a00:27ff:fe8d:c04d/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:fe:3f:4d brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.2/24 brd 10.0.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fefe:3f4d/64 scope link 
       valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:94:ee:64:8f brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.2/24 brd 10.0.1.255 scope global docker0
       valid_lft forever preferred_lft forever
9: docker_gwbridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:12:4b:f2:fa brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global docker_gwbridge
       valid_lft forever preferred_lft forever
    inet6 fe80::42:12ff:fe4b:f2fa/64 scope link 
       valid_lft forever preferred_lft forever

При запуске самого простого стека контейнеров docker swarm deploy -c simple.yml simple

version: "3.7"
services:
  whoami:
    image: traefik/whoami
    ports:
      - 80:80

Контейнер размещается, и служба привязывается к 0.0.0.0 . Не совсем идеально. Лучше, если бы контейнер был привязан к интерфейсу eth1 = 10.0.1.2 / 24 . В идеале также lo - но это была бы только вишенка на торте.

Я пытался запустить экземпляры докеров с соответствующими IP-адресами из сети.

- ip ip IP-адрес по умолчанию при привязке портов контейнера (по умолчанию 0.0.0.0)

Таким образом, на основе документации , например: dockerd --ip 10.0.1.2 . К сожалению, это ничего не меняет.

Я использую Docker версии 20.10.4, сборка d3cb89e .

Есть какие-нибудь советы, что мне может не хватать?

1
задан 1 March 2021 в 19:33
1 ответ

В настоящее время невозможно привязать службу swarm к определенному IP. См. этот вопрос более чем четырехлетней давности: https://github.com/moby/moby/issues/26696

Вы можете инициировать рой с опциями --advertise-addr --data-path-addr и --listen-addr, привязанными к интерфейсу eth1, чтобы ограничить часть внутреннего трафика роя этим интерфейсом, но это не решит проблему.

2
ответ дан 24 April 2021 в 00:39

Теги

Похожие вопросы