업그레이드 후 Docker가 외부와 통신하지 못합니다

재설치하고 백업에서 복구하는 것이 유일한 해결책이었습니다.

밤중에 정확히 무엇이 변경되었는지는 모르겠지만, 이제 해결되었습니다.

지원해 주셔서 감사합니다.

이 문제는 새로운 것이 아닙니다. 백업, 재설치 및 복구를 통해 문제를 해결한 것으로 보입니다.

참고로, 다음 링크에 설명된 대로 문제를 우회했습니다: Could not resolve host: github.com for SamSaffron/pups.git - #9 by rcauvin

참고로, 저도 동일한 문제를 겪고 있는데 @rcauvin 님의 제안은 저에게는 효과가 없었습니다.

같은 문제에 대한 제 게시글은 여기에서 확인하실 수 있습니다: ./discourse-setup: could not resolve host: github.com - #2 by supermathie

저도 같은 문제를 겪고 있습니다. 다만 클린한 Digital Ocean Droplet에서 이 튜토리얼을 따라 진행했을 때입니다. Docker는 Discourse 설치 프로그램에 의해 설치됩니다. 이 문제를 해결하는 방법을 모르겠습니다. 위의 해결책도 저에게는 작동하지 않았습니다.

firewall-cmd --zone=public --add-masquerade --permanent

수정: @rcauvin님의 해결책을 적용한 후 이 게시물의 firewall-cmd --zone=public --add-masquerade --permanent 명령을 실행하니 작동하게 되었습니다.

최근 DigitalOcean의 Ubuntu 20에서 발견한 점이 하나 있습니다. 호스트 머신이 도메인 이름 서버를 Docker에 제공하지 않는다는 것입니다. 이는 방화벽 문제로는 볼 수 없으며, Ubuntu 20은 기본적으로 방화벽이 활성화되어 있지 않기 때문입니다.

해결하려면 먼저 cat /run/systemd/resolve/resolv.conf 명령으로 DO의 네임서버를 확인하세요. 다음과 같은 내용을 볼 수 있습니다…

nameserver 1.2.3.4
nameserver 9.8.7.6

다음으로, nano /etc/docker/daemon.json 명령으로 daemon.json 파일을 편집하여 해당 네임서버를(필요에 따라 Google DNS(8.8.8.8)도 포함하여) Docker에서 사용할 수 있도록 설정합니다.

{
    "dns": ["<위의 ip1>", "<위의 ip2>", "8.8.8.8"]
}

그 다음 Docker를 재시작하고 다시 빌드하세요.

systemctl restart docker
/var/discourse/launcher rebuild app

저희 설치 환경에는 해당 파일이 존재하지 않습니다. 처음부터 새로 생성하셨나요, 아니면 이미 해당 파일이 설치 환경에 있었나요?

해당 경로에 존재하는 유일한 파일은 key.json입니다.

파일을 처음부터 새로 만들었습니다.