Docker ネットワークプレイグラウンド

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Docker ネットワーキングはコンテナオーケストレーションの基本的な要素であり、コンテナ同士や外部ネットワークとの通信を可能にします。このチャレンジでは、ネットワークの作成と管理からコンテナの接続と切断まで、Docker ネットワーキングの基本的な概念を学びます。

このチャレンジを完了することで、Docker ネットワークコマンドの実践的な経験を積み、コンテナ間の通信を設定する方法を理解することができます。これらのスキルは、Docker 環境でのマルチコンテナアプリケーションの開発とデプロイに不可欠です。

では、Docker ネットワーキングの世界に飛び込みましょう!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/run -.-> lab-389054{{"Docker ネットワークプレイグラウンド"}} docker/exec -.-> lab-389054{{"Docker ネットワークプレイグラウンド"}} docker/inspect -.-> lab-389054{{"Docker ネットワークプレイグラウンド"}} docker/network -.-> lab-389054{{"Docker ネットワークプレイグラウンド"}} end

ネットワークの作成

このステップでは、最初の Docker ネットワークを作成します。これはコンテナを接続し、コンテナ間の通信を可能にするための基礎となります。

タスク

  1. docker network create コマンドを使用して、my-network という名前の新しいブリッジネットワークを作成します。
  2. すべての Docker ネットワークを一覧表示することで、ネットワークが作成されたことを確認します。

要件

  • すべての操作は /home/labex/project ディレクトリで実行します。
  • ネットワークを作成する際には、デフォルトのブリッジドライバを使用します。

このステップを完了した後、docker network ls を実行すると、my-network が一覧に表示されるはずです。

NETWORK ID     NAME         DRIVER    SCOPE
abcdef123456   my-network   bridge    local
✨ 解答を確認して練習

ネットワーク内でコンテナを起動する

ネットワークができたので、いくつかのコンテナを起動してそれらをネットワークに接続しましょう。このステップでは、特定のネットワーク内でコンテナを起動する方法を示します。これは Docker ネットワーキングの重要な概念です。

タスク

  1. nginx イメージを使用して container1 という名前のコンテナを起動し、my-network に接続します。
  2. httpd イメージを使用して container2 という名前の別のコンテナを起動し、my-network に接続します。
  3. 両方のコンテナが実行中で、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
✨ 解答を確認して練習

接続性のテスト

このステップでは、作成したネットワークを介してコンテナ同士が通信できることを確認します。これは、ネットワーク構成が期待通りに動作していることを保証するための重要なテストです。

タスク

  1. docker exec コマンドを使用して、container1 内でシェルを実行します。
  2. container1 内から、curl コマンドを使用して、コンテナ名で container2 にアクセスします。

要件

  • すべての操作は /home/labex/project ディレクトリで実行します。
  • curl コマンドでは、container2 をホスト名として使用します。
  • curl コマンドは、container2 のデフォルトの HTTP ポート(80)にアクセスする必要があります。

container1 から curl コマンドを実行した後、デフォルトの Apache HTTP サーバーのページ内容が表示されるはずです。

<!DOCTYPE html>
<html><body><h1>It works!</h1></body></html>
✨ 解答を確認して練習

コンテナを複数のネットワークに接続する

このステップでは、1 つのコンテナを複数のネットワークに接続する方法を学びます。これは、複雑なネットワークトポロジを作成したり、ネットワーク間でサービスを段階的に移行したりする際に役立つ、より高度な概念です。

タスク

  1. my-network2 という名前の新しいブリッジネットワークを作成します。
  2. container2my-network への接続を維持したまま、my-network2 に接続します。
  3. container2 が現在両方のネットワークに接続されていることを確認します。

要件

  • すべての操作は /home/labex/project ディレクトリで実行します。
  • docker network connect コマンドを使用して、container2my-network2 に追加します。
  • docker inspect コマンドを使用して、ネットワーク接続を確認します。

container2my-network2 に接続した後、コンテナを調査すると両方のネットワークがリストされているはずです。

"Networks": {
    "my-network": {
       ...
    },
    "my-network2": {
       ...
    }
}
✨ 解答を確認して練習

コンテナをネットワークから切断する

このステップでは、コンテナを停止することなくネットワークから切り離す方法を学びます。コンテナを隔離する必要がある場合や、ネットワークアーキテクチャを再構築する際に役立ちます。

タスク

  1. docker network disconnect コマンドを使用して、container2my-network から切断します。
  2. container2my-network に接続されていないことを確認します。

要件

  • すべての操作は /home/labex/project ディレクトリで実行します。
  • docker network disconnect コマンドを使用して、container2my-network から削除します。
  • docker network inspect コマンドを使用して、切断を確認します。

container2my-network から切断した後、my-network を調査すると container2 がリストされていないはずです。

$ docker network inspect my-network
[
    {
        "Name": "my-network",
       ...
        "Containers": {
            "container1": {
               ...
            }
        },
       ...
    }
]
✨ 解答を確認して練習

ネットワークを削除する

この最後のステップでは、Docker ネットワークが不要になったときに削除する方法を学びます。不要なリソースを適切にクリーンアップすることは、Docker 環境を効率的に管理する上で重要な要素です。

タスク

  1. container2 がまだ my-network2 に接続されている場合は、切断します。
  2. docker network rm コマンドを使用して、my-network2 ネットワークを削除します。
  3. 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 ネットワーキングの基本概念をうまく学びました。

  1. カスタム Docker ネットワークの作成
  2. 特定のネットワーク内でのコンテナの起動
  3. コンテナ間の接続性のテスト
  4. コンテナを複数のネットワークに接続する
  5. コンテナをネットワークから切断する
  6. Docker ネットワークの削除

これらのスキルは、効果的な Docker ネットワーク管理の基礎を形成し、より複雑なコンテナ化アプリケーションを扱う際に非常に役立ちます。適切なネットワーク構成は、コンテナの分離、セキュリティ、およびサービス間の効率的な通信に不可欠であることを忘れないでください。

このチャレンジを通じて、コンテナのための分離された環境を作成し、それらの間の通信を有効にし、ネットワーク接続を動的に管理する方法を学びました。これらの機能により、変化する要件に適応できる高度なネットワークアーキテクチャを設計することができます。

Docker の学習を続けるにあたり、マルチホスト設定用のオーバーレイネットワーク、ネットワークプラグイン、および Docker ネットワーキングが Kubernetes などのコンテナオーケストレーションプラットフォームとどのように統合されるかなど、より高度なネットワーキングトピックを探索することを検討してください。また、コンテナ間のトラフィックフローを制御するためにネットワークポリシーをどのように使用するかなど、ネットワークセキュリティの概念にも深く掘り下げたいと思うかもしれません。

これらのスキルを練習し続けることで、将来のプロジェクトで高度なコンテナネットワークアーキテクチャを設計および管理する準備が整います。効果的なネットワーキングは、スケーラブルでセキュアかつ効率的なコンテナ化アプリケーションを構築するための鍵です。