ホームページ > 運用・保守 > Docker > docker がマップされたポートにアクセスできない場合はどうすればよいですか?

docker がマップされたポートにアクセスできない場合はどうすればよいですか?

PHPz
リリース: 2023-04-18 14:44:33
オリジナル
4245 人が閲覧しました

近年、コンテナ化テクノロジーの人気が高まっています。その中でも、Docker は最も人気のあるコンテナ化ソリューションの 1 つとして、開発環境と本番環境の両方で広く使用されています。ただし、Docker を使用すると、マップされたポートにアクセスできないという問題が発生することがありますので、この記事ではこの問題とその解決策について詳しく説明します。

問題の説明

Docker コンテナを実行する場合、-p または --publish オプションを使用してコンテナ内のポートをマッピングできます。ポート上のホストに送信します。たとえば、次のコマンドを使用して、コンテナ内のポート 8080 をホスト上のポート 8000 にマップできます。

docker run -d -p 8000:8080 myimage
ログイン後にコピー

ただし、場合によっては、マップされたポートにアクセスできないことがわかります。たとえば、上記の例では、http://localhost:8000 を通じてコン​​テナ内のアプリケーションにアクセスできない可能性があります。

原因分析

この問題を解決するには、まず原因を分析する必要があります。この問題には主に次のような理由があります:

コンテナが開始されていない

ポートをマップするとき、実際にはコンテナ内のポートをホストにバインドします。 start ではない場合、ポートをバインドできません。次のコマンドでコンテナのステータスを確認できます:

docker ps -a
ログイン後にコピー

ステータスが Exited の場合、コンテナが実行されていないことを意味します。次のコマンドでコンテナを起動する必要があります。コマンド:

docker start <container_name>
ログイン後にコピー
ログイン後にコピー

ホスト ファイアウォールの制限

ホストのポートを介してアプリケーションにアクセスできない場合があります。これは、ホストのファイアウォールがアクセスを制限していることが原因である可能性があります。この問題は、ファイアウォール ルールをオフにするか変更することで解決できます。

ホスト ポートはすでに占有されています

-p オプションを使用する場合、ホスト ポートがすでに占有されている場合、コンテナのポートをホストにバインドできません。次のコマンドを使用してポートの占有を確認できます。

sudo lsof -i :<port>
ログイン後にコピー

次に、ポートを占有しているプロセスを見つけて、プロセスを閉じるか、そのポートを変更します。

コンテナ内のリスニング IP が間違っています

場合によっては、コンテナ内でアプリケーション監視用の IP アドレスを設定している可能性がありますが、この IP アドレスが正しくないため、アクセスできなくなります。アプリケーション。アプリケーションがすべての IP アドレスをリッスンするか、リッスンする IP アドレスが正しく設定されていることを確認する必要があります。

解決策

上記の問題については、次の解決策があります。

コンテナを起動する

コンテナが起動しない場合は、コンテナを起動する必要があります。次のコマンドでコンテナにアクセスします。

docker start <container_name>
ログイン後にコピー
ログイン後にコピー

ファイアウォール ルールを確認します

次のコマンドでファイアウォール ルールを確認できます:

sudo iptables -L
ログイン後にコピー

ルールによってアクセスが制限されていることがわかった場合場合は、次のコマンドを使用してファイアウォールを無効にできます。

sudo service iptables stop
ログイン後にコピー

または、ファイアウォール ルールを変更して、対応するポートへのアクセスを許可します。

ポート マッピングの変更

ホスト ポートがすでに占有されている場合は、ポート マッピングを変更して、空いているポートを見つける必要があります。

リスニング IP アドレスを調整する

コンテナ内のアプリケーションによって監視されている IP アドレスが間違っている場合は、アプリケーションがすべての IP アドレスを監視するか、リスニング IP アドレスを正しく設定していることを確認する必要があります。たとえば、アプリケーションのリスニング アドレスを 0.0.0.0 に設定すると、すべての IP アドレスを監視できます。

概要

マップされたポートにアクセスできないことは、Docker を使用するときによくある問題ですが、問題の根本原因を見つけて適切な解決策を講じれば、簡単に解決できます。この記事の導入を通じて、読者はそのような問題に対処する方法を学び、Docker を使用する経験とスキルをさらに向上させたと思います。

以上がdocker がマップされたポートにアクセスできない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート