Dockerコンテナがgithubリポジトリを取得できないため、名前解決が失敗します。

Dockerコンテナがgithubリポジトリを取得できないため、名前解決が失敗します。

私はドッカーバージョン1.7を使用していますcentos-6

docker --version
Docker version 1.7.1, build 786b29d/1.7.1

問題は、/etc/resolv.confファイルにipv6アドレスを持つネームサーバーが含まれていると、githubが一部のリポジトリを確認またはインポートできないことです。

ネームサーバーをIPv4アドレスにのみ変更したところ、再び機能しました。

この問題に対する永久的な解決策はありますか? Dockerバージョンをアップグレードすると、この問題を解決できますか?

それともこの問題のもう一つの根本的な原因はありますか?

docker は、次のコマンドでネットワーク設定を確認します。

"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としてのみ構成します。 --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 ルーティングがイネーブルになります。

関連情報