docker删除镜像和容器
[TOC]
优雅删除镜像(推荐做法)
1、查看Docker要删除的镜像,如目标版本为stable-perl的Nginx,镜像ID(IMAGE ID)为 df1998569adb。
1 | docker images |
2、使用命令“docker rmi 镜像ID”删除Nginx(stable-perl)的镜像,只取“IMAGE ID”的前3个字符即可。
1 | docker rmi df1 |
报错内容如下,意思是镜像(df1)存在使用中的容器(f66),不能强制删除镜像。官方的意思是要先停止容器运行,再进行镜像的删除操作吗?
1 | 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。
1 | docker ps |
4、先停止nginx:stable-perl容器(f66)运行,再去删除Nginx(stable-perl)镜像(df1)。
(1)停止容器(f66)运行。
1 | docker stop f66 |
(2)删除镜像(df1)。
1 | docker rmi df1 |
What?都已经停止容器(f66)运行了,删除镜像(df1)怎么还报错啊!?其实,只停止容器的正常运行还不行,还有最重要的一步没做:删除容器。
1 | 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所有容器的状态。
1 | docker ps -a |
(2)删除 nginx:stable-perl 容器。
1 | docker rm f66 |
(3)再查看Docker所有容器的状态,发现 nginx:stable-perl 容器(f66)已经不存在了。
1 | docker ps -a |
6、删除镜像,再查看所有镜像,发现列表中已经不存在版本为stable-perl的Nginx镜像(df1)。
1 | docker rmi df1 |
优雅删除容器(推荐做法)
1、查看Docker中运行中的容器,例如 Nginx ,容器ID为 39c,并删除容器。
(1)查看Docker中运行中的容器。
1 | docker ps |
(2)删除Nginx容器(39c)。
1 | docker rm 39c |
(3)发现会报错,报错内容如下,意思是容器还在运行,不能删除,先停止运行再删除,或直接强制删除。
1 | Error response from daemon: You cannot remove a running container 39cdb69246fdb6b623cff60af5b59e033149b6940bc5e0432c760ea245da81a9. Stop the container before attempting removal or force remove |
2、停止容器(39c),查看所有容器的运行状态。
(1)停止容器。
1 | docker stop 39c |
(2)查看所有容器的运行状态(包含运行中的和已停止的)。
1 | docker ps -a |
3、删除容器(39c),查看所有容器的运行状态。
(1)删除容器。
1 | docker rm 39c |
(2)查看所有容器的运行状态(包含运行中的和已停止的)。
1 | docker ps -a |
(3)容器(39c)已经不存在了,说明被成功删除了。