Docker:タグがnoneとなったイメージを一括削除する
docker system prune
docker 1.13から、使われていないcontainer/image/volume/networkを一括削除できるコマンドが追加されました
λ docker system prune WARNING! This will remove: - all stopped containers - all volumes not used by at least one container - all networks not used by at least one container - all dangling images Are you sure you want to continue? [y/N] y Deleted Containers: 36d9d9b3160c7b42cd8dc25b8de1373f3c7bcfbaeda18e26cf753acb3882dd09 d1f5f7b8a411360368ea9ee9b5c6bd7711b479d0c3d8bc3b9fc3f20e6c6a7953 a74622372f246f3b3dd3055f4f32cc5880ed6026e4a54654e6aa8767a744bd46 ccb84356a5bb8d54e66725c96166d220d860cade995775266216322d4cf30628 72fcc5a663e6fa7c5dabba930047c02b98f18e4f4d2f937be7f09fb486fb0548 Deleted Volumes: 5c3c29bacb68936e75fdccee1c7b520fe72699f018041e713abbbefafc44f432 cbb727b18c8a153bb8fa64f327e6853852ad51414bff582941a2bded500c9e7b 1e36ceecbf7954010e786cb855be4348053ea1e5fd079677c653f9b3021bea3a Deleted Images: deleted: sha256:e26ff620455bd430dab007160a4ab8c19d983a101ed92bb5255f156e5ecc8f87 deleted: sha256:aba1b2611a2e3f476ba37b10c3f5cbf62068aac469071dbc66039c7db5c2abd2 deleted: sha256:99a3ed5ad6a6b7660730522f0e3603e178003bd2e9c74b20fb5eb6198a4ff9cc deleted: sha256:1429c592c8ce1611fd72d211693f00c8f9a94f99021af8e0285c97697e85be29 Total reclaimed space: 432.7 MB
docker container/image/volume/networkで同様のことができるため t例えば未使用コンテナのみ削除する場合
λ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 7436a91caadfec37a569ce1590934474a79a19c2ba603818cfe3aec19197a274 Total reclaimed space: 0 B
このようになります。
便利になりました。
下記の内容は古くなっています
λ docker images REPOSITORY TAG IMAGE ID CREATED SIZE okisanjp/centos 7 9b217c77fc4d 9 hours ago 310.3 MB <none> <none> 035c6c0b0f6f 10 hours ago 310.3 MB <none> <none> cd290dca7fca 10 hours ago 374 MB <none> <none> ae5d64f006cf 10 hours ago 374 MB ruby 2.3 48f592019f7f 30 hours ago 732 MB nginx latest 01f818af747d 2 days ago 181.6 MB httpd 2.4 0c4363ef5f12 7 days ago 175.4 MB centos 7 67591570dd29 2 weeks ago 191.8 MB mysql 5.7 594dc21de8de 2 weeks ago 400.2 MB d4w/nsenter latest 9e4f13a0901e 3 months ago 83.85 kB okisanjp/centos_lamp latest a3b2954568f3 2 years ago 494.2 MB
Dockerfile作成のためにbuildを繰り返していると、タグが外れたイメージがたくさん残ってしまいます
こちらを一括で消すメモです
https://docs.docker.com/engine/reference/commandline/images/docs.docker.com
昔は無かった気がするのですが(気のせいかな)、docker images コマンドにフィルタオプションがありました。
--filter "dangling=true"
というのをつけるとタグなしイメージがリストできます
λ docker images -f "dangling=true" REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 035c6c0b0f6f 10 hours ago 310.3 MB <none> <none> cd290dca7fca 10 hours ago 374 MB <none> <none> ae5d64f006cf 10 hours ago 374 MB
docker psなどと同様、-q
オプションでIMAGE IDのみを表示できます
λ docker images -f "dangling=true" -q 035c6c0b0f6f cd290dca7fca ae5d64f006cf
ワンライナーで書くと
$ docker rmi $(docker images -f "dangling=true" -q)
普通、こうなると思いますが
Windows環境でcmderを使っていると
λ docker rmi $(docker images -f "dangling=true" -q) unknown shorthand flag: 'q' in -q) See 'docker rmi --help'.
こうなってしまうので
λ docker images -f "dangling=true" -q | xargs docker rmi Deleted: sha256:035c6c0b0f6f1f876edf1e7e664dfa39d469d8379f0f25da768f2f9e7737bcfd ・ ・ ・
こんな感じで消せます
ちなみに、コンテナが使用中のimageは消えないので
λ docker images REPOSITORY TAG IMAGE ID CREATED SIZE okisanjp/centos 7 9b217c77fc4d 10 hours ago 310.3 MB <none> <none> e874cdbbc0e7 10 hours ago 191.8 MB # まだ<none>が残ってる ruby 2.3 48f592019f7f 30 hours ago 732 MB nginx latest 01f818af747d 2 days ago 181.6 MB httpd 2.4 0c4363ef5f12 7 days ago 175.4 MB centos 7 67591570dd29 2 weeks ago 191.8 MB mysql 5.7 594dc21de8de 2 weeks ago 400.2 MB d4w/nsenter latest 9e4f13a0901e 3 months ago 83.85 kB okisanjp/centos_lamp latest a3b2954568f3 2 years ago 494.2 MB λ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6384eb1c332f e874cdbbc0e7 "/bin/sh" 10 hours ago Exited (2) 35 minutes ago jolly_nobel
今回のパターンで言うとIMAGE ID e874cdbbc0e7 のイメージはコンテナが使用中なので消えません
λ docker ps -aq | xargs docker rm 6384eb1c332f λ docker images -f "dangling=true" -q | xargs docker rmi Deleted: sha256:e874cdbbc0e77d65c36d180e916dc2f5cfb842448f919f356d22f58ec66f538d Deleted: sha256:c70d30f4ea3f6ba744878f203bd8c8b2d9a25c2fc5df2389c1f617a9481f75df Deleted: sha256:5d4ed4e86ea9e82877005cf2f75eadc1439d6372be9cc932d2181d08be1b5ba6 Deleted: sha256:4eb0fdbe6f85d335ed192bd414fbabdb284a7eac596e1b869db572862146ac6b λ docker images REPOSITORY TAG IMAGE ID CREATED SIZE okisanjp/centos 7 9b217c77fc4d 10 hours ago 310.3 MB ruby 2.3 48f592019f7f 30 hours ago 732 MB nginx latest 01f818af747d 2 days ago 181.6 MB httpd 2.4 0c4363ef5f12 7 days ago 175.4 MB centos 7 67591570dd29 2 weeks ago 191.8 MB mysql 5.7 594dc21de8de 2 weeks ago 400.2 MB d4w/nsenter latest 9e4f13a0901e 3 months ago 83.85 kB okisanjp/centos_lamp latest a3b2954568f3 2 years ago 494.2 MB
個別に消すなり一括で消すなりして、未使用コンテナを削除すれば消すことができます。
公式ドキュメント
ちゃんと勉強したいので本を一冊買おうかなと思っているところですが、公式ドキュメントの読み応えが有りすぎてこれ読んでるだけでもゲームしてるより楽しいです。