一、使用标签删除镜像可以通过以下两种方式删除镜像:
文档RMI [ image ]或:
文档图像RM [图像]支持的子命令包括:
-f,-force:强制删除镜像。 即使容器引用镜像; -no-prune:请勿删除没有标签的父镜像;
例如,假设您要删除在上一章中创建的allen_mysql:5.7镜像。 命令如下所示。
docker rmi allen_mysql:5.7
在上面的章节中,我们知道allen_mysql:5.7和Docker.io/mysql:5.7实际上指向同一个镜像,但是即使删除了Allen_MySQL33605.7,docker.io
事实上,如果同一镜像具有多个标签,则docker rmi命令只会删除该镜像的许多标签中的指定标签,而不会影响原始镜像文件。
如果不相信,请运行docker images命令验证docker.io/mysql:5.7镜像是否尚不存在。
您可以看到docker.io/mysql:5.7镜像仍然存在。
如果镜像中不存在多个标签,并且只有一个标签,则在执行删除命令时,请注意要永久删除镜像。
例如,在这种情况下,请运行dockerrmidocker.io/MySQL :5.7命令。
如上图所示,docker.io/mysql:5.7中镜像的所有文件层次结构都已删除。 本地不再存在此镜像!
二、要按ID删除镜像,不仅可以按标签名称删除镜像,还可以通过创建镜像ID删除镜像。 例如:
当docker rmi ee7cbd482336建立按ID删除镜像时,它会首先尝试删除指向镜像的所有标签,然后删除镜像本身。
三.删除镜像限制删除镜像很容易,但并不是随时随地都可以删除,存在一些限制条件。
如果镜像创建的容器未销毁,则无法删除镜像。 为了验证这个,让我们做个实验吧。 首先,用docker pull alpine命令拉出最新的alpine镜像,启动镜像,输出hello、docker!
然后,尝试删除此镜像:
可以看到提示信息,不能删除此镜像。 因为集装箱在引用他! 此外,此消息还表明,只有通过添加-f子命令(强制删除)才能删除镜像
虽然是docker rmi -f docker.io/alpine,但一般不推荐使用这种暴力方法。 正确的做法如下。
首先,删除引用此镜像的容器; 删除此镜像; 也就是说,如上图所示,引用此镜像的容器id(9d59e2278553 )来运行删除命令。
docker rm 9d59e2278553然后运行删除镜像的命令。
docker rmi 5cb3aa00f899
此时,可以正常删除!
四.清理镜像我们使用了Docker一段时间后,系统中通常会保留一些临时的、未使用的镜像文件。 可以通过以下命令进行清理:
docker image prune支持的子命令如下:
-a,--all:不仅删除临时文件,还删除所有未使用的镜像; -f,--force :强制删除镜像文件,无需弹出确认; 另外,请告诉我运行docker image prune命令后释放了多少存储空间。