未使用の Docker ネットワークを削除する方法

DockerBeginner
オンラインで実践に進む

はじめに

Docker は強力なコンテナ化プラットフォームであり、一貫性があり拡張可能な環境でアプリケーションを構築、デプロイ、管理することができます。Docker を使用する際には、クリーンで効率的なネットワーク構成を維持することが重要です。このチュートリアルでは、未使用の Docker ネットワークを特定して削除するプロセスを案内し、Docker 環境の最適化を支援します。

Docker ネットワークの理解

Docker ネットワークは Docker エコシステムにおける基本的な概念です。コンテナを接続し、コンテナ間の通信を可能にする手段を提供します。Docker はいくつかのネットワークドライバをサポートしており、それぞれ独自の機能と使用例があります。

Docker のデフォルトのネットワークドライバは bridge ドライバで、これはホストマシン上に仮想ブリッジを作成し、コンテナをそれに接続します。これにより、コンテナ同士およびホストシステムとの通信が可能になります。その他のネットワークドライバには、overlayhostmacvlan などがあり、それぞれ独自の利点と使用例があります。

graph LR A[Host Machine] --> B[Docker Bridge Network] B --> C[Container 1] B --> D[Container 2] B --> E[Container 3]

overlay ネットワークドライバはマルチホストネットワーキングに使用され、異なる Docker ホスト上のコンテナが相互に通信できるようにします。host ネットワークドライバはコンテナとホスト間のネットワーク分離を解除し、macvlan ドライバはコンテナに MAC アドレスを割り当てることができ、ネットワーク上の物理デバイスのように見せることができます。

Docker を使用する際には、異なるネットワークドライバとその使用例を理解することが重要です。これにより、アプリケーションに最適なネットワーク構成を選択することができます。

未使用の Docker ネットワークの特定と一覧表示

未使用の Docker ネットワークを特定して一覧表示するには、以下の Docker CLI コマンドを使用できます。

すべての Docker ネットワークの一覧表示

システム上のすべての Docker ネットワークを一覧表示するには、docker network ls コマンドを使用できます。

docker network ls

これにより、以下の列を持つテーブルが出力されます。

  • NETWORK ID
  • NAME
  • DRIVER
  • SCOPE

未使用の Docker ネットワークの特定

未使用の Docker ネットワークを特定するには、docker network ls コマンドに -f(フィルター)オプションを使用できます。

docker network ls -f "dangling=true"

これにより、どのコンテナにも使用されていないすべての Docker ネットワークが一覧表示されます。dangling=true フィルターにより、接続されたコンテナのないネットワークのみが表示されます。

あるいは、以下のコマンドを使用して、実行中のコンテナによって使用されていないすべてのネットワークを一覧表示することもできます。

docker network ls --filter "scope=local" --filter "driver=bridge" --filter "name=^((?!host|none|bridge).)*$" --format "{{.ID}}\t{{.Name}}\t{{.Driver}}"

このコマンドは、ネットワークの一覧をフィルターして、デフォルトの hostnone、または bridge ネットワークではないローカルのブリッジベースのネットワークのみを表示します。

このコマンドの出力は、以下の列を持つテーブルになります。

  • NETWORK ID
  • NAME
  • DRIVER

これらのコマンドを使用することで、システム上の未使用の Docker ネットワークを簡単に特定して一覧表示でき、Docker 環境のクリーンアップに役立ちます。

未使用の Docker ネットワークの削除

未使用の Docker ネットワークを特定した後、docker network rm コマンドを使用して削除することができます。

単一の未使用ネットワークの削除

単一の未使用 Docker ネットワークを削除するには、以下のコマンドを使用できます。

docker network rm <network_name>

<network_name> を削除したいネットワークの名前に置き換えてください。

複数の未使用ネットワークの削除

複数の未使用 Docker ネットワークがある場合、docker network ls コマンドに -q(quiet)オプションを使用してネットワーク ID を取得し、それらを docker network rm コマンドに渡すことで、1 つのコマンドで削除することができます。

docker network ls -f "dangling=true" -q | xargs docker network rm

このコマンドはまず、-f "dangling=true" フィルターを使用した docker network ls コマンドですべての未使用(dangling)Docker ネットワークを一覧表示します。-q オプションはネットワーク ID のみを出力するために使用されます。これらの ID は、xargs ユーティリティを使用して docker network rm コマンドに渡され、一覧表示されたすべてのネットワークが削除されます。

すべての未使用ネットワークの削除

システム上のすべての未使用 Docker ネットワークを削除したい場合は、以下のコマンドを使用できます。

docker network prune

このコマンドは、どのコンテナにも使用されていないすべてのネットワークを削除します。

これらのコマンドを使用することで、システム上の未使用の Docker ネットワークを簡単に削除でき、Docker 環境をクリーンで整理された状態に保つのに役立ちます。

まとめ

このチュートリアルでは、未使用のネットワークを特定して削除することで、Docker ネットワークを効果的に管理する方法を学びました。説明された手順に従うことで、Docker 環境を整理された状態で効率的に維持し、パフォーマンスの向上とリソース消費の削減を実現できます。Docker ネットワーク管理を習得することは、すべての Docker ユーザーや管理者にとって重要なスキルです。