如何删除 Docker 镜像?
如果您使用 Docker 已有很长时间,您的本地计算机中可能已经存在多个未使用的镜像。这些镜像可能是之前下载的旧版本,或者仅仅是您下载用于测试的镜像。这些镜像会不必要地占用大量空间,并降低整体性能和体验。此外,它们还是一些未使用的悬空镜像。
删除这些旧镜像总是更好的选择,这有助于您更好地跟踪所有有用的镜像。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...]
如果您不想在删除镜像之前检查容器,可以使用强制选项将其删除。
$ docker rmi -f <image-name>
此外,如果您想同时删除多个镜像,可以直接输入这些镜像的 ID 或镜像名称,并以空格分隔。
$ docker rmi -f myimage1 myimage2 myimage2
通过修剪删除镜像
您还可以使用 Docker image prune 命令删除所有悬空镜像。
$ docker image prune [OPTIONS]
您可以使用多个选项,例如 -
- --all - 删除所有未使用和悬空的镜像。
- --filter - 提供过滤器以仅删除某些特定镜像。
- --force - 强制修剪镜像。
对于例如,如果您想从系统中移除所有未使用的镜像,可以使用以下命令。
$ docker image prune --all
如果您想同时删除所有 Docker 镜像,这是一个很好的方法。还有另一种同时删除所有镜像的方法。您可以将子命令与 Docker rmi 命令一起使用。请参考以下命令。
$ docker rmi -f $(docker images -aq)
在这里,我们使用了 force 选项以及 Docker rmi 命令作为父命令。我们没有直接提及镜像 ID 或名称,而是使用了一个子命令,该子命令使用 all 和 quiet 选项列出了所有镜像的 ID。
总而言之,本文讨论了为什么定期删除未使用或悬空的镜像是一种好习惯。我们讨论了如何使用三个不同的命令以及几个选项来删除镜像。我们还讨论了如何同时删除多个或所有镜像。我们希望您现在能够轻松地删除 Docker 镜像。

