Назад | Перейти на главную страницу

Docker + IPv6 - что лучше?

Я хочу создать службы с поддержкой IPv6 с помощью Docker, которые могут подключаться к хостам v6 во внешней сети и могут быть доступны из внешней сети v6. Я действительно смущен всем этим прямо сейчас, поэтому я хочу услышать о лучших практиках использования IPv6 с Docker. Вот что я сейчас думаю:

По умолчанию в конфигурации Docker отключен IPv6, и все созданные контейнеры используют только IPv4. С адресами v4 мы предполагаем, что:

А что насчет v6? Что ж, с v6 мы предполагаем, что каждый IP-адрес является публично маршрутизируемым. Это означает, что контейнеры больше не привязаны к NAT и напрямую доступны для внешней сети. Все как должно быть. Но у меня все больше и больше вопросов ...

  1. Если мы говорим о сервере с фиксированным IPv6-адресом, мы можем выделить некоторый блок v6 для использования в контейнерах. В моем случае у меня / 64, я выделил его для докера. Он работает, контейнеры могут достигать целей IPv6, контейнеры могут быть доступны напрямую извне. Но как насчет ноутбука, на котором я фактически разрабатываю эти службы, а затем развертываю их на сервере? Этот ноутбук перемещается из сети в сеть, из одной подсети v6 в другую и, что наиболее важно, в места, где v6 недоступен. Должен ли я использовать для этого блок ULA и каким-то образом настроить NAT-подобную конфигурацию, чтобы они достигли внешних целей IPv6? Конечно, в этом случае меня интересует только связь между контейнером и внешними устройствами, мне не нужно, чтобы они были доступны вне моего ноутбука.
  2. Должен ли конечный пользователь обращаться к контейнеру напрямую по его IPv6-адресу? Если это так, я должен определить статический IP-адрес в docker-compose.yml и настройте цепочку FORWARD ip6tables, чтобы открыть необходимые порты контейнера для внешнего. В таком случае я должен поддерживать разные docker-compose.yml для сервера и ноутбука использовать разные статические адреса? Если я решу поделиться своими услугами с кем-то, кому на самом деле наплевать на v6 и кто использует настройку докеров по умолчанию, я должен поддерживать третью конфигурацию Compose без v6? В v4 такой проблемы нет, поскольку мы просто сопоставляем необходимые порты и позволяем Docker творить чудеса.
  3. Если я использую статические адреса v6, я предполагаю, что мне следует использовать предопределенные сети? Что-то вроде:
networks:
  app_net:
    external:
      name: appnet
  1. Может быть, мне стоит изучить автоконфигурацию IP и динамический DNS, что-то вроде разрешения обновления DNS при изменении внутреннего IP-адреса? nsupdate например.

  2. Или я должен отказаться от всей этой идеи с помощью прямого обмена данными по IPv6 и просто продолжить отображение портов?

Какой у вас опыт с этим?