Dockerに慣れる : 変更したコンテナイメージを保存する でコンテナイメージを作成することによって変更を保存したが、そうするとコンテナイメージが増えていく。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd_test 0.0.2 e51586e6a3bf 11 hours ago 221MB
httpd_test 0.0.1 9ae8cc7c6375 12 hours ago 221MB
nginx latest 2622e6cca7eb 2 weeks ago 132MB
httpd latest ccbcea8a6757 2 weeks ago 166MB
増えてしまって不要になったコンテナイメージを消去する方法を調べた。
参考:
イメージの削除
- コマンド:
docker rmi [イメージID]
- 実際にdocker-whale削除しようと実行してみるとコンテナが存在しているというメッセージが表示される
$ docker rmi 2f37bab81128 Error response from daemon: Conflict, cannot delete 2f37bab81128 because the container b07c7c83b892 is using it, use -f to force Error: failed to remove images: [2f37bab81128]
- forceオプションをつけてみると消えた(コンテナが先に消えていればforceオプションは不要) ちなみに、なんでこんなにいっぱいのファイルが削除されるんだろう?と思ったら中間ファイルらしい。
docker images -a
で中間ファイルが確認できる。$ docker rmi -f 2f37bab81128 Untagged: docker-whale:latest Deleted: 2f37bab81128991f9e024bc1064be806cd3bf591e8d269d9ceea8f4f768b414e Deleted: 7191e8874482e349e2fb04ccb4c15b925439a8c884e3a266bd41adb324dd9f9a Deleted: e36145689a651426e87b3d906273c2c06aacd470d0953061f8d9bc00015d9d5c Deleted: f71b492d24edf7b8e065e2debc0f2eb6502524f8d5f8eb6bb89b2eacd187c2cf
- 削除されたか確認
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 0a6ba66e537a 2 weeks ago 960 B docker/whalesay latest ded5e192a685 5 months ago 247 MB
- forceでイメージを削除した場合でも、コンテナのほうは残っているみたい
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b07c7c83b892 docker-whale "/bin/sh -c '/usr/gam" 10 minutes ago Exited (0) 10 minutes ago clever_ptolemy
コンテナを削除してからイメージを削除するのがきれいですね。
ざっくり
docker rmi
コマンドで消せる
docker rmi -f
ショート ID かロング ID、タグ、digest を使ってイメージを削除できます。 イメージがタグによって参照されている場合、イメージを削除する前にそれらの削除が必要です。 Digest の参照値はイメージのタグを削除する時、自動的に削除されます。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE test1 latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB) test latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB) test2 latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB) $ docker rmi fd484f19954f Error: Conflict, cannot delete image fd484f19954f because it is tagged in multiple repositories, use -f to force 2013/12/11 05:47:16 Error: failed to remove one or more images $ docker rmi test1 Untagged: test1:latest $ docker rmi test2 Untagged: test2:latest $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE test latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB) $ docker rmi test Untagged: test:latest Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8
ざっくり
とりあえず、 nginx
を消してみる。動作している nginx
コンテナプロセスがないかチェックする
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
コンテナイメージ一覧でコンテナイメージ ID を確認する
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd_test 0.0.2 e51586e6a3bf 11 hours ago 221MB
httpd_test 0.0.1 9ae8cc7c6375 12 hours ago 221MB
nginx latest 2622e6cca7eb 2 weeks ago 132MB
httpd latest ccbcea8a6757 2 weeks ago 166MB
nginx
のコンテナイメージ ID は 2622e6cca7eb
だった。これを削除してみる
$ docker rmi 2622e6cca7eb
Untagged: nginx:latest
Untagged: nginx@sha256:21f32f6c08406306d822a0e6e8b7dc81f53f336570e852e25fbe1e3e3d0d0133
Deleted: sha256:2622e6cca7ebbb6e310743abce3fc47335393e79171b9d76ba9d4f446ce7b163
Deleted: sha256:e86d1b8b130bec203609b4b1d7b851bd763fa16e513e5a3fa6102ebea23260e0
Deleted: sha256:8f9f007533543813bb1aef80b791a16e5e16c7cbbbc456a3a483d0fa7a9effcc
Deleted: sha256:e2c0065a77fee75795cdcf9f19a72f11769332423cd52ec9e19aacfb878aec8b
Deleted: sha256:059442698ef65fe8545e4fe9657988a10329b9c3663b368ae7ee0007a9c43949
そこそこ中間イメージがあったらしい。実際に消えたか確認してみる。
$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd_test 0.0.2 e51586e6a3bf 23 hours ago 221MB
httpd_test 0.0.1 9ae8cc7c6375 23 hours ago 221MB
httpd latest ccbcea8a6757 2 weeks ago 166MB
httpd_test
も消去してみる
$ docker rmi httpd_test:0.0.1
Untagged: httpd_test:0.0.1
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd_test 0.0.2 e51586e6a3bf 23 hours ago 221MB
httpd latest ccbcea8a6757 2 weeks ago 166MB
httpd_test:0.0.1
を消しただけではタグが消えただけのようだ。 httpd_test:0.0.2
も消去してみる。
$ docker rmi httpd_test:0.0.2
Untagged: httpd_test:0.0.2
Deleted: sha256:e51586e6a3bffe7a405af9311a1b319807770e5e0fbccf6c08776ddbcc012064
Deleted: sha256:482d158bcd884a66f9a43fb93dda4aa48806a39319638b3b0d79e666d0e97ca4
Deleted: sha256:9ae8cc7c63757925229884abe20d2214be71cb2a6be468aec41fc8fb52760580
Deleted: sha256:aa8e6da6ff3f73f9b68465a37f041a6f89bbd22ef4d522821d0e3437092f0199
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest ccbcea8a6757 2 weeks ago 166MB
全てのタグが消えることでコンテナイメージも消えるようだ。
コンテナイメージとして変更を保存していると、コンテナを消去する=変更内容を消去することになる。 消去するコンテナイメージをちゃんと確認する。