Docker Compose с помощью файла компоновки l2bridge

424
Brian Deragon

У меня есть файл docker compose, который выглядит следующим образом:

version: '3.2' services: service-one: build: service-one container_name: service-one networks: - my-custom-network restart: unless-stopped service-two: depends_on: - service-one build: service-two container_name: service-two networks: - my-custom-network restart: unless-stopped networks: my-custom-network: driver: l2bridge 

Кажется, это работает нормально на моей машине, запустив docker-compose-up, все контейнеры запускаются, и они объединены в сеть друг с другом и могут при необходимости достигать хоста через 0.0.0.0 (были некоторые службы, которые мы еще не могли контейнировать, что хост требуется для запуска).

Однако на компьютере другого разработчика он загружает все и запускается docker-compose up; это создает сеть, машины запускаются, но он не может связаться с ними. Если он делаетdocker network inspect my-custom-network, он показывает, что сеть была создана, и IP-адреса были назначены, но ввод этих IP-адресов в браузер ничего не дает.

Мы попытались вручную собрать их по одной машине и поместить их в сеть по умолчанию «nat», и машины будут доступны, если они будут там размещены.

Итак, я думаю, мой вопрос состоит из двух частей:

  1. Могу ли я переписать свой файл compose для использования сети nat по умолчанию, но при этом получить имя службы в качестве имени хоста? (ожидается, что service-two сможет ссылаться на http: // service-one / ); Я знаю, что в Creators Update (недоступно для использования, мы работаем за корпоративной системой обновлений), я могу создать несколько сетей nat, но, поскольку мы на Anniversary Edition, мы не можем.

Или же...

  1. Почему не работает его мост? Мой работает просто отлично, я знаю, что в официальной документации для l2bridge написано, что вам нужно обновление Creators, но ни один из нас не запускает его в настоящее время, и он все еще отлично работает на моей машине, а не на его. Мы используем одну и ту же сеть, с теми же правами доступа к ней, теми же прокси, той же подсетью, теми же серверами DHCP, той же конфигурацией корпоративного брандмауэра, той же групповой политикой, тем же набором обновлений Windows. Почему моя работа, а не его?
1
Для работы l2bridge требуется обновление Windows Server 2016 или Windows 10 Creators. harrymc 6 лет назад 0
Я понимаю, что в документации по докеру это сказано, но, согласно winver, он и я используют одну и ту же версию Windows, 1607-летие обновления, один и тот же номер сборки. Все же это работает на моем, а не его. Brian Deragon 6 лет назад 0
Поскольку вы находитесь в ситуации, которая не гарантируется документацией, разница может заключаться в том, что у вас есть более качественный сетевой драйвер или что некоторые обновления Windows отсутствуют на другом компьютере. Возможно, вам следует обновить Windows 10 Creators Update (версия 1703). harrymc 6 лет назад 0

1 ответ на вопрос

1
harrymc

Согласно статье Microsoft Windows Container Networking :

l2bridge - контейнеры, подключенные к сети, созданной с помощью драйвера 'l2bridge', будут находиться в той же IP-подсети, что и хост контейнера. IP-адреса должны назначаться статически с того же префикса, что и хост контейнера. Все конечные точки контейнера на хосте будут иметь одинаковый MAC-адрес из-за операции преобразования адреса уровня 2 (перезаписи MAC) на входе и выходе.

Требуется обновление для Windows Server 2016 или Windows 10 Creators

Поскольку вы и ваш коллега используете Windows 10 версии 1607 (Anniversary update), вы оба находитесь в ситуации, которая не гарантируется документацией. Разница в том, почему это работает для вас, а не для него, может заключаться в том, что некоторые обновления программного обеспечения или Windows установлены на вашем компьютере, но не на его, например, другой сетевой драйвер.

Я думаю, вам следует как обновить Windows 10 Creators Update (версия 1703), так и убедиться, что ваши версии Docker совпадают.

К сожалению, мы находимся на корпоративных ноутбуках, управляемых корпоративным циклом выпуска, у нас 0 способов обновления, мы ограничены выпуском Anniversary до начала следующего года. Мы также гарантируем, что у нас будут такие же обновления, и мы с ним работаем на одном и том же ноутбуке. Brian Deragon 6 лет назад 0
Я сделал много изменений в своем брандмауэре, но я уже это проверил, у него в основном был стандартный брандмауэр; Я полагаю, что это другая проблема со стороны конфигурации, и я просто искал больше идей для проверки, таких как настройки брандмауэра или настройки докера (у меня были проверены экспериментальные функции, он не сделал, но мы тоже это исправили, и это все еще не сработало) Brian Deragon 6 лет назад 0
Ваши ноутбуки полностью идентичны - те же обновления Windows, драйверы и приложения? harrymc 6 лет назад 0