背景
初用docker,pull下来一个没有用的镜像,还挺大的,为了节省空间要把删除。还是有好几步,也进一步理解一下docker。
删除过程
先查看当前镜像
1
2
3
4zhengkaideMacBook-Pro:~ zhengk$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hub.baidubce.com/paddlepaddle/paddle latest d6410dc2c2a2 11 days ago 1.46GB
hub.baidubce.com/paddlepaddle/paddle latest-dev 8b4039144315 2 weeks ago 8.02GB删镜像
1
2zhengkaideMacBook-Pro:~ zhengk$ docker rmi d6410dc2c2a2
Error response from daemon: conflict: unable to delete d6410dc2c2a2 (must be forced) - image is being used by stopped container 5bfa8ac6cbaa直接删除镜像就会有一个错误提示,说有一个未运行的容器正在使用,并给出了容器的id。
查看当前的容器
1
2
3
4
5
6
7
8
9zhengkaideMacBook-Pro:~ zhengk$ docker ps -a -q
321364929b40
4b39bcd23d5e
cf7d62e89e2c
4ce996304e81
543f353e36a6
53614038cf8b
6af4e803c1df
5bfa8ac6cbaa这里需要加上
-a
的参数才行,否则只会显示运行中的容器。停止容器
1
2zhengkaideMacBook-Pro:~ zhengk$ docker stop 5bfa8ac6cbaa
5bfa8ac6cbaa删除容器
1
2zhengkaideMacBook-Pro:~ zhengk$ docker rm 5bfa8ac6cbaa
5bfa8ac6cbaa
再次删除镜像
1
2
3
4
5
6
7
8
9
10
11zhengkaideMacBook-Pro:~ zhengk$ docker rmi d6410dc2c2a2
Untagged: hub.baidubce.com/paddlepaddle/paddle:latest
Untagged: hub.baidubce.com/paddlepaddle/paddle@sha256:86ee075613bed3984dea9d745c14d7dd65d8f85d08a7d831560ef30d53f17a62
Deleted: sha256:d6410dc2c2a22d9bc2b8bd24341268f3f837ad3d1f79f71460f4055b7ec93e78
Deleted: sha256:52783f218170a2311fc3be53c0997fc14e10883d707d1a7f6d35a851ec3e878c
Deleted: sha256:315b57727c8dd33893082600afa70befc938aaf2da0eac606973f531f2b4f8db
Deleted: sha256:17ca841bc55eeb759914983629afe7ca099b0c2d88e0c569c7aa9d2d64d5bc21
Deleted: sha256:59a6856f439d187f3ce3381d0a6b0816db99cc3d8468bcf8c9d1c39d2071dcff
Deleted: sha256:82997a16a0d57ac7d8b416c0d83f5841193b6a56a7844b486ab6324730867fe0
Deleted: sha256:5c6983f277f26021b5e38501fdf06fa29f7158a93641f3f10aedbdc9869121d0
Deleted: sha256:aa54c2bc12290df2851a94b8834cae75e4627219d2b423d4d3db8b0a497e79a2删除成功
总结
docker在运行镜像时,会生成容器。删除镜像时,需要先删除容器。
所以需要先删除镜像对应的所有容器,再删除镜像。
正常删除思路如下:
- 通过
docker ps -a
可以查看所有容器和镜像的对应管理, - 然后
grep
提取涉及需要删除镜像的条目, - 再使用
awk
提去容器id, - 传给
docker rm
执行操作。
简化一下命令:
删除容器:
1
docker rm $(docker ps -a |grep 镜像名 | awk '{print $1}')
删除镜像
1
docker rmi 镜像ID