Não é possível atualizar / enviar e-mails / buscar temas... Problema com Docker?

Olá,

Nos últimos dias começamos a ter um problema repentino no envio de e-mails… então tentamos atualizar/atualizar sem sucesso (a página de atualização trava e todos os componentes - docker, discourse, plugins - ficam presos em “Verificando nova versão…”) e então tentamos atualizar tudo via root, mas a reconstrução falha, apresentando a seguinte mensagem (entre outras coisas):

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

Nosso host confirmou que não há problemas com a conectividade do servidor, SSL, firewall ou qualquer outra coisa.

Suspeito que seja algo com o docker. Até verifiquei este tópico: Docker sometimes fails to connect to github.com - Installation - Discourse Meta e tentei:

# cd /var/discourse/
# ./launcher enter app
# wget -O - -v https://github.com/discourse/logster.git/ |wc

e obtive o seguinte:

--2025-02-28 09:45:51--  https://github.com/discourse/logster.git
Resolving github.com (github.com)... failed: Temporary failure in name resolution.
wget: unable to resolve host address ‘github.com’
      0       0       0

Alguma ideia de como resolver este problema?

Você está operando em um território especial, como a China continental?

Eu verificaria o DNS no seu host e depois o DNS no seu docker.

verificar DNS no seu host:

resolvectl status|egrep Servers
nslookup github.com

verificar DNS no seu docker

docker exec -it app bash -c "cat /etc/resolv.conf"
docker exec -it app bash -c "wget -O - -v https://github.com/discourse/logster.git/ |wc"
1 curtida

Ok, então:

no DNS do host:

#resolvectl status|egrep Servers
DNS Servers: 8.8.8.8
Fallback DNS Servers: 8.8.8.8
DNS Servers: 8.8.8.8 8.8.4.4
#nslookup github.com
Server: 8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name:   github.com
Address: 140.82.112.3

No DNS do Docker:

#docker exec -it app bash -c "cat /etc/resolv.conf"
# Generated by Docker Engine.
# This file can be edited; Docker Engine will not make further changes once it
# has been modified.

nameserver 8.8.8.8
nameserver 8.8.4.4

# Based on host file: '/etc/resolv.conf' (legacy)
# Overrides: [nameservers]
#docker exec -it app bash -c "wget -O - -v https://github.com/discourse/logster.git/ |wc"
--2025-02-28 12:20:17--  https://github.com/discourse/logster.git/
Resolving github.com (github.com)... failed: Temporary failure in name resolution.
wget: unable to resolve host address ‘github.com’
      0       0       0

P.S.: Nosso host opera no Canadá.

Obrigado… Não faço ideia de como isso pode acontecer, mas não sou um especialista em Docker.

Qual é o sistema operacional do seu host e como você instalou o Discourse? Você usou um pacote fornecido pela empresa de hosting ou uma instalação padrão? (Ou uma instalação de desenvolvimento??) Como você instalou o Docker?

Mas isso tudo funcionava antes, e depois Parou de funcionar, então pode estar relacionado ao Docker. Talvez você possa atualizar sua instalação do Docker??

1 curtida

É uma instalação padrão que tem funcionado muito bem até agora no AlmaLinux nos últimos meses (e antes disso também funcionou bem no CentOS).

Como posso atualizar a instalação do docker (sem a instrução usual de reconstrução com o launcher ou através do site, pois nenhum desses métodos parece estar funcionando)?

Antes de prosseguir, faça um backup (se puder) e baixe uma cópia local. (Talvez tente Mover um site Discourse para outro VPS com rsync)

Tente o seguinte, eles podem dar uma dica:

docker --version
docker run hello-world
1 curtida

Com um pouco de ajuda do ChatGPT, descobri que o problema é a configuração de rede Bridge do Docker ou o que quer que isso signifique.

Já tentei várias correções, mas até agora sem sucesso. Ainda não tentei esta:

Isso é seguro para um ambiente de produção? (mesmo que crie uma breve interrupção)

Tenho medo de que eu não saiba. Confio que você tenha uma cópia de segurança recente e segura. A coisa menos disruptiva a fazer pode ser reiniciar.

1 curtida

Estou apenas postando para atualizar sobre a situação. Foi resolvido com a ajuda do ChatGPT.

Depois de tentar diferentes soluções, esta parte mostrou que havia algo errado com as permissões ou políticas de segurança:

  1. Tente executar um contêiner com a flag --privileged

Isso contorna algumas restrições que podem estar afetando a rede.

docker run --rm --privileged alpine ping -c 4 github.com

Se isso funcionar, sugere um problema de permissões ou política de segurança.

Depois disso, apliquei a próxima sugestão:

  1. Verifique as Regras do iptables Novamente

Como o Docker depende do iptables, vamos confirmar se ele tem as regras de encaminhamento corretas.

Execute:

sudo iptables -t nat -L -v -n | grep -i docker

Se nenhuma regra relacionada ao Docker aparecer, adicione-as manualmente:

sudo iptables -P FORWARD ACCEPT

sudo iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT

sudo iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE

Em seguida, reinicie o Docker:

sudo systemctl restart docker

E teste novamente.

…o que resolveu totalmente. :grin:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.