Je veux régler mon resin/rpi-raspbian:jessie
conteneur /etc/resolv.conf
sur:
nameserver 208.67.222.222
nameserver 208.67.220.220
Mon Dockerfile a la ligne suivante:
ADD resolv.conf /etc/resolv.conf
Ce fichier ajouté contient les serveurs de noms corrects.
L'hôte de mon Docker /etc/resolv.conf
contient les informations correctes.
J'exécute le conteneur comme ceci:
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
Malgré tout cela, le conteneur donne cette sortie:
root@642b0f4716ba:/# cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0
Ce n'est qu'après avoir modifié manuellement le fichier resolv.conf depuis le conteneur (ou avec Docker Exec) qu'il semble correct.
Je préfère éviter d'avoir à le réparer avec une commande exec. Quelqu'un a une idée de ce qui se passe ici?
Réponses:
AFAIK, docker remplace certains fichiers dans une image au démarrage , même s'ils ont été AJOUTÉS dans Dockerfile. Cela inclut à coup sûr
/etc/hosts
, et très probablement la même chose se produit/etc/resolv.conf
aussi. Ceci est apparemment utilisé pour construire correctement le réseau "interne" par défaut de Docker (pour que les images se voient, mais pas l'hôte, etc.) Si vous êtes vraiment sûr de vouloir remplacer / modifier certains de ces fichiers, je crois que vous devez faites cela dans le cadre des actions d'exécution, c'est-à-dire dans le cadre de laCMD
ligne. Par exemple:la source
/etc/resolv.conf
est copié à partir de l'hôte lors du démarrage d'un conteneur.Comme je peux le voir, vous utilisez la
user-defined networks
version du moteur Docker> = 1.10. Donc, à partir de la documentation officielle du moteur docker surEmbedded DNS server in user-defined networks
:Votre DNS doit fonctionner, mais vous ne le verrez dans aucun fichier de configuration.
Références .
la source
J'ai résolu le problème s'il s'agit de l'application Web pour les conteneurs dans Azure.
Il y a 2 conteneurs mate . Kudu et l'hôte
Pas
1. installez le ssh à partir de votre fichier docker (incluez également une configuration sshd)
2. créer un containerstart.sh (qui met à jour le resolv.conf)
3.Définissez le point d'entrée à l'intérieur
L'hôte resolv.conf est maintenant mis à jour et vous pouvez utiliser tous les DNS que vous désirez
PS: Si vous ne pouvez pas récupérer le DNS personnalisé sur le réseau, ne vous inquiétez pas. Nous non plus. Pourrait avoir besoin de réinitialiser si vous utilisez un environnement ASE
la source