当前位置: 代码网 > it编程>开发工具>Docker > 如何优雅地删除Docker镜像和容器(超详细)

如何优雅地删除Docker镜像和容器(超详细)

2024年08月06日 Docker 我要评论
大家是怎么删除Docker中的镜像和容器的呢,有没有考虑过如何优雅地删除呢?本教程详细指导如何在优雅地删除Docker容器和镜像。

一、前言

 
  大家是怎么删除docker中的镜像和容器的呢,有没有考虑过如何优雅地删除呢?本教程详细指导如何在优雅地删除docker容器和镜像。如需了解如何在centos7系统里面安装docker,可以参考教程【最新docker在centos7下安装部署(参考官方教程文档)
 
  本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错,请点点赞,加关注,谢谢!
 

二、优雅删除镜像(推荐做法

 

1、查看docker要删除的镜像,如目标版本为stable-perlnginx,镜像id(image id)为 df1998569adb
docker images

查看docker要删除的镜像

 

2、使用命令“docker rmi 镜像id”删除nginx(stable-perl)的镜像,只取“image id”的前3个字符即可。
docker rmi df1

使用命令“docker rmi 镜像id(image id)”删除指定的镜像 
  报错内容如下,意思是镜像(df1)存在使用中的容器(f66),不能强制删除镜像。官方的意思是要先停止容器运行,再进行镜像的删除操作吗?

error response from daemon: conflict: unable to delete df1998569adb (cannot be forced) - image is being used by running container f6678f2821c7

 

3、查看docker运行中的容器,如容器 nginx:stable-perl ,容器id为 f66
docker ps

查看docker运行中的容器
 

4、先停止nginx:stable-perl容器(f66)运行,再去删除nginx(stable-perl)镜像(df1)

(1)停止容器(f66)运行。

docker stop f66

(2)删除镜像(df1)。

docker rmi df1

停止容器(f66)运行,再去删除镜像(df1) 
  what?都已经停止容器(f66)运行了,删除镜像(df1)怎么还报错啊!?其实,只停止容器的正常运行还不行,还有最重要的一步没做:删除容器

error response from daemon: conflict: unable to delete df1998569adb (must be forced) - image is being used by stopped container f6678f2821c7

 

5、查看docker所有容器的状态(包含运行中的和已停止的),“status”为“exited(0)”代表停止运行。执行删除容器命令“docker rm f66”,删除 nginx:stable-perl 容器,再查看 nginx:stable-perl 容器是否还在列表中。

(1)查看docker所有容器的状态。

docker ps -a

(2)删除 nginx:stable-perl 容器。

docker rm f66

(3)再查看docker所有容器的状态,发现 nginx:stable-perl 容器(f66)已经不存在了。

docker ps -a

查看docker所有容器的状态并删除容器
 

6、删除镜像,再查看所有镜像,发现列表中已经不存在版本为stable-perl的nginx镜像(df1)。
docker rmi df1

删除镜像(df1)
 

三、优雅删除容器(推荐做法

 

1、查看docker中运行中的容器,例如 nginx ,容器id为 39c,并删除容器。

(1)查看docker中运行中的容器。

docker ps

(2)删除nginx容器(39c)。

docker rm 39c

(3)发现会报错,报错内容如下,意思是容器还在运行,不能删除,先停止运行再删除,或直接强制删除。

error response from daemon: you cannot remove a running container 39cdb69246fdb6b623cff60af5b59e033149b6940bc5e0432c760ea245da81a9. stop the container before attempting removal or force remove

查看docker中运行中的nginx容器并删除
 

2、停止容器(39c),查看所有容器的运行状态。

(1)停止容器。

docker stop 39c

(2)查看所有容器的运行状态(包含运行中的和已停止的)。

docker ps -a

停止容器(39c),查看所有容器的运行状态
 

3、删除容器(39c),查看所有容器的运行状态。

(1)删除容器。

docker rm 39c

(2)查看所有容器的运行状态(包含运行中的和已停止的)。

docker ps -a

(3)容器(39c)已经不存在了,说明被成功删除了。
 
删除容器(39c),查看所有容器的运行状态
 

四、暴力删除镜像和容器(不推荐做法

 

1、经验证,镜像中的容器状态已停止已删除的才能被强制删除,同时对应的容器(d70)也会被删除。若容器还在运行中删除镜像会报错命令“docker rmi”后面加参数“-f”。“image_id”代表镜像id(image id)。
docker rmi -f image_id

先停止容器才能允许镜像被强制删除 
删除出镜像的同时也会删除对应的容器
 

2、无论容器是否正在运行中或者已停止,都可被强制删除!命令“docker rm”后面加参数“-f”。“container_id”代表容器id(container id)。
docker rm -f container_id

容器被强制删除
 

五、总结

  优雅地删除镜像的最佳做法是:先停止容器,再删除容器,最后删除镜像
 
  优雅地删除容器的最佳做法是:先停止容器,再删除容器

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com