Acabei de instalar o docker no Ubuntu 12.04 a partir deste guia:
http://docs.docker.io/en/latest/installation/ubuntulinux/
e eu tenho isso
➜ ~ sudo docker run -i -t ubuntu / bin / bash
2014/03/26 11:45:17 Erro: abra /etc/resolv.conf: não existe esse arquivo ou diretório
alguma sugestão?
Problema com sua máquina host. Crie /etc/resolv.conf
preencha-o com as informações de DNS apropriadas e tente o comando novamente.
Este não é um bug do Docker, é um problema causado pela ausência de /etc/resolv.conf em seu host. Posso reproduzir o problema quando não há resolv.conf no host.
Por favor, conserte seu sistema Linux.
IMHO o arquivo não é necessário, não é? Portanto, não deve ser sobre um sistema operacional quebrado.
http://man7.org/linux/man-pages/man5/resolv.conf.5.html
Se este arquivo não existir, apenas o servidor de nomes na máquina local será consultado;
Nesse caso, o servidor DNS deve estar em execução em sua máquina local.
Eu enfrento esse problema e parece ser um efeito colateral da configuração do NetworkManager em minha distribuição, o Sabayon Linux.
No meu caso, /etc/resolv.conf é um link simbólico para /etc/resolvconf/run/resolve.conf e só é criado depois que o NetworkManager se conecta a uma rede. Isso faz com que o Docker falhe ao iniciar na inicialização, mas começa bem depois que eu loguei e me conectei a uma rede.
@OOPMan Em seu script de inicialização, você não deveria depender do NetworkManager estar
Também me pergunto se isso deve ser um problema do upstream do Go (especificamente "netgo") - nós realmente verificamos o resolv.conf diretamente ou apenas indiretamente por meio da implementação do netgo?
Percebi que meu problema não tem nada a ver com NM ou Sabayon Linux :-)
Estou executando em um Asus X550CC. No geral, uma máquina decente, mas tem uma ressalva: o hardware Wi-Fi é desabilitado no Linux até você dormir e depois retomar. Isso significa que na inicialização, desconectado de uma LAN com fio, o sistema basicamente decide que não há rede em funcionamento e, portanto, /etc/resolv.conf não contém nada. O Docker não gosta disso e, portanto, falha ao iniciar.
Depois de suspender-retomado, tudo está bem e o Docker é iniciado.
@unclejack @crosbymichael Ainda estou vendo esse problema hoje no docker versão 1.12.6.
Por que /etc/resolv.conf bloqueia a execução de containers docker?
Acho que não houve uma boa resposta sobre isso e, como também estou passando por isso, estou reabrindo. @thaJeztah você poderia pingar os mantenedores da rede? Neste ponto, não entendo por que o início do contêiner é controlado pela rede (temos máquinas isoladas onde não há arquivo resolv.conf, mas queremos iniciar os contêineres de qualquer maneira)
O manual resolv.conf (da glibc) afirma:
If this file does not exist, only the name server on the local
machine will be queried; the domain name is determined from the
hostname and the domain search path is constructed from the domain
name.
Portanto, deve-se assumir que um sistema Linux sem um resolv.conf é um sistema Linux válido.
Outro software, como a lógica de carregamento resolv.conf do DNS de golang, lida com resolv.conf ausente ou inacessível da mesma maneira: https://golang.org/src/net/dnsconfig_unix.go
Além disso, resolv.conf não é necessário em sistemas que usam módulos NSS não libc, como nss-resolve ou winbind, ldap, etc.
/ cc @sanimej
Este bug também impede o uso do docker offline em algumas distribuições.
Tentando consertar em: https://github.com/docker/libnetwork/pull/1847
basta criar um nome de arquivo vazio 'resolv.conf' no local, meu problema resolvido ~
Vejo que a correção para isso foi mesclada por meio de https://github.com/moby/moby/commit/1ddeb11835600127a3319fc0dd3764e57ffbf521 , que será incluído na próxima versão 17.10; https://github.com/docker/docker-ce/blob/17.10/components/engine/vendor/github.com/docker/libnetwork/sandbox_dns_unix.go
fechando, porque isso é resolvido no mestre 👍
Comentários muito úteis
Eu enfrento esse problema e parece ser um efeito colateral da configuração do NetworkManager em minha distribuição, o Sabayon Linux.
No meu caso, /etc/resolv.conf é um link simbólico para /etc/resolvconf/run/resolve.conf e só é criado depois que o NetworkManager se conecta a uma rede. Isso faz com que o Docker falhe ao iniciar na inicialização, mas começa bem depois que eu loguei e me conectei a uma rede.