Docker
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Docker 删除及清理镜像的⽅法
⽬录
⼀、通过标签删除镜像
⼆、通过ID删除镜像
三、删除镜像的限制
四、清理镜像
⼀、通过标签删除镜像
通过如下两个都可以删除镜像:
docker rmi [image]
或者:
docker image rm [image]
⽀持的⼦命令如下:
-f, -force: 强制删除镜像,即便有容器引⽤该镜像;
-no-prune: 不要删除未带标签的⽗镜像;
例如,我们想删除上章节创建的allen_mysql:5.7镜像,命令如下:
docker rmi allen_mysql:5.7
从上⾯章节中,我们知道allen_mysql:5.7和docker.io/mysql:5.7实际上指向的是同⼀个镜像,那么,您可以能会有疑问,我删除了allen_mysql:5.7, 会不会将docker.io/mysql:5.7镜像也给删除了?实际上,当同⼀个镜像拥有多个标签时,执⾏docker rmi命令,只是会删除了该镜像众多标签中,您指定的标签⽽已,并不会影响原始的那个镜像⽂件。
不信的话,我们可以执⾏docker images命令,来看下docker.io/mysql:5.7镜像还在不在:
可以看到,docker.io/mysql:5.7镜像依然存在!
那么,如果某个镜像不存在多个标签,当且仅当只有⼀个标签时,执⾏删除命令时,您就要⼩⼼了,这会彻底删除镜像。
例如,这个时候,我们再执⾏docker rmi docker.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命令后,还是告诉我们释放了多少存储空间!
到此这篇关于Docker 删除及清理镜像的⽅法的⽂章就介绍到这了,更多相关Docker 删除及清理镜像内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。