Após atualização, Docker não consegue se comunicar com o exterior

Acordei esta manhã com relatos de que meu servidor Discourse estava “fora do ar”.

Consegui fazer ssh no servidor sem problemas, notei que algumas atualizações de segurança precisavam ser aplicadas, apliquei-as com apt full-upgrade e reiniciei o servidor com reboot.

Demorou um pouco para voltar, mas quando voltou, verifiquei se o contêiner Docker do Discourse estava em execução. Estranhamente, não havia problema.

Tentei parar e reiniciar com ./launcher app stop e ./launcher app start. Não ajudou.

Tentei fazer um ./launcher app rebuild e obtive o seguinte erro.

fatal: unable to access 'https://github.com/discourse/pups.git/': Could not resolve host: github.com
d1412324832190f43a2d51b5f10c53d6fa671056f91d0be2178d17a5ba1ab692

Sei que isso não é exatamente muito para se basear, mas estou sem ideias. Qualquer sugestão seria muito apreciada.

Obrigado

Isso sugere algum tipo de erro de rede. Talvez o Docker não consiga acessar o mundo exterior?

Alguma ideia de como verificar?

Tente:

docker run --rm -i debian ping -c 1 github.com

Você deve obter algo como:

○ → docker run --rm -i debian ping -c 1 github.com
PING github.com (140.82.113.3) 56(84) bytes of data.
64 bytes from lb-140-82-113-3-iad.github.com (140.82.113.3): icmp_seq=1 ttl=49 time=44.8 ms

--- github.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 44.797/44.797/44.797/0.000 ms

é .. isso está retornando
ping: github.com: Falha temporária na resolução de nome

Não tenho certeza do que mudou. Não faço ideia de como corrigir isso.

Isso funciona de fora do Docker?

Eu consigo acessar o GitHub de fora do Docker.

ping github.com
PING github.com (192.30.255.113) 56(84) bytes of data.
64 bytes from lb-192-30-255-113-sea.github.com (192.30.255.113): icmp_seq=1 ttl=52 time=23.3 ms
64 bytes from lb-192-30-255-113-sea.github.com (192.30.255.113): icmp_seq=2 ttl=52 time=23.3 ms

Tente:

  • reiniciar o Docker
  • docker run --rm -i debian cat /etc/resolv.conf para ver o que está lá

Parece que o Google

# Arquivo resolv.conf(5) dinâmico para o resolvedor glibc(3) gerado pelo resolvconf(8)
#     NÃO EDITE ESTE ARQUIVO MANUALMENTE -- SUAS ALTERAÇÕES SERÃO SOBRESCRITAS
# 127.0.0.53 é o resolvedor stub do systemd-resolved.
# execute "systemd-resolve --status" para ver detalhes sobre os servidores de nomes reais.

nameserver 8.8.8.8
nameserver 8.8.4.4

@supermathie Não tenho certeza se isso tem a ver com o problema, mas em ./launcher logs app vejo:

[Tue 01 Dec 2020 07:07:13 PM UTC] Consulte https://curl.haxx.se/libcurl/c/libcurl-errors.html para o código de erro: 6
[Tue 01 Dec 2020 07:07:13 PM UTC] Não foi possível inicializar a API.
[Tue 01 Dec 2020 07:07:13 PM UTC] Domínios não alterados.
[Tue 01 Dec 2020 07:07:13 PM UTC] Ignorado. Próxima hora de renovação: Sat Dec 26 00:31:17 UTC 2020
[Tue 01 Dec 2020 07:07:13 PM UTC] Adicione '--force' para forçar a renovação.
[Tue 01 Dec 2020 07:07:13 PM UTC] Instalando chave em: /shared/ssl/community.acescentral.com.key
[Tue 01 Dec 2020 07:07:13 PM UTC] Instalando cadeia completa em: /shared/ssl/community.acescentral.com.cer
[Tue 01 Dec 2020 07:07:13 PM UTC] Executando comando de recarga: sv reload nginx
falha: nginx: runsv não está em execução
[Tue 01 Dec 2020 07:07:13 PM UTC] Erro de recarga para :
[Tue 01 Dec 2020 07:07:33 PM UTC] Consulte https://curl.haxx.se/libcurl/c/libcurl-errors.html para o código de erro: 6
[Tue 01 Dec 2020 07:07:34 PM UTC] Não foi possível inicializar a API.
[Tue 01 Dec 2020 07:07:34 PM UTC] Domínios não alterados.
[Tue 01 Dec 2020 07:07:34 PM UTC] Ignorado. Próxima hora de renovação: Sat Dec 26 00:31:20 UTC 2020
[Tue 01 Dec 2020 07:07:34 PM UTC] Adicione '--force' para forçar a renovação.
[Tue 01 Dec 2020 07:07:34 PM UTC] Instalando chave em: /shared/ssl/community.acescentral.com_ecc.key
[Tue 01 Dec 2020 07:07:34 PM UTC] Instalando cadeia completa em: /shared/ssl/community.acescentral.com_ecc.cer
[Tue 01 Dec 2020 07:07:34 PM UTC] Executando comando de recarga: sv reload nginx
falha: nginx: runsv não está em execução
[Tue 01 Dec 2020 07:07:34 PM UTC] Erro de recarga para :
runsvdir iniciado, PID é 458
chgrp: grupo inválido: 'syslog'
ok: run: redis: (pid 473) 0s
ok: run: postgres: (pid 470) 0s
rsyslogd: imklog: não foi possível abrir o log do kernel (/proc/kmsg): Operação não permitida.
rsyslogd: falha na ativação do módulo imklog [v8.1901.0 tente https://www.rsyslog.com/e/2145 ]
pid do supervisor: 471 pid do unicorn: 497

Qual é a versão do seu Docker e como você o instalou? E qual versão do Ubuntu você está usando?

Client:
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.13.8
 Git commit:        afacb8b7f0
 Built:             Wed Oct 14 19:43:43 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.8
  Git commit:       afacb8b7f0
  Built:            Wed Oct 14 16:41:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.3-0ubuntu2.1
  GitCommit:
 runc:
  Version:          spec: 1.0.1-dev
  GitCommit:
 docker-init:
  Version:          0.18.0
  GitCommit:

Franqueza, não me lembro… ele está aqui há muito tempo. Atualizei o Ubuntu esta manhã, conforme descrito acima

Ubuntu 20.04.1 LTS

Após reiniciar o Docker, o comando ping funciona?

Não, o mesmo erro.

ping: github.com: Falha temporária na resolução de nome

Outro ponto aleatório…

Meu servidor Discourse está em community.mydomain.com.
Tenho um servidor WordPress em mydomain.com.
Ontem configurei um servidor Rocket.Chat em chat.mydomain.com.

Registrei chat.mydomain.com com o Let’s Encrypt.
Os servidores WordPress e Rocket.Chat estão funcionando corretamente.

Não tenho certeza se isso tem a ver com esse problema, mas só queria ter certeza de que não estou deixando passar nada.

Posso tentar remover e reinstalar o Docker; é difícil adivinhar exatamente o que está acontecendo aqui e por que o Docker quebrou.

Antes de fazer qualquer coisa, certifique-se de ter um backup dos seus dados (seja um backup do Discourse ou, pelo menos, do PostgreSQL e dos uploads). Faça uma imagem da VM se puder.

Removi completamente o Docker e reinstalei.

O problema persiste.

Isso é frustrante.

Seu servidor consegue alcançar o DNS do Google, ou seja, ping 8.8.8.8?

Sem problemas no servidor

ping -c 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=2.72 ms

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 2.720/2.720/2.720/0.000 ms

Sem sorte no Docker

docker run --rm -i debian ping -c 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

Sinceramente, acho que a melhor abordagem neste momento é reinstalar e copiar seus dados.

Você tem um sistema quebrado por Motivos Misteriosos, e o processo de instalação é bastante rápido. Provavelmente, é o melhor uso do seu tempo.