image has dependent child images问题总结

5,439 阅读1分钟

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. 错误提示1——image is being used by stopped container xxxxx;

    1. 原因:某个容器正在使用此image
    2. 解决:首先查询容器 docker ps -a ,再删除容器 docker rm [CONTAINER ID]
  2. 错误提示2-- image has dependent child images

    1. 原因:此image依赖与其他更底层的image
    2. 解决:要先删除依赖的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 进行删除,对我无效

具体参考:

stackoverflow

www.cnblogs.com/111testing/…