清理Docker 镜像、容器和卷

2021-06-23  本文已影响0人  一瓶多先生

清除所有未使用的镜像、容器、卷和网络

Docker 提供了一个命令来清理的资源——images, containers, volumes, and networks:

$ docker system prune

要额外删除任何已停止的容器和所有未使用的images,添加-a参数到命令中:

$ docker system prune -a

删除Docker Image

使用docker images 加上-a参数来定位要删除的Image的ID。 之后将ID传递给docker rmi:

List:

docker images -a

Remove:

docker rmi <ImageID> <ImageID>

删除 dangling images

当build docker 镜像的时候,有时会遇到用一个甚至多个中间层镜像,这会一定程度上减少最终打包出来 docker 镜像的大小,但是会产生一些tag 为 none 的无用镜像,也称为悬挂镜像 (dangling images)

列出所有的 dangling images:

docker images -f "dangling=true"

删除所有的 dangling images:

docker rmi $(docker images -f "dangling=true" -q)

删除所有Image

使用docker images添加-a可以列出系统上所有的docker镜像, 如果确定要将他们全部删除, 可以使用-q参数将ImageID传给docker rmi

List:

docker images -a

Remove:

docker rmi $(docker images -a -q)

删除Container

使用docker ps带有-a标志的命令来定位要删除的容器的名称或 ID:

List:

docker ps -a

Remove:

docker rm <ID_or_Name> <ID_or_Name>

退出时移除容器

如果要临时创建一个容器, 并且运行完成后不再保留,可以运行docker run --rm

Run And Remove:

docker run --rm image_name

移除所有exited容器

您可以使用容器定位docker ps -a并按其状态过滤它们:已创建、正在重新启动、正在运行、已暂停或已退出。要查看已退出容器的列表,请使用该-f标志根据状态进行过滤。当您确认要删除这些容器时,使用-q将 ID 传递给docker rm命令。

List:

docker ps -a -f status=exited

Remove:

docker rm $(docker ps -a -f status=exited -q)

使用多个过滤器删除容器

Docker 过滤器可以通过使用附加值重复过滤器标志来组合。这将生成满足任一条件的容器列表。例如,如果您想删除所有标记为Created(使用无效命令运行容器时可能导致的状态)或Exited的容器,您可以使用两个过滤器:

List:

docker ps -a -f status=exited -f status=created

Remove:

docker rm $(docker ps -a -f status=exited -f status=created -q)

停止并删除所有容器

使用docker ps 查看系统上所有运行的容器, 添加-a参数显示系统上所有容器(包括exited状态的容器)。 添加-q参数后将ID传给docker stopdocker rm停止不删除所有容器

List:

docker ps -a

Remove:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

删除一个或多个特定卷 - Docker 1.9 及更高版本

使用该docker volume ls命令定位要删除的卷名或名称。然后您可以使用以下docker volume rm命令删除一个或多个卷:

List:

docker volume ls

Remove:

docker volume rm volume_name volume_name

删除dangling卷 - Docker 1.9 及更高版本

由于卷的点是独立于容器而存在的,所以当一个容器被移除时,不会同时自动移除一个卷。当卷存在并且不再连接到任何容器时,它被称为悬垂卷。要找到它们以确认您要删除它们,您可以使用docker volume ls带有过滤器的命令将结果限制为悬空体积。当您对列表感到满意时,您可以使用以下命令将它们全部删除docker volume prune

List:

docker volume ls -f dangling=true

Remove:

docker volume prune
上一篇下一篇

猜你喜欢

热点阅读