Docker コンテナーで複数のポートを公開する

David Mbochi Njonge 2024年2月15日
  1. NGINX アプリケーションを作成する
  2. Dockerfile を作成する
  3. イメージを構築する
  4. 複数のポートで Docker コンテナを実行する
  5. ポートのテスト
  6. まとめ
Docker コンテナーで複数のポートを公開する

インターネット上ではさまざまな種類の通信が行われますが、最も一般的なものには、ファイル転送、電子メールの送信、Web ページの提供などがあります。 この通信を可能にするために、通信タイプの識別に役立つポート番号を利用します。

たとえば、File Transfer Protocol はポート 20 と 21 を使用し、Simple Mail Transfer Protocol は 25 を使用し、Hypertext Transfer Protocol は 25 を使用します。

同様に、Docker コンテナーはポートを使用して、World Wide Web 上の異なるデバイス間の通信を可能にします。 このチュートリアルでは、Nginx アプリケーションを使用して Docker コンテナーで複数のポートを公開する方法を学習します。

NGINX アプリケーションを作成する

WebStorm IDEA を開き、File>New>Project を選択します。 開いたウィンドウで [空のプロジェクト] を選択し、プロジェクト名を untitled から web-app に変更します。

最後に、[作成] というラベルの付いたボタンを押して、空のプロジェクトを作成します。

使用する開発環境は問わないため、他の開発環境を使用することもできます。 NGINX は静的コンテンツの提供に使用されるため、他の構成ファイルは必要ありません。

プロジェクトが生成されたら、web-app フォルダーに index.js という名前のファイルを作成し、次のコードをコピーしてファイルに貼り付けます。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>Welcome to Nginx !</h1>

</body>
</html>

このファイルには、アプリケーションのテストに役立つ見出しが付いた単純な Web ページが含まれています。 HTML コンテンツを変更して、必要なコンテンツを表示します。

Dockerfile を作成する

web-app フォルダーに Dockerfile という名前のファイルを作成し、次の手順をコピーしてファイルに貼り付けます。

FROM nginx:1.23.1-alpine
ADD . /usr/share/nginx/html
  1. FROM - カスタム イメージを作成するベース イメージを設定します。この例では、alpine を使用して軽量バージョンの NGINX をプルしました。
  2. ADD - 現在のフォルダー内のファイルとフォルダーを、/usr/share/nginx/html にあるイメージのファイル システムにコピーします。

イメージを構築する

キーボード ショートカット ALT+F12 を使用して開発環境で新しいターミナル ウィンドウを開き、次のコマンドを使用して、タグ web-app:latest を持つイメージを作成します。

~/WebstormProjects/web-app$ docker build --tag web-app:latest .

このコマンドは Dockerfile を実行し、以下に示すように、2つの命令が順番に実行されたことを確認できます。

=> [1/2] FROM docker.io/library/nginx:1.23.1-alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23c3740  0.2s
 => => resolve docker.io/library/nginx:1.23.1-alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23c3740  0.2s
 => CACHED [2/2] ADD . /usr/share/nginx/html

複数のポートで Docker コンテナを実行する

イメージのビルドに使用したのと同じターミナル ウィンドウで、次のコマンドを使用して、コンテナーのポート 80 をリッスンするホストのポート 3000 と 5000 で web-app-prod という名前のコンテナーを実行します。

~/WebstormProjects/web-app$ docker run --name web-app-prod -d -p 3000:80 -p 5000:80 web-app:latest

コンテナで複数のポートを公開するために、2つの連続した -p フラグを使用して、ホストに 2つの異なるポートを割り当て、コンテナのポート 80 でリッスンします。

ポートのテスト

コンテナーが期待どおりに機能しているかどうかを確認するには、任意のブラウザーを開き、localhost:3000 (http://localhost:3000/) および localhost:5000 (http://localhost:5000/) にリクエストを発行します。 ポートは同じコンテナーをリッスンしているため、以下に示すように、2つの要求によって返された NGINX アプリケーションの同じページを取得します。

ポートのテスト - ローカルホスト 3000

ポートのテスト - ローカルホスト 5000

まとめ

このチュートリアルでは、NGINX アプリケーションを利用して、Docker コンテナーで複数のポートを公開する方法を説明しました。 これは複数のポートを公開する最も一般的な方法ですが、同じ目的を達成するために使用できる他のアプローチがあることに注意してください。

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub