CodeGym /コース /Docker SELF /コンテナポートの公開

コンテナポートの公開

Docker SELF
レベル 17 , レッスン 3
使用可能

4.1 ポート公開の基本概念

ポート公開 は、Dockerコンテナ内で動作するサービスを外部ネットワークやホストからアクセス可能にするものだよ。これは、複数のコンテナを使ったアプリケーションの設定で重要な部分で、ウェブサーバー、データベース、その他のネットワークアプリケーションなどのサービスと連携を取るために必要なんだ。この講義では、コンテナのポートを公開して、サービスにアクセスする方法について説明するね。

ポート公開の基本概念

  • ポートマッピング: ホストポートとコンテナポートの対応付け。
  • -p/--publish パラメーター: コンテナを起動する際にポートマッピングを指定するために使われる。
  • -P/--publish-all パラメーター: コンテナ内でエクスポートされたすべてのポートに対して自動的にホストポートを割り当てる。

-p パラメーターの使用例

コンテナを起動する際、-p オプションを使ってホストポートをコンテナポートにマッピングできるよ。コマンドのフォーマットは以下の通り:

ターミナル

docker run -d -p <host_port>:<container_port> <image> 

例 1: Nginxウェブサーバーのポート公開

Nginxを使ってコンテナを起動し、コンテナのポート80をホストのポート8080に公開するよ。

これでNginxは http://localhost:8080 でアクセス可能になるよ。

ターミナル

docker run -d -p 8080:80 --name mynginx nginx 

例 2: 複数ポートの公開

複数の-pオプションを指定することで、複数のポートを公開できるよ。

この例では、Nginxはポート8080でHTTP、ポート8443でHTTPSでアクセス可能になるよ。

ターミナル

docker run -d -p 8080:80 -p 8443:443 --name mynginx nginx 

-P パラメーターの使用例

-P パラメーターは、Dockerfileやコンテナの設定で指定されたすべてのポートを自動的にホストのランダムなポートに公開するんだ。

例:

ターミナル

docker run -d -P --name mynginx nginx 

割り当てられたポートを確認するには、docker port コマンドを使うよ:

ターミナル

docker port mynginx

出力はこんな感じになるよ:

ターミナル

80/tcp -> 0.0.0.0:32768
443/tcp -> 0.0.0.0:32769

4.2 Docker Composeのポート公開

Docker Composeでポートを指定するには、docker-compose.ymlファイルのportsディレクティブを使ってね。

docker-compose.ymlファイルの例

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
      - "8443:443"

Docker Composeを起動してみて:

Terminal

docker compose up -d 

これで、Nginxはhttp://localhost:8080https://localhost:8443でアクセスできるようになるよ。

4.3 ポート公開の追加設定

1. IPアドレスの制限

ホストのIPアドレスを指定して、コンテナのポートへのアクセスを制限できるよ。

例:

この例では、Nginxはローカルホストのhttp://127.0.0.1:8080としてのみアクセスできるようになるよ。

Terminal

docker run -d -p 127.0.0.1:8080:80 --name mynginx nginx 

2. ポート範囲の使用

ポートの範囲を指定して公開できるよ。

例:

Terminal

docker run -d -p 8080-8081:80-81 --name mynginx nginx 

実践のヒント:

  • 必要なポートだけを公開: アクセスするサービスに本当に必要なポートだけを公開することで、潜在的な脆弱性を減らそう。
  • ファイアウォールの使用: 信頼されたIPからのみ公開ポートにアクセスできるように、ファイアウォールを設定しよう。
  • モニタリングとログ記録: 公開ポートへのアクセスを追跡し、疑わしいアクティビティを特定するためにモニタリングとログツールを活用しよう。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION