Как сопоставить имя интерфейса контейнера в docker-compose с созданной сетью? - PullRequest
0 голосов
/ 27 апреля 2019

Я настраиваю с помощью docker-compose (версия 1.21.1) 3 контейнера докеров и две сети:

version: '2.1'
services:
  app1:
    build:
      context: .
      dockerfile: "Dockerfile"
    depends_on:
      - redis
    networks:
      - pub
      - default

  redis:
    build:
      context: "tests/redis"
    networks:
      - default

  app2:
    build:
      context: "tests/app2"
    networks:
      - pub
      - default

networks:
  pub:
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: "172.16.238.0/24"
        - subnet: "fe80::42:acff:fe10:ee04/64"
  default:

В приложении 1:

# ip a
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
696: eth0@if697: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:10:ee:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0    
    inet 172.16.238.3/24 brd 172.16.238.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe10:ee03/64 scope link
       valid_lft forever preferred_lft forever
    inet6 fe80::3/64 scope link nodad
       valid_lft forever preferred_lft forever
698: eth1@if699: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:c0:a8:f0:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.240.4/20 brd 192.168.255.255 scope global eth1
       valid_lft forever preferred_lft forever

Однако я хочу eth1поддерживать IPv6, или как eth0, так и eth1.Документация ничего не упоминает об этом, и я не смог найти опцию в опции сети .Есть ли способ сделать это?

1 Ответ

0 голосов
/ 13 мая 2019

Мне пришлось включить ipv6 для обеих сетей и выполнить подсети в подсети IPv6. Для части CIDR я использовал сетевой калькулятор подсети для IPv6, однако я пока не уверен, почему это сработало: p

Это конфигурация, которая работала:

networks:
  default:
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: "2001:db8:8000::/33"
  pub:
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: "2001:db8::/33"
...