Dockerネットワーク入門:コンテナ間通信を実現する
2024-11-204分で読める
Dockerのネットワーク設定を学び、複数のコンテナ間で通信を実現する方法を解説します。ハンズオンで手を動かしながら体験してみましょう!
2024-10-194分で読める
※この記事で使用しているリソースを一括でダウンロードすることができます。
・簡単なdockerのコマンドについておおむね理解していること
・vscodeを使用して準備・確認を行います。
・windows(WSL)上での実施手順になっています。
・リソースをダウンロードした方はDockerfileをビルドするから実施できます。※リソースの内容を確認したい方は、リソースの準備の内容に照らし合わせて確認してみてください。
「Apacheコンテナでテストページ表示」するためにリソースを用意していきましょう。
まずはvscodeでWSLに接続していきましょう。(ご自身で作業したいディレクトリを選択します)
※こちらの記事で「vscodeでwslに接続する方法」を説明しています。
WSLに接続出来たら作業ディレクトリを作成し、移動しておきます。本記事では作業ディレクトリを「docker-httpd」とします。
ターミナルmkdir docker-httpd cd docker-httpd
下図のようになっていればOKです。

作業ディレクトリ(docker-httpd)にディレクトリ「public-html」を作成し、そこに「index.html」を置きます。
ターミナルmkdir public-html
以下の「index.html」は「Docker apache test」を表示するhtmlになっています。
※「body」タグの中身はご自身で好きな内容を書いてもらっても問題ありません。
index.html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> Docker apache test </body> </html>
下図のようになっていればOKです。

以下の内容で作業ディレクトリ(docker-httpd)にDockerfileを作成しましょう。
「FROM httpd:2.4」はApacheのイメージを使用することを意味します。
「COPY ./public-html/ /usr/local/apache2/htdocs/」は作業ディレクトリ「public-html」の内容をコンテナの「/usr/local/apache2/htdocs/」にコピーすることを意味します。
DockerfileFROM httpd:2.4 COPY ./public-html/ /usr/local/apache2/htdocs/
下図のようになっていればOKです。

作成したリソースを使用してビルドしていきましょう。下図のように作業ディレクトリに入って「docker build」しましょう。
ターミナルdocker build . -t httpd
下図のように「httpd」イメージが作成されていればOKです。

イメージもできたので「docker run」でコンテナを上げていこうと思うかもしれませんが、普通に「docker run」しただけでは、コンテナのポートにはアクセスできません。
なのでこのセクションではコンテナのポートにアクセスできるようにするポートフォアーディング設定を解説していきます。
そもそも「ポートフォアーディング設定」って何と思った方もいると思うので解説します。
Dockerにおけるポートフォワーディングは、ホストマシンのポートとコンテナ内のポートをマッピングし、外部からコンテナへアクセスできるようにする設定となります。
文字で見るとわかりにくいかと思うので実際にやってみましょう。
ポートフォワーディング設定してコンテナを起動するコマンドは以下になります。
特に「-p 8080:80」部分がポートフォワーディング設定している個所になります。ホスト(あなたが使っているPC)の8080ポートと作成するコンテナ(my-running-app)の80ポートをマッピングしています。
ターミナルdocker run -d --name my-running-app -p 8080:80 httpd
下図のようにコンテナが立ち上がればOKです。
※この時に「Windows Defender」の「セキュリティ警告」(パブリックネットワークとプライベートネットワークにこのアプリへのアクセスを許可しますか?)が出る場合、基本的にdockerでパブリック・プライベートネットワークどちらも許可する必要はありません。なので「キャンセル」を選択するほうがいいです。(どちらも許可しないとしてもlocalhostでアクセスすることはできます。)

コンテナが立ち上がったので実際にブラウザで確認してみましょう。
ブラウザhttp://localhost:8080/
下図のようにテストページを準備するで作成した内容が表示されていればOKです。お疲れさまでした。

今回はdockerでWebサーバのコンテナ(Apache)を立ち上げる場合、どのようにしてポートフォアーディング設定をするかについて説明していきました。いくつかdockerの記事を見ていただけていれば、どのように使っていくかイメージがついてきたのではないでしょうか?
今回の記事が役に立った、ほかにも記事が見たいという方は最新情報を公式Xで配信しているのでフォローお願いします!
2024-11-204分で読める
Dockerのネットワーク設定を学び、複数のコンテナ間で通信を実現する方法を解説します。ハンズオンで手を動かしながら体験してみましょう!
2026-04-189分で読める
マンション備え付けの壁埋め込みWiFiで「5GHzが繋がらない・2.4GHzが33Mbpsしか出ない」問題を、WiFi 6ルーターをAPモードで追加して650Mbpsまで改善した記録です。
2024-12-015分で読める
Dockerで開発を進めるのであれば必須!複数コンテナを一括管理するdocker-composeについて解説します。