このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker基礎】コンテナとの通信

コンテナとの通信
ここでは、Dockerコンテナとホストマシンとの通信方法について学びます。具体的には、Apache(httpd)コンテナを使用し、ホストのポート8000をコンテナのポート80にマッピングすることで、ブラウザからWebサーバにアクセスする方法を解説します。「コンテナを作成・起動・確認・停止・削除してみる」ではポート8080を使用しましたが、今回は異なるポート番号を使用して通信を行います。以下の手順に従って、コンテナとの通信設定を実践的に理解しましょう。

Apache とは
Apache(正式名称:Apache HTTP Server)は、Webサーバ機能を提供するオープンソースのソフトウェアです。多くのWebサイトがApache上で動作しており、静的および動的なコンテンツの提供に広く利用されています。Apacheが動作しているサーバにファイルを配置することで、インターネット上からアクセス可能なWebサイトとして公開することができます。
今回は異なるポート番号を使用して、ブラウザからアクセスしてWebサイトとして機能することを確認します。
コンテナとの通信設定
コンテナ外からWebサーバにアクセスできるようにするためには、ホストマシンとコンテナ間でポートを適切にマッピングする必要があります。これにより、ホストの特定のポート番号を通じてコンテナ内のサービスにアクセスできるようになります。
ポートのマッピング
ポートマッピングは、-p
オプションを使用して設定します。基本的な記述形式は以下の通りです。
-p ホストのポート番号:コンテナのポート番号
例えば、-p 8000:80
と指定すると、ホストのポート8000がコンテナのポート80にマッピングされます。これにより、ホストのポート8000にアクセスすると、コンテナ内のApacheサーバにリクエストが転送されます。

ポート設定の記述例
オプション | 説明 |
---|---|
-p 8000:80 | ホストのポート8000をコンテナのポート80にマッピングする |
コンテナとの通信設定の実践
以下の手順に従って、ポート8000を使用してApacheコンテナと通信を行います。
Step1:「run」コマンドを実行する
まず、Apacheの公式イメージ(httpd
)を使用して「Apache」という名前のコンテナを作成・起動します。今回は既にhttpd
イメージがダウンロードされているため、コンテナの作成は迅速に行われます。
なぜコンテナがすぐに作成されるのか
前回の手順では初回実行時にイメージをダウンロードする必要がありましたが、今回は既にhttpd
イメージがローカルに存在するため、ダウンロードのステップをスキップして即座にコンテナを作成・起動できます。
コマンドの実行
PowerShellまたはターミナルに以下のコマンドを入力します。
docker run --name Apache -d -p 8000:80 httpd
コマンドの解説
docker run
: 新しいコンテナを作成して起動します。--name Apache
: コンテナに「Apache」という名前を付けます。-d
: コンテナをバックグラウンド(デタッチドモード)で実行します。-p 8000:80
: ホストのポート8000をコンテナのポート80にマッピングします。httpd
: 使用するイメージ名(Apacheの公式イメージ)。
実行結果
PS C:\Users\joeac> docker run --name Apache -d -p 8000:80 httpd
e0fa6a5420325d6d3a3c1745e4b8cb43887f5385bcc97f310bd9bf28fca01e54
注意点
- コンテナID(例:
e0fa6a542032...
)は環境によって異なります。 - 初回実行時にイメージがローカルに存在しない場合、イメージのダウンロードが開始されますが、今回は既に存在するため即座にコンテナが起動します。
Step2:「ps」コマンドでコンテナの稼働を確認する
作成・起動したコンテナが正しく稼働しているか確認します。
コマンドの実行
docker ps
実行結果
PS C:\Users\joeac> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e0fa6a542032 httpd "httpd-foreground" 17 seconds ago Up 16 seconds 0.0.0.0:8000->80/tcp Apache
確認ポイント
NAMES
列に「Apache」と表示されている。STATUS
が「Up」であること。PORTS
に0.0.0.0:8000->80/tcp
と表示され、ホストのポート8000がコンテナのポート80にマッピングされている。
Step3:ブラウザでApacheコンテナが動作していることを確認する
ブラウザを開き、以下のURLにアクセスします。
http://localhost:8000/
注意点
- プロトコルは
http
を使用します(https
ではありません)。 - 正常に動作していれば、Apacheのデフォルトページが表示されます。
図:ブラウザでの確認

Step4:「stop」コマンドでコンテナを停止する
コンテナの動作を停止します。
コマンドの実行
docker stop Apache
実行結果
PS C:\Users\joeac> docker stop Apache
Apache
解説
- コンテナ名「Apache」が停止されたことを示します。
Step5:「rm」コマンドで「Apache」コンテナを削除する
不要になったコンテナを削除します。
コマンドの実行
docker rm Apache
実行結果
PS C:\Users\joeac> docker rm Apache
Apache
解説
- コンテナ名「Apache」が削除されたことを示します。
まとめ
ここでは、Dockerコンテナとホストマシンとの通信設定について学びました。以下のポイントを押さえておきましょう。
- ポートマッピングの重要性:
-p
オプションを使用して、ホストのポートとコンテナのポートを適切にマッピングすることで、ホストからコンテナ内のサービスにアクセスできます。 - コマンドの理解:
docker run
コマンドにおける各オプション(--name
、-d
、-p
)の役割を理解し、適切に使用することが重要です。 - コンテナの確認:
docker ps
およびdocker ps -a
コマンドを活用して、コンテナの稼働状況や存在を確認します。 - コンテナの停止と削除:
docker stop
およびdocker rm
コマンドを使用して、不要になったコンテナを安全に停止・削除します。
初めてDockerを操作する方は、ポートマッピングの設定やコンテナの管理に慣れるため、これらの手順を何度か繰り返して実践してみてください。また、カーソルキーの「↑」や「↓」を使って過去のコマンドを呼び出し、再実行する方法も習得すると、効率的に作業を進めることができます。