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

Docker超入門:コンテナ間通信を制御!Dockerで独自ネットワークを作成する手順

コンテナ間通信を制御!Dockerで独自ネットワークを作成する手順

 Dockerの面白いところのひとつは、自分専用のネットワークを作って、そこにコンテナを接続できるところなんです。これを使えば、アプリ同士の通信をコントロールしたり、セキュリティを高めたりできます。ここでは、その具体的な手順を紹介していきます。

まずは環境を整理してスッキリさせる

 一度古いコンテナやイメージを整理しておくと後の作業が分かりやすいです。コマンドの前に実行中のコンテナがあれば、すべて停止させておきます。

docker system prune -a

 これを実行すると、停止済みコンテナや不要なイメージが削除されます。さらに、残っているボリュームも不要なら消しておくと環境がスッキリします。

ステップ1:ネットワークを作成する

独自ネットワークを作るには docker network create コマンドを使います。

docker network create my_network

実行すると、ユニークなネットワークIDが発行されます。

出力例

PS C:\Users\joeac> docker network create my_network
f7dbcd67e01ad440c1e16e5d5b18cc218dab04c32066d5bd8192d7d2fd75fac8

これで my_network というネットワークが完成しました。

ステップ2:ネットワークを確認する

作ったネットワークが正しく登録されたかを確認するには docker network ls を使います。

docker network ls

出力例

PS C:\Users\joeac> docker network ls
NETWORK ID     NAME         DRIVER    SCOPE
ae21e8fb5c4c   bridge       bridge    local
edc5f4ea708e   host         host      local
f7dbcd67e01a   my_network   bridge    local
0b1b4553af27   none         null      local

このように my_network が表示されれば成功です。

ステップ3:ドライバを選ぶ

Dockerのネットワークにはドライバという仕組みがあって、用途に応じて選択できます。

ドライバ説明
noneネットワーク接続なし。完全に孤立したコンテナを作るときに便利。
hostホストと同じネットワークを使う。高速だが分離が効かない。
bridgeデフォルト。コンテナ同士の通信をブリッジし、外部ともやり取りできる。

ドライバを指定しない場合は、自動的に bridge が選ばれます。

ステップ4:コンテナをネットワークに接続する

作ったネットワークを使うには、コンテナ起動時に --network オプションを付けます。

docker run -d --name my_container --network=my_network busybox

 --network オプションは、コンテナを指定した名前のネットワークに関連付けます。これにより、my_container は他の同じネットワークに関連付けられたコンテナと通信できます。

このコマンドの意味を表にまとめるとこんな感じです。

オプション説明
docker runコンテナを実行するコマンド
-dデタッチモード(バックグラウンド実行)
--name my_containerコンテナ名を my_container に指定
--network=my_networkmy_network に接続する
busybox使用するイメージ名

出力例

PS C:\Users\joeac> docker run -d --name my_container --network=my_network busybox
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
80bfbb8a41a2: Pull complete
Digest: sha256:d82f458899c9696cb26a7c02d5568f81c8c8223f8661bb2a7988b269c8b9051e
Status: Downloaded newer image for busybox:latest
2bcb409a7168859b7da3f97a014f8564146e5d9543c82be6936af06b62283f8e

これで、my_containermy_network 内のコンテナと通信できるようになります。

ステップ5:ネットワークを削除する

不要になったら、docker network rm で削除しましょう。

docker network rm my_network

出力例

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

これで、作成したネットワークがきれいに片付きます。

まとめ

  • docker network create で独自ネットワークを作れる。
  • docker network ls で作成済みネットワークを確認できる。
  • コンテナ起動時に --network を指定すれば、そのネットワークに参加できる。
  • ネットワークは不要になったら docker network rm で削除できる。

これで、コンテナ間の通信を自在にコントロールできるようになります!