1、删除镜像步骤
1.首先,查询镜像,执行命令:docker images -a
语句:
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
解释:-a显示所有,-q只显示ID一列,-f根据提供的条件过滤输出;[REPOSITORY[:TAG]]是根据repo或repo:tag 查询
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show numeric IDs
2.删除镜像:docker rmi [IMAGE ID]
3.可能出现的问题及解决办法:
-
错误提示1——image is being used by stopped container xxxxx;
- 原因:某个容器正在使用此image
- 解决:首先查询容器 docker ps -a ,再删除容器 docker rm [CONTAINER ID]
-
错误提示2-- image has dependent child images
- 原因:此image依赖与其他更底层的image
- 解决:要先删除依赖的image,docker rmi [IMAGE ID]
2、批量删除镜像
在构建镜像时,可能会不成功,对于很多这样的的镜像可以进行批量删除:
docker rmi $(docker images -a | grep "none" | awk '{print $3}')
docker rmi $(docker images -a -q | grep "none")
命令稍作解释:
1.在批量删除镜像时,一定要使用docker images -a,否则查询不出来image ID,导致删除失败;
2.再则grep "none" none为要匹配的字符,是REPOSITORY包的字符;如果批量删除失败,那可能是image相互依赖,就是none的镜像也存在依赖。
3.最后,awk '{print $3}',是打印第三个参数和docker images -q是相同的作用——打印输出 IMAGE ID
关于image has dependent child images问题
1.先说一下个人解决方法,笨方法,一个个试着删除的(累眼睛啊),docker rmi IMAGE ID。
2.通过docker rm REPOSITORY:TAG 进行删除,对我无效
具体参考: