
Ich verwende Docker Version 1.7 auf centos-6
:
docker --version
Docker version 1.7.1, build 786b29d/1.7.1
Das Problem ist: Wenn die /etc/resolv.conf
Datei irgendwie Nameserver mit IPv6-Adressen enthält, kann sie einige Repos nicht auflösen oder von GitHub abrufen.
wenn ich die Nameserver nur auf IPv4-Adressen ändere, funktioniert es wieder.
Gibt es eine dauerhafte Lösung für dieses Problem? Wird das Problem durch ein Upgrade der Docker-Version behoben?
Oder gibt es eine andere Ursache für dieses Problem?
Die Netzwerkeinstellungen des Docker-Inspect-Befehls:
"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
},
auf dem Host ipv6
ist es vollständig konfiguriert und der Ping6-Befehl funktioniert einwandfrei. Aber im Container sehe ich ipv6
leere Felder. Gibt es einen Grund, warum im Container kein IPv6 vorhanden ist?
darüber hinaus :
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
Antwort1
Sie erhalten kein IPv6-Routing/-Funktionieren innerhalb der Container, da, wie wir gesehen haben, darin keine IPv6-Adressierung funktioniert, sondern nur auf Hostebene.
Gemäß derIPv6-Benutzerhandbuch - Netzwerk - IPv6 mit Docker
Standardmäßig konfiguriert der Docker-Server das Containernetzwerk nur für IPv4. Sie können die Dual-Stack-Unterstützung für IPv4/IPv6 aktivieren, indem Sie den Docker-Daemon mit dem Flag --ipv6 ausführen. Docker richtet die Bridge docker0 mit der IPv6-Link-Local-Adresse fe80::1 ein.
Standardmäßig erhalten erstellte Container nur eine link-lokale IPv6-Adresse. Um Ihren Containern global routbare IPv6-Adressen zuzuweisen, müssen Sie ein IPv6-Subnetz angeben, aus dem die Adressen ausgewählt werden. Legen Sie das IPv6-Subnetz über den Parameter --fixed-cidr-v6 fest, wenn Sie den Docker-Daemon starten:
dockerd --ipv6 --fixed-cidr-v6="2001:db8:1::/64"
Das Subnetz für Docker-Container sollte mindestens eine Größe von /80 haben. Auf diese Weise kann eine IPv6-Adresse mit der MAC-Adresse des Containers enden und Sie verhindern Ungültigkeitsprobleme des NDP-Nachbarcaches in der Docker-Schicht.
Mit dem Parameter --fixed-cidr-v6 fügt Docker der Routing-Tabelle eine neue Route hinzu. Weiteres IPv6-Routing wird aktiviert