Quiero configurar mi resin/rpi-raspbian:jessie
contenedor /etc/resolv.conf
para:
nameserver 208.67.222.222
nameserver 208.67.220.220
Mi Dockerfile tiene la siguiente línea:
ADD resolv.conf /etc/resolv.conf
Este archivo agregado contiene los servidores de nombres correctos.
Mi host Docker /etc/resolv.conf
contiene la información correcta.
Estoy ejecutando el contenedor de esta manera:
docker run -itd --cap-add=NET_ADMIN --device /dev/net/tun \
-v /home/pi/share/ovpn:/ovpn \
--privileged --network=internet_disabled --name vpn-client \
--dns=208.67.222.222 \
openvpn-client_nat-gateway /bin/bash
A pesar de todo esto, el contenedor da este resultado:
root@642b0f4716ba:/# cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0
Es solo después de cambiar el resolv.conf manualmente desde el contenedor (o con Docker Exec) que se ve bien.
Prefiero evitar tener que arreglarlo con un comando exec. Alguien tiene una idea de lo que está pasando aquí?
Respuestas:
AFAIK, Docker anula algunos archivos en una imagen cuando se inicia , incluso si fueron AGREGADOS en Dockerfile. Esto seguramente incluye
/etc/hosts
, y lo más probable es que/etc/resolv.conf
también ocurra lo mismo . Aparentemente, esto se usa para construir correctamente la red "interna" predeterminada de Docker (para que las imágenes se vean entre sí, pero no para el host, etc.) Si está realmente seguro de que desea anular / modificar algunos de esos archivos, creo que debe hacer eso como parte de las acciones de tiempo de ejecución, es decir, como parte de laCMD
línea. Por ejemplo:fuente
/etc/resolv.conf
se copia del host cuando se inicia un contenedor.Como puedo ver, está utilizando una
user-defined networks
versión de Docker Engine> = 1.10. Entonces, de la documentación oficial del motor de Docker sobreEmbedded DNS server in user-defined networks
:Su dns tiene que funcionar, pero no lo verá en ningún archivo de configuración.
Referencias .
fuente
He resuelto el problema si es la aplicación web para contenedores en Azure.
Hay 2 contenedores mate . Kudu y el anfitrión
Pasos
1.Instale el ssh desde su archivo docker (también incluya una configuración sshd)
2.cree un containerstart.sh (que actualiza resolv.conf)
3. Establezca el punto de entrada dentro de allí
Ahora el host resolv.conf se actualiza y puede usar cualquier dns que desee
PD: Si no puede recoger el DNS personalizado en la red, no se preocupe. Nosotros tampoco podríamos. Es posible que deba reiniciar si está utilizando un entorno ASE
fuente