• Docker 删除镜像


     

     版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tang_jin2015/article/details/78898780

    因为尝试使用新的镜像,对原来的镜像进行删除,报错如下:

    Error response from daemon: conflict: unable to delete 037c233c605c (must be forced) - image is being used by stopped container 65e94723f0ed

    意思就是在删除镜像之前,要先删除对应的docker.因为该image被对应的container引用,所以image删除失败。

    [root@vm000949 redis]# docker images
    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    mia/redis                 v2                  a061cf8c12b8        48 minutes ago      210.7 MB
    <none>                    <none>              037c233c605c        2 days ago          203.5 MB

    主要希删除这两个imgae,根据image的id到container中找

    [root@vm000949 redis]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
    1be364973e1d        a061cf8c12b8        "/bin/bash"              42 minutes ago      Exited (137) 5 minutes ago                       thirsty_einstein
    65e94723f0ed        037c233c605c        "/bin/sh -c 'yum -y u"   2 days ago          Exited (1) 2 days ago                            gloomy_mestorf

    Ok.删除它们

    [root@vm000949 redis]# docker rm 65e94723f0ed
    65e94723f0ed
    [root@vm000949 redis]# docker rm 1be364973e1d
    1be364973e1d
    

    再删除镜像,好的,成功啦。

    [root@vm000949 redis]# docker rmi a061cf8c12b8
    Untagged: mia/redis:v2
    Deleted: sha256:a061cf8c12b8a23ea9fe85ebcfc32615f8e9a38dd95961b0dd80ceae658cdc5a
    Deleted: sha256:f80464ae70055852f02c7763858dd97121c0e3d77430cb4df2dc70aec1c19678
    Deleted: sha256:cdcbccf2d746d094040b8383868120d6d73327827b6ee83a8989baab9bf5fa42
    [root@vm000949 redis]# docker rmi 037c233c605c
    Deleted: sha256:037c233c605c5b4266ef6cc208d6c1a07b01fab77e848ec0bbb3bb01bdb3fda1
    Deleted: sha256:7e07f5920a8cef8dbc5a5a663b14dc37d1112b259d93629aa8ded32f0ea0a6ae

    也可以根据提示来的,加-f强制删除镜像。 
    顺便提一下,docker命令: 
    1.docker rm <容器ID或容器名> 
    2.docker stop<容器ID或容器名>

    引申:1.如何删除所有容器;2.如何删除所有容器镜像,3.在创建镜像时会产生很多的中间镜像,这部分镜像是一起删除的吗?none镜像?

    1.首先,解决第一点

    docker rm $(docker ps -aq)

    这里docker ps 的命令包括: 
    1)-a 列出所有容器 
    2)-l 列出最新创建容器 
    3)-n=2 列出最近创建的2个容器 
    4)-q 仅列出容器ID 
    5)-s 显示容器大小 
    所以docker ps -aq 相当于列出所有的容器ID,然后docker rm它们

    但是要注意的是,如果容器正在运行是无法删除,需要先停止:

    Docker stop $(docker ps -aq)

    2.类似的docker image呢? 
    镜像删除语法为:

    docker rmi [OPTIONS] [IMAGEID]

    OPTIONS 的参数包括:-f 强制删除,–no-prune:不移除镜像产生的过程镜像。默认为移除。

    比如:

    Docker rmi $(docker ps -aq)

    这里的-aq显示的是image的ID

    3.如果想要删除没有打tag的none镜像:

    Docker rmi $(docker images -a|grep none|awk '{print $3}')

    也可以写成:

    docker ps -a |grep none }awk '{print $1}'|xargs docker rmi

    通过xagrs传入参数 
    有些什么情况会产生none的镜像? 
    1)在镜像创建过程中创建失败,会产生无效的none镜像 
    2)pull镜像。镜像的垂直父子关系 
    3)使用dockerfile文件创建镜像,重新生成,新的镜像名赋给后者,前面的镜像名字为none

    参考资料: 
    [1]docker强制批量删除none的image镜像 
    [2]Docker中images中none的镜像是否可以删除

  • 相关阅读:
    springboot访问项目中某个module的图片(服务器拿不到)
    ValidForm ajaxurl 进行表单验证检验用户名是否存在
    jrebel热部署配置
    form标签之form:checkboxes
    springboot 整合jsp过程中的一些问题
    springboot的一些配置
    mysql5.7解压版
    [转载][翻译] 利用JSF、SpringFramework和Hibernate构建Web应用的实例讲述
    获取本机MAC地址
    个人职业生涯讨论
  • 原文地址:https://www.cnblogs.com/sddai/p/10427785.html
Copyright © 2020-2023  润新知