目录
(1)使用docker iamges 找到服务器中要删除的镜像
一、背景
整理内部测试服务器时,发现磁盘可用空间比较少,于是想要删除一些暂时不会使用的文件或应用;
Docker部署AS-V1000平台时,导入了一个占用空间比较大的镜像,占用了空间估计将近100G。现在测试完成,可以将这个镜像删除,以释放磁盘空间。
二、删除出现的问题
1、删除镜像的考虑
从Docker Hub或其他镜像仓库中拉取(或导入)一个镜像时,这个镜像的所有层(layers)和元数据(metadata)都会被下载并存储在Docker宿主机的本地文件系统中。这些镜像数据通常存储在Docker的数据目录(如/var/lib/docker)中。
虽然知道docker相关文件的存储位置,但直接去目录下删除不是一个明智的选择,因为存放镜像的文件夹是由docker的image ID命名的,如果直接删除很容易会删除错误的文件,也有可能会留下残余文件。
如上图所示,overlay2文件夹是是Docker中的存储驱动之一,用于管理镜像和容器层的数据。从外表看无法分辨文件夹内到底是镜像还是正在运行的容器。
2、删除方法
(1)命令
删除docker镜像可以使用docker的管理命令 docker rmi来进行
(2)语法
docker rmi [OPTIONS] IMAGE [IMAGE...]
(3)OPTIONS说明
-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除;
3、删除出现的问题
(1)使用docker iamges 找到服务器中要删除的镜像
(2)使用docker rmi删除镜像
# docker rmi 71c1614af6f0
结果显示删除失败,显示错误Error response from daemon conflict unable to delete 71c1614af6f0(must be forced) -image is being used by stopped container 90fe17d04512 ,如下图所示:
三、问题分析和解决
1、问题分析
根据提示,应该这个镜像被容器90fe17d04512使用了。因此,在删除镜像前,需要将使用要删除的镜像的容器全部删除,镜像才能被正常删除。
2、删除容器
删除docker容器可以使用docker的管理命令 docker rm来进行
(1)查看容器运行状态
删除容器前,需要保证容器处于stop状态,如果容器正在运行,则需要使用docker stop命令来停止容器。
# docker ps -a
可以看出容器没有运行。
(2)删除容器
# docker rm 90fe17d04512
结果如下:
根据提示,可以看出容器被删除了。
3、删除镜像
删除容器后,再次尝试删除镜像
# docker rmi 71c1614af6f0
结果如下:
4、验证镜像是否被删除
通过 docker images查看该镜像已被删除,如下图示:
问题得到解决。
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。