Ao usar Dev Containers no Visual Studio Code em um ambiente Linux (como o Debian 13), é comum encontrar problemas de resolução de DNS, especialmente se você utiliza uma configuração de rede local com um Pi-hole e domínios internos como .homelab. Este artigo explica por que isso acontece e como resolver.
Recentemente, enquanto estudava para o curso Getting Started with OpenTelemetry (LFS148) e utilizava o repositório LFS148-code no GitHub, me deparei com o problema de resolução de DNS em minha rede local.
O ambiente de desenvolvimento do curso utiliza Dev Containers. Sempre que eu iniciava o Dev Container, minha configuração de DNS local parava de funcionar. Tenho um Pi-hole que atua como servidor DHCP e DNS para minha rede, resolvendo domínios locais `.homelab`. Ao executar um Dev Container a partir do Visual Studio Code, essa resolução de nomes para de funcionar.


Por que isso acontece?
O problema ocorre porque, por padrão, o Docker gerencia a configuração de rede dos seus containers de forma isolada, sobrescrevendo as configurações de DNS do seu sistema operacional.
- DNS Interno do Docker: Os containers utilizam um resolvedor de DNS interno do Docker (geralmente no endereço 127.0.0.11), em vez de usar as configurações do `/etc/resolv.conf` do seu computador.
- Isolamento de Rede: Como o container não usa o DNS da sua máquina, ele não consegue resolver os domínios personalizados (.homelab) que o seu Pi-hole conhece.
- Alterações no Host (raro): Em alguns casos, o Docker pode até mesmo modificar o arquivo `/etc/resolv.conf` da sua máquina, o que pode causar problemas de DNS mesmo fora dos containers.
A Solução
A forma mais simples e eficaz de resolver o problema é forçar o Dev Container a usar o seu Pi-hole (ou outro servidor de DNS local) para as consultas de DNS.
Para fazer isso, adicione a seguinte configuração ao seu arquivo .devcontainer.json:
{
"runArgs": [
"--dns", "YOUR_PIHOLE_IP"
]
}Com essa configuração, todas as consultas de DNS feitas de dentro do Dev Container serão direcionadas para o seu Pi-hole, garantindo que seus domínios locais `.homelab` sejam resolvidos corretamente.