0


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

一、前言

  大家是怎么删除Docker中的镜像和容器的呢,有没有考虑过如何优雅地删除呢?本教程详细指导如何在优雅地删除Docker容器和镜像。如需了解如何在Centos7系统里面安装Docker,可以参考教程【最新Docker在Centos7下安装部署(参考官方教程文档)】

**

本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错,请点点赞,加关注,谢谢!

**

二、优雅删除镜像(

推荐做法

1、查看Docker要删除的镜像,如目标版本为

stable-perl

Nginx

,镜像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

dockerps

查看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所有容器的状态。

dockerps-a

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

dockerrm f66

(3)再查看Docker所有容器的状态,发现 nginx:stable-perl

容器(f66)

已经不存在了。

dockerps-a

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

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

docker rmi df1

删除镜像(df1)

三、优雅删除容器(

推荐做法

1、查看Docker中运行中的容器,例如

Nginx

,容器ID为

39c

,并删除容器。

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

dockerps

(2)删除Nginx容器(

39c

)。

dockerrm 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)查看所有容器的运行状态(包含运行中的和已停止的)。

dockerps-a

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

3、删除容器(

39c

),查看所有容器的运行状态。

(1)删除容器。

dockerrm 39c

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

dockerps-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

)。

dockerrm-f container_id

容器被强制删除

五、总结

**优雅地

删除镜像

的最佳做法是:

先停止容器,再删除容器,最后删除镜像

。**

**优雅地

删除容器

的最佳做法是:

先停止容器,再删除容器

。**

标签: docker 容器 运维

本文转载自: https://blog.csdn.net/u014282578/article/details/127866389
版权归原作者 大白有点菜 所有, 如有侵权,请联系我们删除。

“如何优雅地删除Docker镜像和容器(超详细)”的评论:

还没有评论