Docker-Container kann GitHub-Repository nicht abrufen, Namensauflösung schlägt fehl

Docker-Container kann GitHub-Repository nicht abrufen, Namensauflösung schlägt fehl

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.confDatei 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 ipv6ist es vollständig konfiguriert und der Ping6-Befehl funktioniert einwandfrei. Aber im Container sehe ich ipv6leere 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

verwandte Informationen