
Я использую Docker версии 1.7 на centos-6
:
docker --version
Docker version 1.7.1, build 786b29d/1.7.1
Проблема в следующем: если /etc/resolv.conf
файл каким-то образом содержит серверы имен с адресами IPv6, то он не может разрешить или извлечь некоторые репозитории из GitHub.
когда я меняю серверы имен только на адреса IPv4, все снова работает.
Есть ли постоянное решение этой проблемы? Обновление версии докера исправит ее?
Или есть какая-то другая причина этой проблемы?
Сетевые настройки команды docker inspect:
"NetworkSettings": {
"Bridge": "",
"EndpointID": "db30701ee55cf8f6b8c9fe42c820434648ed6cca5ca863c60e098f9d4ad825a3",
"Gateway": "172.17.42.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"HairpinMode": false,
"IPAddress": "172.17.0.8",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:08",
"NetworkID": "db3910e86d7f291d5586c23895a67a1140e638afcdbbf5a6b60e10c9bbb85762",
"PortMapping": null,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/4273c53a95b2",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null
},
на хосте ipv6
полностью настроен и команда ping6 работает нормально. но внутри контейнера я вижу ipv6
пустые поля. Есть ли причина, по которой внутри контейнера нет ipv6?
более того :
curl -g 'http://[2400:fc00:854a:aaaa:700d:d110:e593:8d00]'
curl: (7) Failed to connect to 2400:fc00:854a:aaaa:700d:d110:e593:8d00: Network is unreachable
решение1
Внутри контейнеров не работает маршрутизация/работа IPv6, поскольку, как мы видели, внутри них не работает адресация IPv6, а только на уровне хоста.
В соответствии сРуководство пользователя IPv6 — сетевое взаимодействие — IPv6 с Docker
По умолчанию сервер Docker настраивает сеть контейнера только для IPv4. Вы можете включить поддержку двойного стека IPv4/IPv6, запустив демон Docker с флагом --ipv6. Docker настроит мост docker0 с локальным адресом IPv6-канала fe80::1.
По умолчанию созданные контейнеры получат только локальный адрес IPv6. Чтобы назначить глобально маршрутизируемые адреса IPv6 вашим контейнерам, вам необходимо указать подсеть IPv6, из которой будут выбираться адреса. Задайте подсеть IPv6 с помощью параметра --fixed-cidr-v6 при запуске демона Docker:
dockerd --ipv6 --fixed-cidr-v6="2001:db8:1::/64"
Подсеть для контейнеров Docker должна иметь размер не менее /80. Таким образом, адрес IPv6 может заканчиваться MAC-адресом контейнера, и вы предотвратите проблемы с недействительностью кэша соседей NDP на уровне Docker.
С установленным параметром --fixed-cidr-v6 Docker добавит новый маршрут в таблицу маршрутизации. Дальнейшая маршрутизация IPv6 будет включена