
Estoy usando la versión 1.7 de Docker en centos-6
:
docker --version
Docker version 1.7.1, build 786b29d/1.7.1
El problema es: cuando de alguna manera el /etc/resolv.conf
archivo contiene servidores de nombres con direcciones ipv6, no puede resolver ni extraer algunos repositorios de github.
cuando cambio los servidores de nombres a direcciones IPv4 únicamente, vuelve a funcionar.
¿Existe alguna solución permanente a este problema? ¿La actualización de la versión de Docker lo solucionará?
¿O hay alguna otra causa raíz de este problema?
La configuración de red del comando 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
},
en el host, ipv6
está completamente configurado y el comando ping6 funciona bien. pero dentro del contenedor veo ipv6
campos en blanco. ¿Alguna razón por la que no hay ipv6 dentro del contenedor?
además :
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
Respuesta1
No obtiene ningún enrutamiento/funcionamiento IPv6 dentro de los contenedores porque, como lo hemos visto, no hay ningún direccionamiento IPv6 funcionando dentro de ellos, sino solo a nivel de host.
Según elGuía del usuario de IPv6 - redes - IPv6 con Docker
De forma predeterminada, el servidor Docker configura la red de contenedores solo para IPv4. Puede habilitar la compatibilidad con IPv4/IPv6 dualstack ejecutando el demonio Docker con el indicador --ipv6. Docker configurará el puente docker0 con la dirección local de enlace IPv6 fe80::1.
De forma predeterminada, los contenedores que se crean solo obtendrán una dirección IPv6 de enlace local. Para asignar direcciones IPv6 enrutables globalmente a sus contenedores, debe especificar una subred IPv6 para elegir las direcciones. Configure la subred IPv6 mediante el parámetro --fixed-cidr-v6 al iniciar el demonio Docker:
dockerd --ipv6 --fixed-cidr-v6="2001:db8:1::/64"
La subred para contenedores Docker debe tener al menos un tamaño de /80. De esta manera, una dirección IPv6 puede terminar con la dirección MAC del contenedor y se evitan problemas de invalidación de la caché del vecino NDP en la capa Docker.
Con el conjunto de parámetros --fixed-cidr-v6, Docker agregará una nueva ruta a la tabla de enrutamiento. Se habilitará más enrutamiento IPv6