He intentado ejecutar la compilación de Docker en varios archivos que antes funcionaban, que ahora ya no funcionan.
Tan pronto como el archivo Docker incluyera cualquier línea que fuera a instalar software, fallaría con un mensaje que decía que no se encontró el paquete.
RUN apt-get -y install supervisor nodejs npm
El mensaje común que apareció en los registros fue
Could not resolve 'archive.ubuntu.com'
¿Alguna idea de por qué no se instala ningún software?
newgrp docker
lugar de hacer un cierre de sesión completo y luego inicie sesión después de darmesudo usermod -aG docker myuserid
... es un caso de borde para seguro, sin embargo, sucedeRespuestas:
Dejar
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
de comentar/etc/default/docker
como Matt Carrier sugirió NO funcionó para mí. Tampoco poner los servidores DNS de mi empresa en ese archivo. Pero, hay otra forma (sigue leyendo).Primero, verifiquemos el problema:
Si el comando parece bloquearse, pero finalmente escupe el error "no se puede resolver 'google.com'", entonces tienes el mismo problema que yo.
El
nslookup
comando consulta el servidor DNS 8.8.8.8 para convertir la dirección de texto de 'google.com' en una dirección IP. Irónicamente, 8.8.8.8 es el servidor DNS público de Google . Sinslookup
falla, los servidores DNS públicos como 8.8.8.8 podrían ser bloqueados por su empresa (lo que supongo que es por razones de seguridad).Se podría pensar que la adición de servidores DNS de su empresa a
DOCKER_OPTS
en/etc/default/docker
debe hacer el truco, pero por alguna razón, no funcionó para mí. A continuación, describo lo que funcionó para mí.SOLUCION :
En el host (estoy usando Ubuntu 16.04), averigüe las direcciones del servidor DNS primario y secundario:
Con estas direcciones, cree un archivo
/etc/docker/daemon.json
:Pon esto en
/etc/docker/daemon.json
:Salir de la raíz:
Ahora reinicie la ventana acoplable:
VERIFICACION :
Ahora verifique que agregar el
/etc/docker/daemon.json
archivo le permite resolver 'google.com' en una dirección IP:REFERENCIAS :
Basé mi solución en un artículo de Robin Winslow, quien merece todo el crédito por la solución. ¡Gracias, Robin!
"Corrige la configuración de DNS de red de Docker". Robin Winslow. Consultado el 9 de noviembre de 2016. https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
fuente
nslookup google.com 8.8.8.8
mi caso, es así que recibí este errorconnection timed out; no servers could be reached
/etc/default/docker
que no funcionó para algunas personas es (citando un comentario del archivo)# THIS FILE DOES NOT APPLY TO SYSTEMD
Después de mucho dolor de cabeza encontré la respuesta.
Could not resolve 'archive.ubuntu.com'
se puede solucionar realizando los siguientes cambios:Descomente la siguiente línea en
/etc/default/docker
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
Reinicie el servicio Docker
sudo service docker restart
Elimine cualquier imagen que haya almacenado en caché la configuración de DNS no válida.
El crédito es para Andrew SB
fuente
docker build --no-cache=true ...
docker build --no-cache=true -t docker-whale .
pero nada diferente parece haber sucedido.Me encuentro con el mismo problema, pero tampoco descomentar las entradas de / etc / default / docker dns ni editar /etc/resolv.conf en el contenedor de compilación o /etc/docker/daemon.json me ayuda.
Pero después de compilar con la opción --network = host, la resolución estuvo bien nuevamente.
Quizás esto ayude a alguien de nuevo.
fuente
Creo que la respuesta de Matt Carrier es la solución correcta para este problema. Sin embargo, después de su aplicación, lo que aún se observa el mismo comportamiento:
could not resolve 'archive.ubuntu.com'
.Esto me llevó a descubrir finalmente que la red a la que estaba conectado estaba bloqueando el DNS público. La solución a este problema fue configurar mi contenedor Docker para usar el mismo servidor de nombres que mi host (la máquina desde la que estaba ejecutando Docker) estaba usando.
Cómo clasifiqué:
docker run -it docker/whalesay bash
ping 172.217.4.238
(google.com)ping google.com
En mi caso, el primero
ping
resultó en respuestas, el segundo no.Cómo lo arreglé:
Una vez que descubrí que el DNS no funcionaba dentro del contenedor, verifiqué que podía duplicar el mismo comportamiento en el host.
nslookup google.com
resuelto muy bien en el anfitrión. Pero,nslookup google.com 8.8.8.8
o sensloookup google.com 8.8.4.4
agotó el tiempo.A continuación, encontré el (los) servidor (es) de nombres que mi host estaba usando al ejecutar
nm-tool
(en Ubuntu 14.04). En la línea de retroalimentación rápida, empecé la imagen de ejemplo de nuevo, y añadí la dirección IP del servidor de nombres de archivo resolv.conf del contenedor:sudo vi /etc/resolv.conf
. Una vez guardado, intenté hacer ping nuevamente (ping google.com
) y esta vez funcionó.Tenga en cuenta que los cambios realizados en el archivo resolv.conf del contenedor no son persistentes y se perderán al reiniciar el contenedor. En mi caso, la solución más apropiada fue agregar la dirección IP del servidor de nombres de mi red al
/etc/default/docker
archivo del host .fuente
nmcli device show <interfacename> | grep IP4.DNS
(Ubuntu> = 15) ynmcli dev list iface <interfacename> | grep IP4
(Ubuntu <15). Crédito: Marty Fried .Después de agregar la ip dns local al archivo de Docker predeterminado, comenzó a funcionar para mí ... Por favor, encuentre los pasos a continuación ...
Ahora adelante y construye la ventana acoplable ... :)
fuente
Para cualquiera que también tenga este problema, resolví mi problema editando el
/etc/default/docker
archivo, como lo sugieren otras respuestas y preguntas. Sin embargo, no tenía idea de qué IP usar como DNS.Fue solo después de un tiempo que descubrí que tenía que ejecutar
ifconfig docker
en el host para mostrar la IP de la interfaz de red de la ventana acoplable.Fue
172.17.0.1
en mi caso. Espero que esto ayude a cualquiera que también tenga este problema.fuente
ifconfig docker0
Encontré esta respuesta después de buscar en Google. Estoy usando Windows, por lo que algunas de las respuestas anteriores no se aplicaron a mi sistema de archivos.
Básicamente ejecutar:
Lo que simplemente sobrescribe el servidor de nombres existente utilizado con
8.8.8.8
, creo. ¡Funcionó para mí!Según algunos comentarios, es posible que deba ser root. Para hacer eso, emita
sudo -i
.fuente
ssh
no existe?sudo -i
una vez que estés enSolo quería agregar una respuesta tardía para cualquiera que se encuentre con este problema en los motores de búsqueda.
NO hagas esto: Solía tener una opción en / etc / default / docker para configurar
iptables=false
. Esto se debió a que ufw no funcionó (todo se abrió a pesar de que solo se permitieron 3 puertos), así que seguí ciegamente la respuesta a esta pregunta: Uncomplicated Firewall (UFW) no bloquea nada cuando se usa Docker y esto, que estaba vinculado en el comentariosTengo una comprensión muy baja de las reglas de iptables / nat / enrutamiento en general, por lo que podría haber hecho algo irracional.
Resulta que probablemente lo configuré mal y eliminé la resolución de DNS dentro de mis contenedores. Cuando ejecuté una terminal de contenedores interactiva:
docker run -i -t ubuntu:14.04 /bin/bash
Tuve estos resultados:
Revertir toda mi configuración de ufw (before.rules), deshabilitar ufw y eliminar iptables = false de / etc / default / docker restauró la funcionalidad de resolución de DNS de los contenedores.
Ahora espero volver a habilitar la funcionalidad de ufw siguiendo estas instrucciones .
fuente
Tengo el mismo problema y probé los pasos mencionados, pero parece que ninguno funciona hasta que actualice la configuración de red.
Los pasos:
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --ip-masq=true"
a/etc/default/docker
.iptables -t nat -F POSTROUTING
. Después de ejecutar esto, reinicie la ventana acoplable y se inicializará la tabla nat con el nuevo rango de IP.fuente
El mismo problema para mí (en Ubuntu Xenial).
docker run --dns ...
para contenedores trabajados.docker build
(docker-compose, etc.) no funcionó.Después de analizar los registros de la ventana acoplable (
journalctl -u docker.service
) si se encuentra alguna advertencia sobre la aplicación incorrecta de resolvconf.Después de eso, descubrí que nuestros servidores de nombres corporativos se agregaron a las interfaces de red, pero no en resolvconf.
Apliqué esta solución ¿Cómo configuro mi DNS estático en las interfaces? (askubuntu) , es decir, agregar servidores de nombres a
/etc/resolvconf/resolv.conf.d/tail
Después de actualizar resolvconf (o reiniciar).
bash docker run --rm busybox nslookup google.com
funcionó al instante.
Todas mis compilaciones de docker-compose están funcionando ahora.
fuente
Tengo el mismo problema hoy, acabo de agregar la línea a continuación a / etc / default / docker
y luego reinicié mi computadora portátil.
En mi caso, reiniciar el demonio de la ventana acoplable no es suficiente para mí, tengo que reiniciar mi computadora portátil para que funcione.
fuente
Antes de dedicar demasiado tiempo a cualquiera de las otras soluciones, simplemente reinicie Docker y vuelva a intentarlo.
Resolvió el problema para mí, usando Docker Desktop para Windows en Windows 10.
fuente
También he luchado durante algún tiempo con esto, pero aquí está lo que me resolvió
Ubuntu 16.04 x64
. Espero que también le ahorre tiempo a alguien.En
/etc/NetworkManager/NetworkManager.conf
: comentar#dns=dnsmasq
Crear (o modificar)
/etc/docker/daemon.json
:sudo service docker restart
fuente
En mi sistema (
macOS High Sierra 10.13.6
conDocker 2.1.0.1
) esto se debió a un proxy corporativo.Resolví esto en dos pasos:
Preferences>Proxies
Agregue la misma configuración a su config.json dentro
~/.docker/config.json
como:fuente