はじめに
Docker ネットワークはコンテナ・オーケストレーションの基本的な側面であり、コンテナ同士や外部ネットワークとの通信を可能にします。このチャレンジでは、ネットワークの作成と管理から、コンテナの接続と切断まで、Docker ネットワークの重要な概念をガイドします。
このチャレンジを完了することで、Docker ネットワークコマンドの実践的な経験を積み、コンテナ間の通信をセットアップする方法を理解できます。これらのスキルは、Docker 環境でマルチコンテナアプリケーションを開発およびデプロイするために不可欠です。
それでは、Docker ネットワークの世界に飛び込んでみましょう!
ネットワークの作成
このステップでは、最初の Docker ネットワークを作成します。これはコンテナを接続し、コンテナ間の通信を可能にするための基礎となります。
タスク
docker network createコマンドを使用して、my-networkという名前の新しいブリッジネットワーク(bridge network)を作成してください。- すべての Docker ネットワークをリスト表示して、ネットワークが作成されたことを確認してください。
要件
- すべての操作は
/home/labex/projectディレクトリで行ってください。 - ネットワーク作成時には、デフォルトのブリッジドライバを使用してください。
例
このステップを完了した後、docker network ls を実行すると my-network が表示されるはずです:
NETWORK ID NAME DRIVER SCOPE
abcdef123456 my-network bridge local
ネットワーク内でのコンテナの起動
ネットワークが作成できたので、いくつかのコンテナを起動して接続してみましょう。このステップでは、特定のネットワーク内でコンテナを開始する方法を学びます。これは Docker ネットワークにおける重要な概念です。
タスク
nginxイメージを使用してcontainer1という名前のコンテナを起動し、my-networkに接続してください。httpdイメージを使用してcontainer2という名前の別のコンテナを起動し、my-networkに接続してください。- 両方のコンテナが実行中であり、
my-networkに接続されていることを確認してください。
要件
- すべての操作は
/home/labex/projectディレクトリで行ってください。 - コンテナを起動する際、
--networkフラグを使用してmy-networkに接続してください。 - 両方のコンテナをデタッチドモード(バックグラウンド)で実行してください。
例
このステップを完了した後、docker ps を使用すると両方のコンテナが実行されているのが確認できるはずです:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abcdef123456 nginx "..." 2 minutes ago Up 2 minutes 80/tcp container1
fedcba654321 httpd "..." 2 minutes ago Up 2 minutes 80/tcp container2
接続テスト
このステップでは、作成したネットワークを介してコンテナ同士が通信できることを確認します。これは、ネットワーク設定が期待通りに機能しているかを確認するための重要なテストです。
タスク
docker execコマンドを使用して、container1内でシェルを実行してください。container1の内部から、curlコマンドを使用してコンテナ名でcontainer2にアクセスしてください。
要件
- すべての操作は
/home/labex/projectディレクトリで行ってください。 curlコマンドのホスト名としてcontainer2を使用してください。curlコマンドはcontainer2のデフォルト HTTP ポート(80)にアクセスする必要があります。
例
container1 から curl コマンドを実行した後、デフォルトの Apache HTTP Server ページのコンテンツが表示されるはずです:
<!DOCTYPE html>
<html><body><h1>It works!</h1></body></html>
コンテナを複数のネットワークに接続する
このステップでは、1 つのコンテナを複数のネットワークに接続する方法を学びます。これは、複雑なネットワークトポロジを作成したり、ネットワーク間でサービスを段階的に移行したりする際に役立つ高度な概念です。
タスク
my-network2という名前の新しいブリッジネットワークを作成してください。container2をmy-networkへの接続を維持したまま、my-network2に接続してください。container2が両方のネットワークに接続されていることを確認してください。
要件
- すべての操作は
/home/labex/projectディレクトリで行ってください。 docker network connectコマンドを使用して、container2をmy-network2に追加してください。docker inspectコマンドを使用して、ネットワーク接続を確認してください。
例
container2 を my-network2 に接続した後、コンテナをインスペクト(詳細確認)すると、両方のネットワークがリストされているはずです:
"Networks": {
"my-network": {
...
},
"my-network2": {
...
}
}
ネットワークからコンテナを切断する
このステップでは、コンテナを停止させずにネットワークから削除する方法を学びます。これは、コンテナを隔離する必要がある場合や、ネットワーク構成を再編成する場合に便利です。
タスク
docker network disconnectコマンドを使用して、container2をmy-networkから切断してください。container2がmy-networkに接続されていないことを確認してください。
要件
- すべての操作は
/home/labex/projectディレクトリで行ってください。 docker network disconnectコマンドを使用して、my-networkからcontainer2を削除してください。docker network inspectコマンドを使用して、切断を確認してください。
例
container2 を my-network から切断した後、my-network をインスペクトしても container2 は表示されないはずです:
$ docker network inspect my-network
[
{
"Name": "my-network",
...
"Containers": {
"container1": {
...
}
},
...
}
]
ネットワークの削除
最後のステップでは、不要になった Docker ネットワークを削除する方法を学びます。未使用のリソースを適切にクリーンアップすることは、Docker 環境を効率的に管理するための重要な一部です。
タスク
container2がまだ接続されている場合は、my-network2から切断してください。docker network rmコマンドを使用して、my-network2ネットワークを削除してください。my-network2が削除されたことを確認してください。
要件
- すべての操作は
/home/labex/projectディレクトリで行ってください。 - ネットワークを削除する前に、どのコンテナも
my-network2に接続されていないことを確認してください。 docker network lsコマンドを使用して、ネットワークの削除を確認してください。
例
my-network2 を削除した後、docker network ls を実行してもリストに表示されないはずです:
NETWORK ID NAME DRIVER SCOPE
abcdef123456 my-network bridge local
ghijkl789012 bridge bridge local
mnopqr345678 host host local
stuvwx901234 none null local
まとめ
Docker ネットワーク基礎チャレンジの完了、おめでとうございます!以下の Docker ネットワークの重要な概念をマスターしました:
- カスタム Docker ネットワークの作成
- 特定のネットワーク内でのコンテナの起動
- コンテナ間接続のテスト
- コンテナの複数ネットワークへの接続
- ネットワークからのコンテナの切断
- Docker ネットワークの削除
これらのスキルは、効果的な Docker ネットワーク管理の基礎となり、より複雑なコンテナ化アプリケーションを扱う際に非常に役立ちます。適切なネットワーク構成は、コンテナの分離、セキュリティ、およびサービス間の効率的な通信にとって極めて重要であることを忘れないでください。
このチャレンジを通じて、コンテナ用の隔離された環境を作成し、それらの間の通信を可能にし、ネットワーク接続を動的に管理する方法を学びました。これらの機能により、変化する要件に適応できる高度なネットワークアーキテクチャを設計できるようになります。
Docker の学習を続けるにあたって、マルチホスト設定用のオーバーレイネットワーク(overlay networks)、ネットワークプラグイン、Docker ネットワークが Kubernetes などのコンテナ・オーケストレーション・プラットフォームとどのように統合されるかなど、より高度なトピックを探索することを検討してください。また、ネットワークポリシーを使用してコンテナ間のトラフィックフローを制御する方法など、ネットワークセキュリティの概念を深く掘り下げるのも良いでしょう。
これらのスキルを練習し続けることで、将来のプロジェクトで洗練されたコンテナネットワークアーキテクチャを設計・管理できるようになります。効果的なネットワーキングは、スケーラブルで安全、かつ効率的なコンテナ化アプリケーションを構築するための鍵です。



