コンテナと匿名ボリュームの削除
このステップでは、コンテナとそれに関連する匿名ボリュームを削除する方法を学びます。コンテナを作成する際、Docker はデータを保存するためのボリュームを作成することがあります。匿名ボリュームとは、作成時に明示的に名前を付けられていないボリュームのことです。通常、イメージの Dockerfile にVOLUME
命令がある場合に作成されます。
匿名ボリュームを作成するコンテナを実行してみましょう。再びubuntu
イメージを使用し、コロンの前に名前を指定せずに-v
フラグでボリュームマウントポイントを指定します。
docker run -d -v /data ubuntu sleep infinity
このコマンドはコンテナと、コンテナ内の/data
にマウントされた匿名ボリュームを作成します。コンテナ ID が表示されます。
<container_id>
次に、作成されたボリュームを確認するため、コンテナを検査します。<container_id>
を実際の実行中コンテナの ID に置き換えてください。
docker inspect <container_id>
docker inspect
の出力は大きな JSON オブジェクトです。"Mounts"
セクションを探してください。/data
にマウントされたボリュームのエントリがあり、"Name"
フィールドには長いランダムな文字列が表示され、これが匿名ボリュームであることを示しています。
...
"Mounts": [
{
"Type": "volume",
"Source": "<volume_name>",
"Target": "/data",
"Consistency": "consistent",
"BindOptions": null,
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
...
docker volume ls
で全てのボリュームをリスト表示することもできます。匿名ボリュームが表示されるはずです。
docker volume ls
出力にはランダムに生成された名前の匿名ボリュームが含まれます。
DRIVER VOLUME NAME
local <volume_name>
デフォルトでは、コンテナを削除してもその匿名ボリュームは削除されません。まずコンテナを停止しましょう。<container_id>
を実際の実行中コンテナの ID に置き換えてください。
docker stop <container_id>
コンテナ ID が表示されます。
<container_id>
次に、ボリュームを削除せずに停止したコンテナを削除します。<container_id>
を実際の停止中コンテナの ID に置き換えてください。
docker rm <container_id>
コンテナ ID が表示されます。
<container_id>
再度docker volume ls
でボリュームを確認します。匿名ボリュームはまだ存在しているはずです。
docker volume ls
出力には匿名ボリュームがまだ含まれます。
では、別の匿名ボリュームを持つコンテナを作成し、コンテナとそのボリュームを一緒に削除してみましょう。
docker run -d -v /data ubuntu sleep infinity
新しいコンテナ ID を取得します。
<new_container_id>
新しいコンテナを停止します。<new_container_id>
を実際の ID に置き換えてください。
docker stop <new_container_id>
コンテナ ID が表示されます。
<new_container_id>
次に、docker rm
に-v
フラグを付けて、停止したコンテナとその匿名ボリュームを一緒に削除します。<new_container_id>
を実際の ID に置き換えてください。
docker rm -v <new_container_id>
コンテナ ID が表示されます。
<new_container_id>
再度docker volume ls
でボリュームを確認します。削除したコンテナに関連する匿名ボリュームはなくなっているはずです。最初に作成した匿名ボリュームはまだ残っているでしょう。
docker volume ls
出力には最初に作成した匿名ボリュームのみが表示されるはずです。