Dockerイメージは、docker images
のコマンドを見るとどんどん増えていくのが分かります。
そもそもどうやって消すんだろう?ということで、イメージとコンテナの削除方法について記載します。
イメージを削除するにはまずそのイメージに紐づくコンテナを削除している必要がありますが、forceオプションによる強制削除も可能です。ここでは先にコンテナの削除方法について記載します。
コンテナの削除方法
動いているコンテナの確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
停止しているコンテナの確認
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f60487285325 hello-world "/hello" 2 seconds ago Exited (0) 2 seconds ago nostalgic_goldstine
8541933cccdc hello-world "/hello" 3 seconds ago Exited (0) 2 seconds ago sick_euclid
5200866fb18d hello-world "/hello" 4 seconds ago Exited (0) 4 seconds ago hopeful_mestorf
eea5b2620e02 hello-world "/hello" 7 minutes ago Exited (0) 7 minutes ago ecstatic_hopper
a403ffe73d31 hello-world "/hello" 16 minutes ago Exited (0) 16 minutes ago romantic_thompson
romantic_thompson
コンテナの削除
- コマンド:
docker rm [コンテナID]
- 実際に削除してみる(一番古いコンテナ)
$ docker rm a403ffe73d31
a403ffe73d31
- 消えていることを確認
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f60487285325 hello-world "/hello" 45 seconds ago Exited (0) 44 seconds ago nostalgic_goldstine
8541933cccdc hello-world "/hello" 46 seconds ago Exited (0) 45 seconds ago sick_euclid
5200866fb18d hello-world "/hello" 47 seconds ago Exited (0) 46 seconds ago hopeful_mestorf
eea5b2620e02 hello-world "/hello" 8 minutes ago Exited (0) 8 minutes ago ecstatic_hopper
- 複数指定もできるらしい
$ docker rm eea5b2620e02 5200866fb18d
eea5b2620e02
5200866fb18d
- それでも消えない場合
force(-f)を付与すれば削除することができる。
$ docker rm -f eea5b2620e02
eea5b2620e02
-
docker ps -a -q
は、コンテナIDの一覧をだしてくれるので、それと合わせると一括削除もできる
$ docker rm `docker ps -a -q`
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
イメージの削除方法
- 現状のコンテナの確認
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b07c7c83b892 docker-whale "/bin/sh -c '/usr/gam" 26 seconds ago Exited (0) 25 seconds ago clever_ptolemy
- 現状のイメージの確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker-whale latest 2f37bab81128 About a minute ago 274.1 MB
hello-world latest 0a6ba66e537a 2 weeks ago 960 B
docker/whalesay latest ded5e192a685 5 months ago 247 MB
イメージの削除
- コマンド:
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
コンテナを削除してからイメージを削除するのがきれいですね。