このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Docker入門】ネットワークを指定したコンテナの起動

 Dockerでは、コンテナがどのネットワークに接続されるかを指定するためのオプションが提供されています。これにより、異なるネットワークに所属するコンテナ同士を接続したり、ホストとの通信を制御したりすることができます。

 例として、「docker container run」コマンドにおいて「--net」オプションを使用してネットワークを指定する方法を示します。

新しいネットワークの作成

 まず、「docker network create」コマンドを使用して新しいネットワークを作成します。「docker network create」コマンドを使用して新しいネットワークを作成します。「ap_network」という名前でブリッジドライバを指定します。

・「docker network create --driver=bridge ap_network」コマンドを実行します。

PS C:\Users\joeac> docker network create --driver=bridge ap_network
8c04a09a74bc6e3ed7ed21ade33d2e97bf111f421baf22bdb9091798ee71bbcd

このコマンドの意味は下表のとおりです。

コマンド意味
dockerDockerコマンドの実行を示す。
network createネットワークを作成するコマンド
--driver=bridgeネットワークドライバとしてブリッジを使用することを指定
ap_network作成するネットワークの名前を指定
コマンドの意味

コンテナの起動

 次に、「docker run」コマンドを使用してコンテナを起動します。ここで、「--net」オプションを使用して、先ほど作成したap_networkにコンテナを接続します。

 また、「-d」オプションを使用してバックグラウンドでコンテナを実行し、「-p」オプションを使用してホストのポート80をコンテナのポート80にマッピングします。

・「docker run -d -p 80:80 --name=webap --net=ap_network nginx」コマンドを実行します。

PS C:\Users\joeac> docker run -d -p 80:80 --name=webap --net=ap_network nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
8a1e25ce7c4f: Pull complete
e78b137be355: Pull complete
39fc875bd2b2: Pull complete
035788421403: Pull complete
87c3fb37cbf2: Pull complete
c5cdd1ce752d: Pull complete
33952c599532: Pull complete
Digest: sha256:6db391d1c0cfb30588ba0bf72ea999404f2764febf0f1f196acd5867ac7efa7e
Status: Downloaded newer image for nginx:latest
80da595b6d4729eb5014039c51fc1862b5dc526aa4a11386cd3a500a3f5ebb5c

このコマンドの意味は下表のとおりです。

コマンド意味
docker runDockerコンテナを起動するコマンド
-dバックグラウンドでコンテナを実行するオプション
-p 80:80ホストのポート80をコンテナのポート80にマッピングするオプション
--name=webapコンテナにwebapという名前を付けるオプション
--net=ap_networkコンテナをap_networkという名前のネットワークに接続するオプション
nginxnginxイメージを使用してコンテナを作成する。
コマンドの意味

 これにより、「webap」という名前のNginxコンテナがバックグラウンドで起動し、「ap_network」という名前のネットワークに接続され、ホストのポート80 にアクセスするとコンテナ内の Nginxサーバーにアクセスできるようになります。

Webブラウザでアクセスする

・Webブラウザを起動して、URLに「localhost」と入力します。

Nginxサーバーにアクセスできます。

コンテナとネットワーク接続の解除

・「docker network disconnect ap_network webap」コマンドを実行します。

PS C:\Users\joeac> docker network disconnect ap_network webap

 このコマンドは、「webap」という名前のコンテナを「ap_network」という名前のネットワークから切断します。

コマンド意味
docker network disconnectコンテナを特定のネットワークから切断するコマンド
ap_network切断するネットワークの名前を指定
webap切断するコンテナの名前を指定
コマンドの意味

Webブラウザでリロード

・Webブラウザでリーロードします。

Nginxサーバーに接続できなくなります。

コンテナとネットワーク接続

コンテナとネットワークを接続します。

・「docker network connect ap_network webap」コマンドを実行します。

 このコマンドは、「webap」という名前のコンテナを「ap_network」という名前のネットワークに接続します。

Webブラウザで再リロード

・Webブラウザで再びリーロードします。

Nginxサーバーに再びアクセスできるようになります。

作成したネットワークの削除

コンテナを停止させます。

・「docker container stop webap」コマンドを実行します。

PS C:\Users\joeac> docker container stop webap
webap

作成したネットワークを削除します。

 ネットワークを削除する前にネットワークに接続しているコンテナの接続を解除しておくのがよいかと思います。

・「docker network disconnect ap_network webap」コマンドを実行します。

PS C:\Users\joeac> docker network disconnect ap_network webap

ap_network」を削除します。

・「docker network rm ap_network」コマンドを実行します。

PS C:\Users\joeac> docker network rm ap_network
ap_network