Docker 容器無法拉取 github repo,名稱解析失敗
我正在使用 docker 1.7 版
centos-6
:docker --version Docker version 1.7.1, build 786b29d/1.7.1
問題是:當
/etc/resolv.conf
文件以某種方式包含具有 ipv6 地址的名稱伺服器時,它無法解析或從 github 提取一些 repos。當我將名稱伺服器更改為僅 IPv4 地址時,它再次起作用。
這個問題有什麼永久的解決辦法嗎?升級docker版本會修復它嗎?
或者這個問題還有其他根本原因嗎?
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
您沒有在容器內獲得任何 IPv6 路由/工作,因為正如我們所見,它們內部沒有 IPv6 定址工作,而僅在主機級別工作。
根據IPv6 使用者指南 - 網路 - IPv6 with Docker
預設情況下,Docker 伺服器僅為 IPv4 配置容器網路。您可以通過執行帶有 –ipv6 標誌的 Docker 守護程序來啟用 IPv4/IPv6 雙棧支持。Docker 將使用 IPv6 連結本地地址 fe80::1 設置網橋 docker0。
預設情況下,創建的容器只會獲得連結本地 IPv6 地址。要將全域可路由的 IPv6 地址分配給您的容器,您必須指定一個 IPv6 子網以從中選擇地址。啟動 Docker 守護程序時通過 –fixed-cidr-v6 參數設置 IPv6 子網:
dockerd –ipv6 –fixed-cidr-v6=“2001:db8:1::/64”
Docker 容器的子網大小至少應為 /80。這樣,IPv6 地址可以以容器的 MAC 地址結尾,並且可以防止 Docker 層中的 NDP 鄰居記憶體失效問題。
使用 –fixed-cidr-v6 參數集,Docker 將向路由表添加新路由。將啟用更多 IPv6 路由