お掃除
Docker for Windowsをインストールしてから色々と試行錯誤を繰り返していると、
いつの間にかDockerコンテナや、Dockerイメージがたまってきます。
Dockerイメージはディスク容量も大きいため、消したくなります。
1個ずつイメージを削除するのも、面倒なので下記のコマンドで一括削除します。
コンテナの一括削除
「docker ps -a」で一覧表示されるDockerコンテナを一括で削除します。
>for /f %T IN ('docker ps -a') DO docker rm %T
イメージの一括削除
「docker images」で一覧表示されるDockerイメージを一括削除します。
for /f %T IN ('docker images --format "{{.ID}}"') DO docker rmi %T
ただし、依存関係のあるイメージは先に依存先のイメージを削除しないと消えない場合があります。。
その場合は上記のコマンドを何度か実行すれば、いずれは全て削除されます。
REPOSITORY名でフィルターをかけてイメージを削除する。
下記はDockerイメージのREPOSITORY名に「name」を含むイメージのみを削除するコマンドです。
for /f %T IN ('docker images --format "{{.ID}} {{.Repository}}" ^| find "name"') DO docker rmi %T
削除を実際に実行するまえに、下記のコマンドにより対象イメージの確認ができます。
for /f %T IN ('docker images --format "{{.ID}}:{{.Repository}}" ^| find "name"') DO echo %T
なお、2つのコマンドで{{.ID}}と{{.Repositry}}の間の区切り文字が「 」(半角空白)と「:」で差異があるので注意が必要です。
「name」の部分は削除したいREPOSITORY名の一部を入力することで、指定した名前のイメージが削除できます。
IN ('コマンド')の実行結果を変数%Tに設定して、DO以降のコマンドを繰り返し実行しますが、%TにはIN ('コマンド')の実行結果の1行ずつの最初の半角空白文字まで設定されます。
IDの指定について
DockerではコンテナIDやイメージIDはコマンド実行時に前方一致で検索されるので注意が必要です。
つまり、
>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sukkyxp/vsftp03 latest ae274714d3f8 16 seconds ago 272MB
sukkyxp/vsftp01 latest 2d706aef6824 About a minute ago 272MB
sukkyxp/vsftp02 latest 2d706aef6824 About a minute ago 272MB
centos latest 49f7960eb7e4 39 hours ago 200MB
の場合に
>docker rmi 2
を実行するとIMAGE IDの先頭が「2」のイメージが全て削除されます。