はじめに
この実験では、docker network disconnect コマンドを使用してコンテナのネットワーク接続を管理する方法を学びます。まず、カスタムネットワークを作成し、それに接続されたコンテナを実行します。
その後、既存のコンテナを追加のネットワークに接続する方法を見ていきます。最後に、コンテナを特定のネットワークから切断し、切断を確認する方法を学びます。この実践的な演習を通じて、コンテナのネットワーク接続性を制御する実際の経験を積むことができます。
ネットワークとコンテナを作成する
このステップでは、カスタムの Docker ネットワークを作成し、それに接続されたコンテナを実行する方法を学びます。デフォルトでは、Docker コンテナは bridge ネットワークに接続されますが、カスタムネットワークを作成することで、コンテナ間の分離と通信制御をより適切に行うことができます。
まず、my-network という名前の新しいブリッジネットワークを作成しましょう。
docker network create my-network
出力に新しく作成されたネットワークの ID が表示されるはずです。
次に、Docker Hub から nginx イメージを取得します。このイメージを使用してコンテナを作成します。
docker pull nginx
このコマンドは nginx イメージをローカルマシンにダウンロードします。
では、Nginx コンテナを実行し、先ほど作成した my-network に接続しましょう。コンテナの名前は my-nginx とします。
docker run -d --name my-nginx --network my-network nginx
このコマンドを分解して説明しましょう。
docker run: このコマンドはコンテナを実行するために使用されます。-d: このフラグはコンテナをデタッチドモードで実行します。つまり、バックグラウンドで実行されます。--name my-nginx: これはコンテナにmy-nginxという名前を割り当てます。--network my-network: これはコンテナを作成したmy-networkに接続します。nginx: これはコンテナを作成するために使用するイメージです。
コマンドを実行すると、Docker は my-nginx コンテナを起動し、my-network に接続します。
コンテナをネットワークに接続する
前のステップでは、ネットワークを作成し、それに接続されたコンテナを実行しました。このステップでは、既に実行中の コンテナを 追加の ネットワークに接続する方法を示します。異なるネットワーク上の他のコンテナと通信する必要がある場合、これは便利です。
まず、another-network という名前の別の新しいブリッジネットワークを作成しましょう。
docker network create another-network
出力にこの新しいネットワークの ID が表示されるはずです。
では、既存の my-nginx コンテナをこの新しい another-network に接続します。
docker network connect another-network my-nginx
このコマンドは、指定されたコンテナ (my-nginx) を指定されたネットワーク (another-network) に接続します。これで、コンテナは my-network と another-network の両方にネットワークインターフェイスを持つようになります。
コンテナが両方のネットワークに接続されていることを確認するために、コンテナのネットワーク設定を調べることができます。
docker inspect my-nginx
出力の "Networks" セクションを探します。my-network と another-network の両方のエントリが表示され、コンテナが両方のネットワークに正常に接続されていることを示しているはずです。
コンテナをネットワークから切断する
前のステップでは、my-nginx コンテナを追加のネットワーク another-network に接続しました。このステップでは、コンテナを特定のネットワークから切断する方法を学びます。コンテナが特定のネットワークの一部である必要がなくなった場合に便利です。
my-nginx コンテナを another-network から切断するには、docker network disconnect コマンドを使用します。
docker network disconnect another-network my-nginx
このコマンドは、ネットワーク名 (another-network) とコンテナ名 (my-nginx) を引数として受け取ります。
このコマンドを実行すると、コンテナは指定されたネットワークから削除されます。共有ネットワークにも接続されていない限り、another-network 上の他のコンテナと通信できなくなります。
コンテナが切断されたことを確認するために、再度コンテナのネットワーク設定を調べることができます。
docker inspect my-nginx
出力の "Networks" セクションを見てください。ここでは、my-network のみが表示され、another-network は表示されないはずです。これにより、コンテナが another-network から正常に切断されたことが確認できます。
コンテナが切断されていることを確認する
前のステップでは、my-nginx コンテナを another-network から切断しました。このステップでは、コンテナが実際に another-network に接続されていないことを最終的に確認します。
docker inspect コマンドを再度使用して、my-nginx コンテナのネットワーク設定を調べることができます。
docker inspect my-nginx
このコマンドの出力を確認してください。特に、"Networks" セクションを探します。"Networks" の下には my-network のみが表示されるはずです。このリストに another-network がないことは、コンテナが正常に切断されたことを確認するものです。
このステップは、前の操作の確認として機能し、Docker コンテナのネットワーク状態を確認する方法を強調します。
まとめ
この実験では、Docker コンテナのネットワーク接続の管理方法を学びました。まず、カスタムブリッジネットワークを作成し、docker run --network コマンドを使用してそれに直接接続されたコンテナを起動しました。これにより、コンテナ作成時に特定のネットワークへの初期接続が実証されました。
その後、docker network connect コマンドを使用して、既に実行中のコンテナを追加のネットワークに接続する方法を調べました。最後に、docker network disconnect コマンドを使用してコンテナをネットワークから切断する方法を学び、切断を確認しました。これにより、コンテナ作成後のネットワークメンバーシップ管理の柔軟性が示されました。



