ubuntu vm retornando ip interno para imagem docker

ubuntu vm retornando ip interno para imagem docker

Eu tenho uma imagem docker em execução em multipass em um host físico. O contêiner docker está tentando se conectar a um serviço em execução no host físico. No entanto, a resolução do DNS informa ao docker que o endereço IP é 127.0.1.1. Acho que a pesquisa de DNS na VM está retornando um endereço IP local, quando um endereço público é necessário:

physical host: culsu (ubuntu 18.04)
    multipass host: promlife (ip: 10.13.31.13) (ubuntu 22.04)
        docker container: prometheus (ip: 172.18.0.9)
            dns lookup of promlife: 127.0.1.1

Acho que o problema pode ser resolvido se o servidor DNS promliferetornar10.13.31.13

Da máquina física:

$ ping promlife
PING promLife (10.13.31.13) 56(84) bytes of data.

Do baile de formatura vm:

$ ping promlife
PING promlife (127.0.1.1) 56(85) bytes of data.

No contêiner do docker:

$ ping promlife
PING promlife (127.0.1.1) 56(85) bytes of data.

Alguém tem alguma opinião sobre o que preciso mudar para que o prometheus resolva o host virtual?

O problema está potencialmente relacionado ao systemd-resolvd?

Obrigado pela ajuda!

Responder1

O endereço 127.0.1.1 é o endereço dos hosts Linux configurados como o endereço para "ele mesmo por nome" em /etc/hosts. Quando você executa ping(ou qualquer outra coisa que use resolução de nomes POSIX), ele usará a nsswitchbiblioteca para examinar o /etc/hostsarquivo e encontrar o significado do nome não totalmente qualificado.

Não sei por que isso acontece de dentro do contêiner - de alguma forma, ele descarrega para a nsswitchbiblioteca host, talvez seja uma coisa do Docker.

De qualquer forma, se você deseja acessar o host Docker de dentro de um contêiner docker, a maneira correta é usar um nome de host especial que o docker resolva automaticamente para o endereço IP do host docker na rede local do contêiner - que é chamado host.docker.internal.

Experimente: ping host.docker.internalde dentro do seu contêiner.

Responder2

Você precisa atualizar a configuração do DNS emvida de baile, você pode editar o arquivo /etc/netplan/netcfg.yaml. Modifique oservidores de nomescampo para apontar para o seu servidor DNS preferido.

network:
  version: 2
  ethernets:
    ens: 
      addresses: [10.13.31.13/24] # Your IP configuration
      gateway4: 10.13.31.1 # Your gateway
      nameservers:
        addresses: [8.8.8.8]  

Após atualizar a configuração, aplique-a.
sudo netplan apply
Reinicie oresolvido pelo systemdserviço para garantir que ele receba as alterações.
sudo systemctl restart systemd-resolved

informação relacionada