Docker コンテナが IPv6 のみでリッスンしている

Discourse の別のソフトウェアからのインポート作業を行うために、VM 内でテスト用の Discourse インスタンスをセットアップしようとしています。Docker、Discourse、Ruby は初心者で、バックグラウンドで何が起こっているのかまだよく理解できていません。これまでに discourse_docker リポジトリをフォークし、以下の手順に従ってセットアップしました(クラウドインスタンスではなく、ローカルの Ubuntu VM を使用):discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

セットアップ後、netstat で確認したところ、ローカルの VM ではコンテナがポート 80 と 443 を IPv6 の IP アドレスのみにリッスンするように設定されているようです。ローカルでは IPv6 を使用していないため、Discourse インスタンスにアクセスできません。これを修正するにはどうすればよいでしょうか?app.yml を確認しましたが、バインド設定は含まれていないようです。同様の問題を抱えた人を探しましたが、2015 年頃の記事で、コンテナ内部の DNS 設定を変更することで解決したという事例が一つ見つかりました。これは「Bad Idea™」のように聞こえるため、もう少しクリーンな解決策を期待しています。

ありがとうございます!

おそらく、リポジトリをフォークする必要はありません。

これはおそらくあなたの仮想ホストの問題です。私は以前にこのような事例を見たことがありません。

このガイドに従おうとしてリポジトリをフォークしました:

ただし、それが問題を引き起こすとは思いません。
ESXi 上で、Ubuntu Server(ubuntu.com からダウンロードした)の新しいインストールを実行しています。これらはすべて非常に標準的なものです。

設定は、サービスをどのようにバインドするかをどこで決定しているのでしょうか?

デフォルトでは、すべての IP アドレスにバインドされます。

ポートをマッピングする行に IP アドレスを追加できますが、VM に問題がある可能性が高いです。Digital Ocean でしょうか?

コンテナ内でインポートを実行する例がこちらにあります。あなたがリンクしたものよりも優れている可能性が高いですが(確認していないので、間違っている可能性もあります)。

いいえ、私は自分で VMware ホストを持っており、そこで VM を実行しています。IPv4 経由でも、直接アクセスでも DNS 名経由でも、VM への接続に問題はありません。ただ、何らかの理由で、Docker サービス(SSH サーバーのようなデフォルトのものではなく)が 0.0.0.0 ではなく :::80 と :::443 のみにバインドされているのです。

何か詳細を提供してくれる関連するログファイルはありますか?

コンテナ内でインポートを実行する例がこちらにあります。あなたがリンクしたものよりも優れている可能性が高いですが(見ていないので、間違っているかもしれませんが)。

さて、まだインポートの部分には到達していません。:stuck_out_tongue:
最終的には、当サイトのこのインポートスクリプトの改善に取り組みたいと考えています。これまでいくつかの異なるガイドで始めようと苦労してきましたが、当面は基本的な素のインストールから始めるのが良いと考えました。

Docker または VM に何か問題があるようです。VM と Docker のガイドを確認し、Hello World コンテナから始めてみてください。これは Discourse の問題ではありません。

「いいね!」 1