2016-02-05 6 views
2

Я пробовал последние RC для докеров и составлял в течение нескольких дней, и, наконец, сегодня новые стабильные версии (1.10 и 1.6 соответственно).Не удается добраться до контейнеров с новыми 1.10 DNS SD

Новый сетевой материал, добавленный в версии 1.9, пока замечателен. Но так как я обновил до 1.10rc1 (и до сих пор для каждого RC и стабильного), контейнеры в той же сети, определенной пользователем, больше не могут найти друг друга. Фактически, они не могут даже достичь внешнего мира прямо сейчас.

Быстрый пример, файл test_docker/докер-compose.yml:

version: '2' 
services: 
    db1: 
     image: mysql 
     environment: 
      MYSQL_ALLOW_EMPTY_PASSWORD: yes 
    db2: 
     image: mysql 
     environment: 
      MYSQL_ALLOW_EMPTY_PASSWORD: yes 

Это создает два контейнера MySQL с официальным изображением. Согласно сочинить документы, новый testdocker_default должен быть создан, причем оба контейнер автоматически соединяется, что имеет место:

docker network inspect testdocker_default 
[ 
    { 
     "Name": "testdocker_default", 
     "Id": "820f702e8e685567e4f1a8638cd9be305e96e37fcd741306eed6c1cf0d54ba02", 
     "Scope": "local", 
     "Driver": "bridge", 
     "IPAM": { 
      "Driver": "default", 
      "Options": null, 
      "Config": [ 
       { 
        "Subnet": "172.17.0.0/16", 
        "Gateway": "172.17.0.1/16" 
       } 
      ] 
     }, 
     "Containers": { 
      "16d5594bdfd11f55d33a207612b8447f6b50ff4be8b42d2313707b06ca618556": { 
       "Name": "testdocker_db2_1", 
       "EndpointID": "b6d5ff10fba860c01ac7a6508e56c5e116296cd06ea2158c695897e18fcd50ce", 
       "MacAddress": "02:42:ac:11:00:03", 
       "IPv4Address": "172.17.0.3/16", 
       "IPv6Address": "" 
      }, 
      "9b8b885dab3b5012c9663cb97a07af66fbe385f92c69a614a4d56bf85305ec3a": { 
       "Name": "testdocker_db1_1", 
       "EndpointID": "09e43aef8e14b0e876d47fabe67a3827dc4cea5d44b199113d9ab2678d8ce22a", 
       "MacAddress": "02:42:ac:11:00:02", 
       "IPv4Address": "172.17.0.2/16", 
       "IPv6Address": "" 
      } 
     }, 
     "Options": {} 
    } 
] 

Теперь документация также говорит о том, что контейнеры должны быть в состоянии достигнуть друг с другом через DB1 и db2, но это не так:

[email protected]:/# mysql -h db2 -u root    
ERROR 2005 (HY000): Unknown MySQL server host 'db2' (111) 
[email protected]:/# mysql -h testdocker_db2_1 -u root 
ERROR 2005 (HY000): Unknown MySQL server host 'testdocker_db2_1' (111) 

Кроме того, ни один контейнер способен достичь интернет, если я явно не добавить DNS Google для /etc/resolv.conf.

Я уверен, что я делаю что-то неправильно здесь, потому что я не могу найти проблемы, поднятые другими людьми, но я не могу понять, что это такое.

Спасибо, ребята!

Edit:

Чтобы уточнить, контейнеры могут пинговать друг с другом через IP-адрес, но имена хостов не будут решены.

+0

Я точно воссоздал вашу настройку - просто скопировал и вставил ваш yml, даже использовал один и тот же каталог - и смог выполнить пинг других контейнеров, а также Интернет. Поиск DNS работает ...и я смог выполнить ping 'db2' из' db1'. – deitch

+0

Я работаю с окончательным выпуском, хотя, возможно, ваш RC плохой? Лично я должен признать, что я не совсем уверен, как эта новая структура DNS работает. Я читал «Проблемы и PR» и все еще смущен. – deitch

+0

Чтобы добавить: '$ docker exec -it testdocker_db1_1 bash root @ 4fcd80c16e5d:/# mysql -h db2 -u root Добро пожаловать на монитор MySQL. Команды заканчиваются; или \ g. Ваш идентификатор соединения с MySQL равен 2 Версия сервера: 5.7.10 Сервер сообщества MySQL (GPL) Copyright (c) 2000, 2015, Oracle и/или его филиалы. Все права защищены. Oracle является зарегистрированной торговой маркой корпорации Oracle и/или ее дочерних компаний . Другие названия могут быть товарными знаками соответствующих владельцев . Тип 'help;' или '\ h' для получения справки. Введите '\ c', чтобы очистить текущую инструкцию ввода. mysql> ' – deitch

ответ

4

This issue was reported on GitHub. Предлагаемое обходное решение на данный момент составляет отключить firewalld в целом.

Я обновлю этот ответ с лучшим решением этой проблемы, как только будет найден.

Edit # 1:

Pull request solving this issue (протестированы на Fedora 23). Этот PR уже объединен с мастером, для тех, кто хочет скомпилировать Docker из источника.

Не удалось найти ожидаемую дату релиза, но я предполагаю, что в ближайшие пару недель он будет выпущен как версия патча. Обновит этот ответ снова с дополнительной информацией, если таковой имеется.

Edit # 2:

Docker's 1.10.1 RC решает эту проблему. Я отмечу этот ответ, как принято, чтобы закрыть эту тему.

Смежные вопросы