ホームページ  >  記事  >  運用・保守  >  docker によって構築された Web ポートがブロックされている場合はどうすればよいですか?

docker によって構築された Web ポートがブロックされている場合はどうすればよいですか?

PHPz
PHPzオリジナル
2023-04-18 14:07:361736ブラウズ

Docker は、非常に人気のあるオープン ソースのコンテナ化エンジンです。迅速に構築でき、管理が容易で、アプリケーションの移植性が確保できるため、開発環境や運用環境で広く使用されています。ただし、Docker を使用して Web アプリケーションを構築する場合、ポートが通信できないことは珍しくありません。今日は、Docker によって構築された Web ポートがブロックされる理由と解決策を分析します。

1. 原因分析

  1. ファイアウォールの理由

Linux システムでは、iptables ファイアウォール サービスがデフォルトで有効になっています。設定していない場合は、 Docker コンテナは外部ネットワークと通信します。したがって、Docker が外部ネットワークとスムーズに通信できるように、ファイアウォールを無効にするかルールを追加できます。以下は参考コマンドです:

ファイアウォールを閉じる: $ sudo service iptables stop

ポートを開く: $ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

  1. ポート マッピングの理由

Docker はコンテナを起動すると、ポート マッピングを通じてコン​​テナ内のポートをホスト上のポートにマップし、コンテナとコンテナ間の通信を実現します。外部ネットワーク。デフォルトでは、コンテナのネットワークは独立しており、内部でのみ通信します。したがって、コンテナ内のポートをマッピングしないと、ポートが通信できなくなる可能性があります。以下はポートをマップするデフォルトの方法です:

$ docker run -p 80:80 image-name

  1. コンテナネットワークの問題

Docker ネットワーク ドライバーの 3 つのタイプは、ブリッジ、ホスト、およびなしです。 Docker コンテナを使用する場合、デフォルトでブリッジ ネットワーク ドライバーが使用され、NAT ネットワークに基づいて仮想ネットワークを形成します。コンテナーが外部ネットワークにアクセスできない場合は、ネットワーク ドライバーが正しく選択されているかどうかを確認する必要がある場合があります。次のコマンドを使用してネットワーク ドライバーを確認できます:

$ docker network ls

  1. Container IP address question

Docker がコンテナーを起動した後、これはネットワーク ドライバーに基づいて、一意の IP アドレスを割り当てます。コンテナーの IP アドレスが外部ネットワークにアクセスできない場合は、コンテナーに接続されているネットワーク カードが正しく構成されているかどうかを確認する必要があります。次の例では、コンテナの IP アドレスが 172.17.0.2 であることがわかります:

$ docker Inspection container-name | grep IPAddress

2。

ポート マッピングが正しいかどうかを確認する
  1. 次の方法を使用して、ポート マッピングの関係を確認できます:

$ docker port container-name

出力内容は次のようになります:

80/tcp -> 0.0.0.0:80

上記のコマンドは、コンテナ内のポートとホスト上のポートのマッピングを表示できます。

ネットワーク ドライバーが正しく選択されているかどうかを確認します。
  1. 次の方法を使用して、コンテナーで使用されているネットワークの種類を確認できます:

$ docker Inspection container-name | grep NetworkMode

出力が Bridge の場合、ネットワーク ドライバーが正しく選択されていることを意味します。出力が host または none の場合は、次のように変更できます:

ネットワークの種類をブリッジに変更します:

$ docker run --network Bridge image-name

ファイアウォールがオフになっているか、ルールが正しく設定されているかを確認してください
  1. Docker コマンドを実行するときに、--privileged パラメーターを追加して、Docker コンテナーに比較的高い権限を与えることができます。

$ docker run --privileged image-name

コンテナの IP アドレスが正しいかどうかを確認します
  1. 次のコマンドを使用してコンテナを表示できますIP アドレス:

$ docker detectcontainer -name | grep IPAddress

コンテナの IP アドレスが変更された場合は、次のコマンドを使用して一意の IP アドレスを再割り当てできます:

$ docker run --ip 172.17.0.10 image-name

つまり、Docker によって開始された Web アプリケーション ポートが通信できない場合は、まずこの状況の原因を調査し、次に問題を解決する必要があります。対応する方法。この記事が皆さんのお役に立てれば幸いです。

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

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