ホームページ  >  記事  >  運用・保守  >  Linux Dockerポートマッピングにアクセスできない場合の対処方法

Linux Dockerポートマッピングにアクセスできない場合の対処方法

PHPz
PHPzオリジナル
2023-04-25 09:01:193811ブラウズ

近年、クラウドコンピューティングの分野でDocker技術が急速に発展し、広く利用されるようになりました。 Docker コンテナ テクノロジーは、開発者がアプリケーションを簡単にデプロイできるだけでなく、繰り返し可能なデプロイ環境を迅速に構築するのに役立ちます。ただし、Docker を使用すると、Docker ポート マッピングにアクセスできないなどの問題が発生することがあります。この記事では、Docker を使用する開発者の助けになればと思い、この状況の原因と解決策を紹介します。

1. Docker ポート マッピングとは

Docker コンテナでは、外部アクセスを容易にするために、多くの場合、コンテナ内のサービス ポートをホストに公開する必要があります。このとき、Dockerのポートマッピング機能を使用する必要があります。

Docker ポート マッピングでは、コンテナー内のポートをホスト上のポートにマッピングできます。たとえば、コンテナのポート 80 をホストのポート 8080 にマップすると、ホストのポート 8080 にアクセスするときにコンテナのポート 80 サービスにアクセスできるようになります。

2. Docker のポート マッピングにアクセスできない理由

Docker を使用していると、コンテナ内のサービスにアクセスできない場合があります。ポートマッピングが正しく設定されています。 Docker ポート マッピングが正しく設定されていない場合、アクセスできなくなります。

Docker ポート マッピングにアクセスできない一般的な理由は次のとおりです。

  1. コンテナ内のサービスが 0.0.0.0 アドレスをリッスンしていません

Docker コンテナ内 内部的には、開発者は通常、サービスがリッスンするアドレスを指定します。デフォルトは 127.0.0.1 で、ローカルでのみアクセスできることを意味します。サービスリスニングアドレスが変更されていない場合、ホスト上でポートがマッピングされていても、コンテナ内のサービスにアクセスできません。

  1. ホストのファイアウォールがポートをブロックする

ホストのファイアウォールが Docker によってマップされたポートをブロックすると、ホストから Docker コンテナ サービスにアクセスできなくなります。

  1. コンテナが実行されているポートがマップされたポートと一致しません

Docker コンテナで実行されているサービスが非標準ポートで実行されている可能性があります。この場合、ポートマッピング中にマッピングする必要があります。マッピングされたポートがコンテナ内で実行されているサービス ポートと一致しない場合、サービスにアクセスできません。

  1. Docker コンテナが正しく実行されていません

Docker コンテナが正しく実行されていない場合、マップされたポートにアクセスできません。 Docker コンテナーの実行ログを表示することで、問題のトラブルシューティングを行うことができます。

3. Docker ポート マッピングにアクセスできない問題を解決する方法

Docker ポート マッピングにアクセスできない上記の理由により、次の解決策を採用できます。 #Use 0.0 .0.0 address listen port

  1. Docker コンテナ内でサービス ポートを監視する場合、0.0.0.0 アドレスを使用できます。これは、任意の IP アドレスからのリクエストを受け入れることができることを意味します。
たとえば、Node.js で、リスニング アドレスを 127.0.0.1 から 0.0.0.0 に変更するコードは次のとおりです。

app.listen(3000, '0.0.0.0', function() {
  console.log('Server listening on port 3000');
});

ホストのファイアウォール構成を確認します

  1. Linux システムでは、次のコマンドを使用してポートを開くことができます:
  2. iptables -I INPUT -p tcp --dport 映射的端口号 -j ACCEPT
たとえば、ポート 8080 のアクセス許可を開くコマンドは次のとおりです:

sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

マップされたポートの正確性の問題

  1. まず、
  2. docker ps
コマンドを使用してコンテナーの実行ステータスをチェックし、サービスが実行されていることを確認します。次に、ポート マッピングを実行するときに、サービスを実行しているポートがマッピングされるポートであるかどうかを確認できます。たとえば、次のようになります。

docker run -p 8080:80 nginx
このコマンドを実行するときは、Nginx サービスがポート 80 で実行されていることを確認する必要があります。デフォルト。

Docker コンテナの実行ログを確認する

  1. docker logs
コマンドを使用して、Docker コンテナの実行プロセスのログ情報を表示できます。 、コンテナーの実行に関する問題のログ情報を表示してトラブルシューティングを行います。

上記は、Docker ポート マッピングにアクセスできない問題を解決するためのいくつかの方法とヒントです。

以上がLinux Dockerポートマッピングにアクセスできない場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。