ホームページ >運用・保守 >Docker >docker run がマッピングされない理由と注意事項の簡単な分析

docker run がマッピングされない理由と注意事項の簡単な分析

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

Docker は、アプリケーションを分離されたポータブルなコンテナーで実行できるようにするプラットフォームです。 Linux カーネルのいくつかの機能を使用して、軽量の仮想化を実装し、ソフトウェアの分離を実現します。このため、Docker は軽量なコンテナーであるため、ソフトウェア デプロイメントの分野で広く使用されています。

Docker でコンテナを実行する場合、コンテナのポートをホストにマップする必要がない場合があります。この記事では、Dockerでコンテナを実行する際にポートがマッピングされない場合の状況と注意点を紹介します。

ポートがマッピングされていない状況

シナリオによっては、ポートがマッピングされていない状況が非常に役立つ場合があります。最も一般的な状況は、Docker を使用してバックグラウンド サービスを実行することです。たとえば、次のコマンドを使用して Nginx サーバーを起動できます:

docker run -d nginx

このコマンドは、バックグラウンドで Nginx コンテナを起動し、コンテナ内で Nginx プロセスを開始します。ただし、現時点では、Nginx コンテナーはコンテナーのポート 80 をホストにマップしません。これは、ホスト マシンのポート 80 にアクセスしてこの Nginx インスタンスにアクセスできないことを意味します。

もう 1 つの一般的なシナリオは、Docker を使用していくつかのツール プログラムを実行することです。次のコマンドを使用して、bash スクリプトを実行できる Ubuntu コンテナを起動できます。

docker run -it ubuntu bash

このコマンドは、Ubuntu コンテナを対話モードで起動し、コンテナ内で bash プロセスに入ります。現時点では、コンテナのポートをホストにマッピングする必要はありません。

ポートをマッピングしない場合の注意事項

シナリオによってはポートをマッピングしない方が便利ですが、次の問題に注意する必要があります。

ホストから接続できないその他 ネットワーク内のコンテナへのアクセス

コンテナにマップされたポートがない場合、他のネットワークのホストや他のマシンを介してコンテナにアクセスすることはできません。これは、ホストの外部からコンテナ内のアプリケーションにアクセスする必要がある場合、コンテナのポートをホストにマップする必要があることを意味します。

コンテナ内のアプリケーションは引き続きポートでリッスンする必要があります

コンテナのポートはホストにマッピングされていませんが、コンテナ内で実行されているアプリケーションは引き続きポートでリッスンする必要があります。これは、コンテナ内のアプリケーションがネットワーク リクエストを処理する必要があるためです。

コンテナには依然としてネットワーク アクセス機能があります

コンテナのポートをホストにマップしなくても、コンテナにはネットワーク アクセス機能が引き続きあります。これは、コンテナ内のアプリケーションがデータベースや Web サービスなどの他のネットワーク上のサービスにアクセスできることを意味します。

結論

Docker でコンテナを実行する場合、必ずしもコンテナのポートをホストにマップする必要はありません。ポートをマッピングしないことは、バックグラウンド サービスや一部のユーティリティ プログラムにとって非常に役立つ場合があります。ただし、コンテナ内のアプリケーションに外部からアクセスする必要がある場合は、コンテナのポートをホストにマップする必要があることに注意してください。同時に、コンテナ内で実行されているアプリケーションは、ネットワーク リクエストを正常に処理できることを確認するためにポートをリッスンする必要があります。

以上がdocker run がマッピングされない理由と注意事項の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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