run example compose clean docker apt-get

example - install docker ubuntu 18



Docker build "No se pudo resolver ''archive.ubuntu.com''" apt-get no instala nada (11)

Creo que la respuesta de Matt Carrier es la solución correcta para este problema. Sin embargo, después de implementarlo, aún observé el mismo comportamiento: could not resolve ''archive.ubuntu.com'' .

Esto me llevó a encontrar 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 (el equipo desde el que ejecutaba Docker) estaba usando.

Cómo participé:

  1. Como estaba trabajando en la documentación de Docker, ya tenía una imagen de ejemplo instalada en mi máquina. Pude iniciar un nuevo contenedor para ejecutar esa imagen y crear una nueva sesión de bash en ese contenedor: docker run -it docker/whalesay bash
  2. ¿El contenedor tiene conexión a Internet ?: ping 172.217.4.238 (google.com)
  3. ¿Puede el contenedor resolver nombres de host? ping google.com

En mi caso, el primer ping dio como resultado 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 resolvió bien en el host. Pero, nslookup google.com 8.8.8.8 o nsloookup google.com 8.8.4.4 tiempo de espera.

Luego, encontré los servidores de nombres que mi host estaba usando ejecutando nm-tool (en Ubuntu 14.04). En la línea de los comentarios rápidos, inicié nuevamente la imagen de ejemplo y agregué la dirección IP del servidor de nombres al archivo resolv.conf del contenedor: sudo vi /etc/resolv.conf . Una vez guardado, intenté el ping otra vez ( ping google.com ) ¡y esta vez funcionó!

Tenga en cuenta que los cambios realizados en resolv.conf del contenedor no son persistentes y se perderán en los reinicios del contenedor. En mi caso, la solución más adecuada fue agregar la dirección IP del servidor de nombres de mi red al /etc/default/docker del host.

He intentado ejecutar la compilación de Docker en varios archivos que anteriormente funcionaban anteriormente, que ahora ya no funcionan.

Tan pronto como el archivo Docker incluyó alguna línea que debía instalar el software, fallaba con un mensaje que decía que no se había encontrado 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é ningún software se instalará?


Después de agregar el DNS local dns al archivo docker predeterminado, comenzó a funcionar para mí ... encuentre los pasos a continuación ...

$ nm-tool # (will give you the dns IP)

DNS: 172.168.7.2

$ vim /etc/default/docker # (uncomment the DOCKER_OPTS and add DNS IP) DOCKER_OPTS="--dns 172.168.7.2 --dns 8.8.8.8 --dns 8.8.4.4" $ rm `docker ps --no-trunc -aq` # (remove all the containers to avoid DNS cache) $ docker rmi $(docker images -q) # (remove all the images) $ service docker restart #(restart the docker to pick up dns setting)

Ahora adelante y construye el docker ... :)


Después de mucho dolor de cabeza encontré la respuesta. Could not resolve ''archive.ubuntu.com'' se puede solucionar haciendo los siguientes cambios:

  1. Descomente la siguiente línea en /etc/default/docker
    DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

  2. Reinicie el servicio Docker sudo service docker restart

  3. Elimine cualquier imagen que haya almacenado en caché la configuración DNS no válida.

  4. Compila de nuevo y el problema debe ser resuelto.

El crédito va para Andrew SB


Encontré esta respuesta después de un poco de Googleing. Estoy usando Windows, por lo que algunas de las respuestas anteriores no se aplicaron a mi sistema de archivos.

Básicamente ejecutado:

docker-machine ssh default echo "nameserver 8.8.8.8" > /etc/resolv.conf

Que simplemente sobrescribe el servidor de nombres existente usado con 8.8.8.8 , creo. ¡Funcionó para mí!


Me encuentro con el mismo problema, pero neiter desacomodar / etc / default / docker dns entradas ni editar el /etc/resolv.conf en el contenedor de compilación o el /etc/docker/daemon.json me ayuda.

Pero después de compilar con la opción --network = host, la resolución volvió a estar bien.

docker build --network=host -t my-own-ubuntu-like-image .

Tal vez esto ayude a alguien de nuevo.


Mismo problema para mí (en Ubuntu Xenial).

  • docker run --dns ... para contenedores trabajados.
  • La actualización de las opciones del daemon de docker build para docker build (docker-compose, etc.) no funcionó.

Después de analizar los registros del journalctl -u docker.service ( journalctl -u docker.service ) si se encuentra alguna advertencia acerca del resolvconf incorrecto aplicado.

A continuación, descubrí que nuestros servidores de nombres corporativos se agregaron a las interfaces de red, pero no en resolvconf.

Aplicado 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 docker-compose están funcionando ahora.


Para cualquiera que también tenga este problema, resolví mi problema editando el /etc/default/docker , como lo sugieren otras respuestas y preguntas. Sin embargo, no tenía idea de qué IP usar como DNS.

Solo después de un tiempo me di cuenta de que tenía que ejecutar ifconfig docker en el host para mostrar la dirección IP de la interfaz de red del docker.

docker0 Link encap:Ethernet Endereço de HW 02:42:69:ba:b4:07 inet end.: 172.17.0.1 Bcast:0.0.0.0 Masc:255.255.0.0 endereço inet6: fe80::42:69ff:feba:b407/64 Escopo:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1 pacotes RX:8433 erros:0 descartados:0 excesso:0 quadro:0 Pacotes TX:9876 erros:0 descartados:0 excesso:0 portadora:0 colisões:0 txqueuelen:0 RX bytes:484195 (484.1 KB) TX bytes:24564528 (24.5 MB)

Fue 172.17.0.1 en mi caso. Espero que esto ayude a cualquiera que también tenga este problema.


Solo quería agregar una respuesta tardía para cualquier persona que encuentre este problema en los motores de búsqueda.

NO haga esto: solía tener una opción en / etc / default / docker para establecer iptables=false . Esto fue porque ufw no funcionó (todo se abrió aunque solo se permitieron 3 puertos), así que seguí ciegamente la respuesta a esta pregunta: Firewall no complicado (UFW) no está bloqueando nada al usar Docker y esto, que estaba vinculado en el comentarios

Tengo una comprensión muy baja de las reglas / nat / routing de iptables en general, por lo que podría haber hecho algo irracional.

Resulta que probablemente lo configuré mal y maté la resolución de DNS dentro de mis contenedores. Cuando ejecuté un terminal contenedor interactivo: docker run -i -t ubuntu:14.04 /bin/bash

Tuve estos resultados:

root@6b0d832700db:/# ping google.com ping: unknown host google.com root@6b0d832700db:/# cat /etc/resolv.conf search online.net nameserver 8.8.8.8 nameserver 8.8.4.4 root@6b0d832700db:/# ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=56 time=1.76 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=56 time=1.72 ms

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 DNS de los contenedores.

Ahora estoy deseando volver a habilitar la funcionalidad ufw siguiendo estas instrucciones .


Tengo el mismo problema hoy, acabo de agregar la línea siguiente a / etc / default / docker

DOCKER_OPTS="--dns 172.18.20.13 --dns 172.20.100.29 --dns 8.8.8.8"

y luego reinicié mi computadora portátil.

En mi caso, reiniciar Docker Daemon no es suficiente para mí, tengo que reiniciar mi computadora portátil para que funcione.


Tengo el mismo problema y probé los pasos mencionados, pero parece que ninguno funciona hasta que actualiza la configuración de red.

Los pasos:

  1. Como se mencionó, agregue DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --ip-masq=true" a /etc/default/docker .
  2. Lavar manualmente los contenidos de la tabla PREROUTING utilizando iptables -t nat -F POSTROUTING . Después de ejecutar esto, reinicie la ventana acoplable e inicializará la tabla nat con el nuevo rango de IP.

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4" en /etc/default/docker como sugirió que NO funcionó para mí. Tampoco poner los servidores DNS de mi corporación en ese archivo. Pero, hay otra manera (sigue leyendo).

Primero, verifiquemos el problema:

$ docker run busybox nslookup google.com # takes a long time nslookup: can''t resolve ''google.com'' # <--- appears after a long time Server: 8.8.8.8 Address 1: 8.8.8.8

Si el comando parece bloquearse, pero eventualmente escupe el error "no se puede resolver ''google.com''", entonces tienes el mismo problema que yo.

El comando nslookup 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 . Si nslookup falla, servidores públicos de DNS como 8.8.8.8 pueden ser bloqueados por su empresa (lo cual supongo que es por razones de seguridad).

Uno pensaría que agregar los servidores DNS de su compañía a DOCKER_OPTS en /etc/default/docker debería ser el truco, pero por alguna razón, no funcionó para mí. Describo lo que funcionó para mí a continuación.

SOLUCIÓN :

En el host (estoy usando Ubuntu 16.04), averigüe las direcciones del servidor DNS primario y secundario:

$ nmcli dev show | grep ''IP4.DNS'' IP4.DNS[1]: 10.0.0.2 IP4.DNS[2]: 10.0.0.3

Usando estas direcciones, crea un archivo /etc/docker/daemon.json :

$ sudo su root # cd /etc/docker # touch daemon.json

Pon esto en /etc/docker/daemon.json :

{ "dns": ["10.0.0.2", "10.0.0.3"] }

Salir de la raíz:

# exit

Ahora reinicia el acoplador:

$ sudo service docker restart

VERIFICACIÓN :

Ahora compruebe que agregar el archivo /etc/docker/daemon.json permite resolver ''google.com'' en una dirección IP:

$ docker run busybox nslookup google.com Server: 10.0.0.2 Address 1: 10.0.0.2 Name: google.com Address 1: 2a00:1450:4009:811::200e lhr26s02-in-x200e.1e100.net Address 2: 216.58.198.174 lhr25s10-in-f14.1e100.net

REFERENCIAS :

Basé mi solución en un artículo de Robin Winslow, que merece todo el crédito por la solución. Gracias, Robin!

"Arreglar la configuración de DNS de red de Docker". Robin Winslow. Consultado el 11 de noviembre de 2016. https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/