Quero definir meu resin/rpi-raspbian:jessie
contêiner /etc/resolv.conf
para:
nameserver 208.67.222.222
nameserver 208.67.220.220
Meu Dockerfile possui a seguinte linha:
ADD resolv.conf /etc/resolv.conf
Este arquivo adicionado contém os servidores de nomes corretos.
Meu host do Docker /etc/resolv.conf
contém as informações corretas.
Estou executando o contêiner assim:
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
Apesar de tudo isso, o contêiner fornece esta saída:
root@642b0f4716ba:/# cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0
Somente depois de alterar o resolv.conf manualmente de dentro do contêiner (ou com o executor do docker) é que ele parece certo.
Prefiro evitar corrigi-lo com um comando exec. Alguém tem uma idéia do que está acontecendo aqui?
Respostas:
AFAIK, a janela de encaixe substitui alguns arquivos em uma imagem quando ela é iniciada , mesmo se eles foram adicionados ao Dockerfile. Isso com certeza inclui
/etc/hosts
, e provavelmente o mesmo acontece/etc/resolv.conf
também. Aparentemente, isso é usado para criar adequadamente a rede "interna" padrão do Docker (para que as imagens se vejam, mas não o host etc.). Se você realmente tem certeza de que deseja substituir / modificar alguns desses arquivos, acredito que você deve faça isso como parte das ações de tempo de execução, como parte daCMD
linha. Por exemplo:fonte
/etc/resolv.conf
é copiado do host quando um contêiner é iniciado.Como posso ver, você está usando a
user-defined networks
versão do Docker Engine> = 1.10. Portanto, a partir da documentação oficial do docker engine sobreEmbedded DNS server in user-defined networks
:Seu DNS precisa funcionar, mas você não verá nenhum arquivo de configuração.
Referências .
fonte
Resolvi o problema se for o aplicativo Web de contêineres no Azure.
Existem 2 recipientes mate . Kudu e o anfitrião
Passos
1.Instale o ssh no seu arquivo docker (inclua também uma configuração sshd)
2. crie um Containerstart.sh (que atualiza o resolv.conf)
3. Defina o ponto de entrada lá dentro
Agora o host resolv.conf é atualizado e você pode usar qualquer DNS que desejar
PS: Se você não conseguir pegar o DNS personalizado na rede, não se preocupe. Nós também não. Pode ser necessário reiniciar se você estiver usando um ambiente ASE
fonte