设为首页 收藏本站
查看: 973|回复: 0

[经验分享] docker中删除镜像的描述

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-5-13 09:57:01 | 显示全部楼层 |阅读模式
docker中删除images的命令是docker rmi,但有时候执行此命令并不能删除images

docker@boot2docker:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
php                 latest              d71bada8846a        8 days ago          489.8 MB
hello-world         latest              f1d956dc5945        2 weeks ago         967 B
docker@boot2docker:~$ docker rmi f1d956dc5945
Error response from daemon: Conflict, cannot delete f1d956dc5945 because the container 3e3f017a5df4 is using it, use -f to force
Error: failed to remove images: [f1d956dc5945]

可以看出,image并没有被删除,而且报错被占用,无法删除

查看docker的帮助会发现有两个与删除有关的命令rm和rmi

    rm Remove one or more containers
    rmi Remove one or more images

这里有两个不同的单词,images和container。其中images很好理解,跟平常使用的虚拟机的镜像一个意思,相当于一个模版,而container则是images运行时的的状态。docker对于运行过的image都保留一个状态(container),可以使用命令docker ps来查看正在运行的container,对于已经退出的container,则可以使用docker ps -a来查看。 如果你退出了一个container而忘记保存其中的数据,你可以使用docker ps -a来找到对应的运行过的container使用docker commit命令将其保存为image然后运行。

回到之前的问题,由于image被某个container引用(拿来运行),如果不将这个引用的container销毁(删除),那image肯定是不能被删除。

所以想要删除运行过的images必须首先删除它的container。继续来看刚才的例子,

docker@boot2docker:~$ docker ps -a
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS                   PORTS               NAMES
3e3f017a5df4        hello-world:latest   "/bin/bash"         2 weeks ago         Created                                      determined_newton
36fca46be557        hello-world          "/hello"            2 weeks ago         Exited (0) 2 weeks ago                       clever_bell

可以看出f1d956dc5945的image被3e3f017a5df4和36fca46be557的container使用着,所以必须首先删除该container

[yaxin@ubox ~]$docker rm 117843ade696
Error: container_delete: Impossible to remove a running container, please stop it first2014/03/22 16:36:44 Error: failed to remove one or more containers

这个时候删除镜像可能还会出现错误,比如:

Error: container_delete: Impossible to remove a running container, please stop it first2014/03/22 16:36:44 Error: failed to remove one or more containers

这是因为该container正在运行中(运行docker ps查看),先将其关闭

docker stop CONTAINER ID(具体的值)

然后再删除镜像,就会发现成功

docker@boot2docker:~$ docker rmi  f1d956dc5945
Untagged: hello-world:latest
Deleted: f1d956dc5945042a7aa18067346f1c2f1b47f39590a53f23e009600d5a9b3f49
Deleted: d59cd4c39e502ebb7eabe6b49eb0b5e19d38dede67540c51a27b5426c0976f4e
docker@boot2docker:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
php                 latest              d71bada8846a        8 days ago          489.8 MB

可以看出,image已经被删除。


总结:删除镜像之前,要确保该镜像没有正在运行(可以通过命令:docker ps 来查看),以及运行过被保存记录全部删除(可以通过命令:docker ps -a )

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-216375-1-1.html 上篇帖子: docker安装启动报错 下篇帖子: docker 容器中 crond服务启动后 无法执行
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表