Tengo una aplicación Rails que quiero implementar usando Docker en un servidor Ubuntu . Ya tengo el Dockerfile para la aplicación configurado, ahora mismo quiero ver la configuración de nginx en su contenedor.
Ejecuté el siguiente comando para iniciar un contenedor nginx en modo interactivo:
docker run -i -t nginx:latest /bin/bash En este momento estoy tratando de instalar el editor nano para ver la configuración de nginx ( nginx.conf ) usando los siguientes comandos:
apt-get update apt-get install nano export TERM=xterm Sin embargo, cuando ejecuto el primer comando apt-get update , aparece el siguiente error:
Err:1 http://security.debian.org/debian-security buster/updates InRelease Temporary failure resolving 'security.debian.org' Err:2 http://deb.debian.org/debian buster InRelease Temporary failure resolving 'deb.debian.org' Err:3 http://deb.debian.org/debian buster-updates InRelease Temporary failure resolving 'deb.debian.org' Reading package lists... Done W: Failed to fetch http://deb.debian.org/debian/dists/buster/InRelease Temporary failure resolving 'deb.debian.org' W: Failed to fetch http://security.debian.org/debian-security/dists/buster/updates/InRelease Temporary failure resolving 'security.debian.org' W: Failed to fetch http://deb.debian.org/debian/dists/buster-updates/InRelease Temporary failure resolving 'deb.debian.org' W: Some index files failed to download. They have been ignored, or old ones used instead.He comprobado muy bien que no tiene nada que ver con la conectividad de red. Necesitaría ayuda. Gracias.
Tuve un problema similar, probé muchas soluciones sugeridas, pero mi problema desapareció después de reiniciar mi VM.
Así es como lo resolví :
Inicie el contenedor docker para la aplicación en modo interactivo, en mi caso es un contenedor nginx :
docker run -i -t nginx:latest /bin/bash Ejecute el siguiente comando para otorgar permiso de read al others rol para el archivo resolv.conf :
chmod o+r /etc/resolv.conf Nota : si tiene este problema en su máquina host (sistema operativo Ubuntu Linux) y no para los contenedores Docker, ejecute el mismo comando agregando sudo en la terminal de la máquina host:
sudo chmod o+r /etc/resolv.confEsfuércese por salir de su terminal interactivo bash una vez que ejecute esto:
exitY luego abra una nueva terminal interactiva de bash y ejecute los comandos nuevamente:
apt-get update apt-get install nano export TERM=xtermTodo debería funcionar bien ahora.
Referencia a esto en Digital Ocean: Error de Apt: falla temporal al resolver 'deb.debian.org'
Eso es todo.
Lo resolví fácilmente a través de:
- docker exec -it nginx bash (Go inside container) - ping google.com (if not working) - exit (Exit from container) - sudo service docker restartConfirme también /etc/sysctl.conf
- net.ipv4.ip_forward = 1sudo sysctl -p /etc/sysctl.conf
Si tiene una VPN en ejecución, deténgala y vuelva a intentarlo. ¡Me resolvió!
Simplemente reinicié la ventana acoplable y esto funcionó para mí.
sudo service docker restart o sudo /etc/init.d/docker restart de la ventana acoplable
Antes de toparse con este problema, la ventana acoplable funcionaba bien. Si nunca tuvo Docker funcionando en primer lugar, probablemente tenga un problema diferente.
Bajo Debian, como root, ejecuté:
/etc/init.d/docker restartEsto resolvió el problema para mí.
Luego compila y ejecuta el contenedor nuevamente.
Tal vez la red en la VM no se comunica con la red predeterminada creada por la ventana acoplable durante la compilación (puente), así que intente con la red "host":
docker build --network host -t [image_name]Tuve el mismo problema y en mi caso fue el control de acceso a archivos.
Utilicé ACL extendidas en la carpeta raíz de la ventana acoplable y no me di cuenta, porque se heredaron de la carpeta anterior (idea estúpida para probar la ventana acoplable en un directorio "borrador" donde los permisos se establecen a través de ACL extendidas).
Esto condujo a la situación de que "/etc/resolv.conf" tenía la configuración "640" dentro del contenedor acoplable en ejecución con un "+" que marcaba las ACL extendidas. Pero la imagen no tenía instaladas ACL extendidas y no podía manejarla.
Lo extraño fue que, por lo que puedo ver, todas las demás herramientas de red funcionaron (por ejemplo, ping ), pero solo apt no pudo acceder a la resolución de DNS.
Después de eliminar las ACL extendidas de la raíz de la ventana acoplable y configurar las ACL habituales, todo funcionó dentro del contenedor en ejecución.
Similar a la respuesta de "Promise Prestion", pero también se resolvió de forma permanente para nuevos contenedores.
Viniendo aquí de un dolor de cabeza de compilación cruzada de docker:
Mientras bifurcaba algunos repositorios, descargué manualmente su carpeta root que contenía cosas confd y las agregué tal como lo hizo el mantenedor original.
ADD root / después de esto, ya no pude apt update .
Descubrí que el permiso de mi carpeta root nombrada era incorrecto. stat -f "%OLp" root reveló que es 700 , pero debe ser 755 para funcionar.
Me ayudó especificar un servidor DNS para contenedores docker.
Cree un archivo /etc/docker/daemon.json con este contenido:
{ "dns": ["8.8.8.8", "8.8.4.4"] }y reinicie el servicio docker:
sudo service docker restartsrc: https://docs.docker.com/engine/install/linux-postinstall/#specify-dns-servers-for-docker
Problema similar, bajo debian. La causa raíz fue una mala regla DOCKER-USER en la cadena iptables
Esas reglas han sido haded
iptables -I DOCKER-USER -i eno1 -j DROP iptables -I DOCKER-USER -s 90.62.xxx.xx/32 -i eno1 -j ACCEPTpor lo tanto, eliminar temporalmente la siguiente regla corrige el punto
iptables -D DOCKER-USER -i eno1 -j DROP