如何删除Docker镜像?


如果您已经使用Docker很长时间了,您的本地机器上可能已经存在许多未使用的镜像。这些镜像可能是以前下载的旧版本,或者只是您下载用于测试的镜像。这些镜像会不必要地占用大量空间,并降低整体性能和体验。此外,还有一些未使用的、悬空(dangling)的镜像。

最好删除这些旧镜像,这将帮助您更好地跟踪所有有用的镜像。Docker允许您非常轻松地通过许多不同的命令删除镜像。您可以使用Docker rmi命令、Docker images rm命令,甚至Docker image prune命令来实现。此外,Docker允许您在这些命令中使用多个选项来策略性地删除镜像。

在本文中,我们将讨论所有流行且最常用的命令,这些命令将允许您轻松删除镜像。

删除Docker镜像

如前所述,有几个命令可以互换使用,以从系统中删除一个或多个Docker镜像。让我们从最基本的命令开始。

$ docker image rm [OPTIONS] IMAGE [IMAGE...]

您还可以在此命令中使用多个选项。以下是其中最有用的一些选项。

  • --force - 您可以使用此选项强制删除镜像。
  • --no-prune - 如果您不想删除未标记的镜像,可以使用此选项。

请注意,您只能删除那些没有关联容器的镜像。如果您尝试删除此类镜像,它将抛出错误。要覆盖此默认行为,您可以使用 --force 选项强制删除镜像。

例如,如果您想删除带有标签 24 的 fedora 镜像,可以使用以下命令。

$ docker image rm fedora:24

要检查镜像是否关联了容器,可以使用以下两个命令中的任何一个列出所有容器。

$ docker ps -a


$ docker container ls -a

如果您发现任何与该镜像关联的容器,您可以停止并删除该容器,或者强制删除它。

$ docker stop <container-name>


$ docker rm <container-name>

或者

$ docker rm -f <container-name>

删除容器后,您现在可以继续删除镜像。

使用更短的命令删除镜像

您还可以使用下面提到的另一个更短的命令来删除镜像。

$ docker rmi [OPTIONS] IMAGE [IMAGE...]

如果您不想在删除镜像之前检查容器,可以使用 force 选项强制删除它。

$ docker rmi -f <image-name>

此外,如果您想一次删除多个镜像,可以直接提及所有这些镜像的镜像ID或镜像名称,并用空格分隔。

$ docker rmi -f myimage1 myimage2 myimage2

通过修剪删除镜像

您还可以使用Docker image prune命令删除所有悬空(dangling)镜像。

$ docker image prune [OPTIONS]

您可以使用以下几个选项:

  • --all - 删除所有未使用的和悬空(dangling)镜像。
  • --filter - 提供过滤器,只删除某些特定的镜像。
  • --force - 强制修剪镜像。

例如,如果您想删除系统中所有未使用的镜像,可以使用以下命令。

$ docker image prune --all

如果您想一次删除所有Docker镜像,这是一个好方法。还有一种方法可以同时删除所有镜像。您可以使用子命令和Docker rmi命令一起使用。考虑以下命令。

$ docker rmi -f $(docker images -aq)

在这里,我们使用了 force 选项以及 Docker rmi 命令作为父命令。我们没有提及镜像ID或名称,而是使用了一个子命令,该子命令使用 all 和 quiet 选项列出所有镜像的镜像ID。

总而言之,在本文中,我们讨论了为什么定期删除未使用的或悬空(dangling)镜像是一个好习惯。我们讨论了如何使用三个不同的命令以及多个选项来删除镜像。我们还讨论了如何同时删除多个或所有镜像。我们希望您现在能够轻松删除Docker镜像。

更新于:2021年8月6日

2K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.