本記事はDocker ver24.0.7の環境で確認しています。
このコマンドは、Dockerネットワークを削除する際に使用します。
コンテナが接続されているネットワークは削除できません。ネットワークの削除を行う場合は、接続されているコンテナを停止、または削除してから行う必要があります。
dockerネットワークに関しましては、別記事「Dockerネットワークの概要とその作り方の解説」をご参照ください。
docker network rmコマンドのフォーマットとオプション
フォーマット
docker network rm [削除ネットワーク名 or ネットワークID] ...
主なオプション一覧
なし
コマンド例
$ docker network rm testnet1
docker network rmコマンドの主な使い方
以下で実例をまじえたコマンドの使い方を解説していきたいと思います。
基本事項の解説
docker network rmコマンドは、dockerネットワークを削除することができます。
削除可能なdockerネットワークは、docker network createコマンドを使って手動で作成したりdocker-composeコマンドなどでコンテナを作成する時にオプション指定で作成されたものなどが対象となります。
また冒頭でふれましたとおり、dockerネットワークを削除する場合は、削除対象のネットワークがコンテナに使われていない状態にする必要があります。
dockerネットワークがコンテナに使われていない状態にするには、対象のコンテナを停止します。
指定したDockerネットワークを削除する
現状のネットワークの一覧を出力してみます。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
この状態で、Dockerネットワークtestnet1とtestnet2を作成します。
$ docker network create -d bridge testnet1
$ docker network create -d bridge testnet2
確認してみます。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
75347c72c897 testnet1 bridge local
ee208368e1a2 testnet2 bridge local
では、以下のコマンドでtestnet1を削除してみましょう。
$ docker network rm testnet1
確認です。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
ee208368e1a2 testnet2 bridge local
testnet1は削除されました。
コンテナが接続されているネットワークは削除できないことを確認する
前項のネットワークtestnet2にコンテナを接続してみます。
$ docker run -dit --init --name testvm1 --net testnet2 ubuntu
これで、コンテナvmtest1は、testnet2に接続された状態で起動されました。
この状態でネットワークtestnet2を削除してみましょう。
$ docker network rm testnet2
以下のようなエラーが発生してしまいました。
Error response from daemon: error while removing network: network testnet2 (中略) has active endpoints
ネットワークtestnet2がアクティブ(動作中)なので削除できない旨のエラーですね。
docker network inspectコマンドでtestnet2の状態を確認してみます。
$ docker network inspect testnet2
「Containers」の部分のみ見てみましょう。
(省略)
"Containers": {
"4ce1dd213fa9e14fc8e38946609404772a146f80df81230dd8eece60056dec6d": {
"Name": "testvm1",
"EndpointID": "6fcbdc34a4dbc453358de40b9ceca027ce80fb3233937a355ab7fbd654818243",
"MacAddress": "02:42:ac:13:00:02",
"IPv4Address": "172.23.0.2/16",
"IPv6Address": ""
}
},
(省略)
Containersの部分には、接続されているコンテナが出力されます。
出力内容(Name部分)を見てみますと、コンテナtestvm1が接続されていることが確認できました。
ではこのコンテナtestvm1を停止してみます。
$ docker stop testvm1
再度docker network inspectコマンドでtestnet2の状態を確認してみます。
$ docker network inspect testnet2
「Containers」の部分のみ表示します。
"Containers": {},
先ほど表示されていたtestvm1が消えていますね。
では、ネットワークtestnet2を削除します。
$ docker network rm testnet2
今度はエラーは出ませんでした。
ネットワークの一覧を出力してみましょう。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
ネットワークtestnet2は削除されていることが確認できました。
ネットワークIDを指定して削除する
ネットワークの削除は、ネットワークIDを指定しても実行可能です。
以下のようにネットワークtestnet10を作成しています。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
126b7bb42100 testnet10 bridge local
この状態で、ネットワークIDを指定してtestnet10を削除してみます。
指定するネットワークIDは、testnet10の左に表示されている「126b7bb42100」ですね。
$ docker network rm 126b7bb42100
確認します。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
削除できました。
複数のネットワークを一度に削除する
ネットワークの削除は複数並べて指定することで一度に行うことが可能です。
以下のようにネットワークtestnet100、testnet200、testnet300を作成しています。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
4f1cccaf6aaf testnet100 bridge local
20d8afeaada2 testnet200 bridge local
5e9d7fdf0b6a testnet300 bridge local
この状態で、testnet100とtestnet200とtestnet300を並べて指定して一度に削除します。
試しに、testnet200だけはネットワークID「20d8afeaada2」を指定してみます。
$ docker network rm testnet100 20d8afeaada2 testnet300
確認します。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3abe6d83703c bridge bridge local
8a9d400abb35 host host local
9b510d65ac45 none null local
削除できました。
おわりに
以上でdocker network rmコマンドの紹介を終わります。
ご指摘、ご要望などが御座いましたらコメントいただけるとうれしいです。
他のDockerコマンドの実例付紹介記事は、本サイト内の別記事「Dockerのコマンドの一覧(オリジナルな実例付き)」をご参照ください。
最後までお読みいただきありがとうございました。
コメント