アップグレード/メール送信/テーマ取得ができない... Dockerの問題?

こんにちは。

ここ数日、突然メール送信に問題が発生し始めました。その後、成功せずにアップグレード/更新を試みましたが(更新ページがハングし、すべてのコンポーネント - docker、discourse、プラグイン - が「新しいバージョンを確認中…」でスタックします)、その後、root経由ですべてを更新しようとしましたが、再構築が失敗し、(他のことの中でも)次のメッセージが表示されます。

fatal: 'https://github.com/discourse/discourse.git/' にアクセスできません: ホスト名を解決できません: github.com`

ホストは、サーバー接続、SSL、ファイアウォール、またはその他の問題がないことを確認しました。

Dockerに何か問題があるのではないかと疑っています。このトピックも確認しました: Docker sometimes fails to connect to github.com - Installation - Discourse Meta そして試しました:

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

そして次の結果を得ました:

--2025-02-28 09:45:51--  https://github.com/discourse/logster.git
github.com (github.com) を解決しています... 一時的な名前解決の失敗。
wget: ホストアドレス 'github.com' を解決できません
      0       0       0

この問題に対処する方法について何かアイデアはありますか?

中国本土のような特別地域で運用していますか?

ホストのDNSを確認してから、Docker内のDNSを確認することをお勧めします。

ホストでDNSを確認する:

resolvectl status|egrep Servers
nslookup github.com

Docker内でDNSを確認する:

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

承知しました。

ホストのDNS:

#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

DockerのDNS:

#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

追伸:ホストはカナダで稼働しています。

ありがとうございます… これがどう起こるのか全く見当もつきませんが、私はDockerの専門家ではありません。

ホストOSは何ですか?そして、Discourseをどうやってインストールしましたか? ホスティング会社が提供したパッケージを使いましたか、それとも標準のインストールですか?(それとも開発者向けのインストール?)Dockerはどうやってインストールしましたか?

以前はすべて動作していたのに、突然動かなくなったので、Dockerに関連している可能性があります。もしかしたらDockerのインストールを更新してみると良いかもしれません??

「いいね!」 1

AlmaLinux ではここ数ヶ月、そしてそれ以前は CentOS でも問題なく動作していた標準的なインストールです。

Docker のインストールを更新するにはどうすればよいですか(通常のリビルド手順やウェブサイト経由ではなく、これらの方法は機能していないようです)?

続行する前に、バックアップ(可能な場合)を取得し、ローカルコピーをダウンロードしてください。(おそらくDiscourseサイトをrsyncを使用して別のVPSに移動するを試してください)

これらを試してみてください。ヒントが得られるかもしれません。

docker --version
docker run hello-world
「いいね!」 1

ChatGPTの助けを借りて、問題はDockerのブリッジネットワーク設定、またはそれが何を意味するのかにあることがわかりました。

いくつかの修正を試しましたが、今のところ成功していません。まだこれを試していません。

これは本番環境で安全ですか?(短いダウンタイムが発生する場合でも)

恐れ入りますが、わかりません。最近の安全なバックアップがあることを信じています。最も損害の少ない方法は再起動かもしれません。

「いいね!」 1

状況を更新するために投稿しています。ChatGPTの助けで解決しました。

さまざまな解決策を試した後、この部分で権限またはセキュリティポリシーに問題があることが示されました。

  1. --privileged フラグを使用してコンテナを実行してみる

これにより、ネットワークに影響を与える可能性のある一部の制限が回避されます。

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

これが機能する場合、権限またはセキュリティポリシーの問題を示唆しています。

その後、次の提案を適用しました。

  1. iptables ルールを再度確認する

Dockerはiptablesに依存しているため、正しい転送ルールがあることを確認しましょう。

実行:

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

Docker関連のルールが表示されない場合は、手動で追加します。

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

次にDockerを再起動します。

sudo systemctl restart docker

そして再度テストします。

…これで完全に解決しました。:grin:

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