O contêiner do Docker não pode extrair o repositório do github, a resolução de nomes falha

1

Estou usando a versão 1.7 do docker em centos-6 :

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

O problema é: quando de alguma forma o arquivo /etc/resolv.conf contém servidores de nomes com endereços ipv6, então ele não pode resolver ou extrair alguns repositórios do github.

quando altero apenas servidores de nomes para endereços IPv4, funciona novamente.

Existe alguma solução permanente para este problema? O upgrade da versão do docker consertará isso?

Ou há alguma outra causa raiz deste problema?

As configurações de rede do comando docker inspecionam:

"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
},

no host, ipv6 está totalmente configurado e o comando ping6 funciona bem. mas dentro do container eu vejo ipv6 campos em branco. Alguma razão pela qual não há ipv6 dentro do container?

além disso:

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
    
por Ijaz Ahmad Khan 03.11.2016 / 13:31

1 resposta

2

Você não está obtendo nenhum roteamento / trabalho IPv6 dentro dos contêineres porque, como vimos, não há endereçamento IPv6 funcionando dentro deles, mas apenas no nível do host.

De acordo com o guia do usuário do IPv6 - rede - IPv6 com o Docker

By default, the Docker server configures the container network for IPv4 only. You can enable IPv4/IPv6 dualstack support by running the Docker daemon with the --ipv6 flag. Docker will set up the bridge docker0 with the IPv6 link-local address fe80::1.

By default, containers that are created will only get a link-local IPv6 address. To assign globally routable IPv6 addresses to your containers you have to specify an IPv6 subnet to pick the addresses from. Set the IPv6 subnet via the --fixed-cidr-v6 parameter when starting Docker daemon:

dockerd --ipv6 --fixed-cidr-v6="2001:db8:1::/64"

The subnet for Docker containers should at least have a size of /80. This way an IPv6 address can end with the container’s MAC address and you prevent NDP neighbor cache invalidation issues in the Docker layer.

With the --fixed-cidr-v6 parameter set Docker will add a new route to the routing table. Further IPv6 routing will be enabled

    
por 03.11.2016 / 14:25