Docker 是如今企业中最受欢迎的产品之一。它使在容器中管理应用程序的过程变得非常简单。由于使用容器,Docker 为应用程序提供了便携性、性能、敏捷性、可扩展性和隔离性。与虚拟机相比,容器更具便携性,且消耗更少的资源。在使用 Docker 的过程中,您往往会积累大量未使用的镜像、数据卷和容器。这些资源会使输出变得杂乱,并占用大量磁盘空间。在本教程中,您将学习如何清理 Docker 资源并整理您的服务器。
清除所有
您只需一条命令即可清理所有 Docker 资源,包括镜像、已停止的容器、数据卷和网络。您可以选择以下选项之一:
参考:悬空资源是指那些与任何运行中的容器都无关联的资源。
选项 1:
|
1 |
docker system prune |
– 所有已停止的容器
– 所有未被至少一个容器使用的网络
– 所有悬空镜像
– 所有悬空的构建缓存
选项 2:
|
1 |
docker system prune -a |
– 所有已停止的容器
– 所有未被至少一个容器使用的网络
– 所有未与至少一个容器关联的镜像
– 所有构建缓存
选项 3:
|
1 |
docker system prune -a --volumes |
– 所有已停止的容器
– 所有未被至少一个容器使用的网络
– 所有未被至少一个容器使用的数据卷
– 所有未与至少一个容器关联的镜像
– 所有构建缓存

删除 Docker 镜像
要删除特定镜像,您需要知道其镜像 ID。您可以使用 “docker images” 命令找到 Docker 容器的镜像 ID,正如我们在关于如何在 Ubuntu 上安装 & 操作 Docker.
列出镜像:
|
1 |
docker images |
删除镜像:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
docker rmi <镜像 ID> 示例: docker rmi 1d622ef86b13 输出: Untagged: ubuntu:latest Untagged: ubuntu@sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7 Deleted: sha256:1d622ef86b138c7e96d4f797bf5e4baca3249f030c575b9337638594f2b63f01 Deleted: sha256:279e836b58d9996b5715e82a97b024563f2b175e86a53176846684f0717661c3 Deleted: sha256:39865913f677c50ea236b68d81560d8fefe491661ce6e668fd331b4b680b1d47 Deleted: sha256:cac81188485e011e56459f1d9fc9936625a1b62cacdb4fcd3526e5f32e280387 Deleted: sha256:7789f1a3d4e9258fbe5469a8d657deb6aba168d86967063e9b80ac3e1154333f |
删除悬空镜像:
当您构建 Docker 镜像时,它通常包含多个镜像层。悬空镜像是指与任何已标记镜像都没有关联的镜像层。悬空镜像会占用磁盘空间,但没有任何作用。可以使用以下命令列出它们:
|
1 |
docker images -f dangling=true |
You can remove these images by running the following command:
|
1 |
docker image prune |
根据模式删除镜像
您可以使用 “grep” 命令轻松找到符合特定模式的镜像,然后使用 “awk” 将其传递给 “docker rmi” 命令进行删除。您可以使用以下命令,并将其中每个命令中的 “pattern” 替换为您需要的模式:
列出:
|
1 |
docker images -a | grep "pattern" |
删除:
|
1 |
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi |
删除所有镜像
您可以使用以下命令列出所有 docker 镜像:
|
1 |
docker images -a |
一旦您决定全部删除,可以使用此命令将它们全部删除:
|
1 |
docker images -a -q | xargs docker rmi |
删除容器:
现在您已经清理了所有不需要的镜像,是时候删除一些不需要的容器了。
要列出容器,您可以使用以下命令:
|
1 |
docker ps -a |
要删除容器,请使用以下命令:
|
1 |
docker rm <<容器名称/容器ID>> |
临时运行容器
如果您只想运行容器一次,可以选择在容器退出时自动将其删除。您可以使用以下命令来执行此操作:
|
1 |
docker run --rm <<镜像名称>> |
删除已退出的容器
您可以使用 “-f” 参数过滤已退出的容器。使用以下命令列出已退出的容器:
|
1 |
docker ps -a -f status=exited |
现在您已经过滤了它们,请使用此命令将它们删除:
|
1 |
docker rm $(docker ps -a -f status=exited -q) |
根据模式删除容器
您可以使用 “grep” 命令轻松找到符合特定模式的容器,然后使用 “awk” 将其传递给 “docker rm” 命令来删除它们。您可以使用以下命令,并替换其中每个命令中的 “pattern”。
列表:
|
1 |
docker ps -a | grep "pattern" |
删除:
|
1 |
docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm |
停止并删除所有容器
在执行此操作之前,请通过列出服务器上的所有容器来进行检查。只有在确定要删除它们时,才运行以下命令:
列出容器以进行检查:
|
1 |
docker ps -a |
停止并删除:
|
1 2 |
docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) |
删除数据卷
删除特定数据卷
要删除特定数据卷,您需要知道该数据卷的名称。要找出该名称,您可以列出所有数据卷。
列表:
|
1 |
docker volume ls |
删除:
|
1 |
docker volume rm <<数据卷名称>> |
删除悬空数据卷
当您删除容器时,与其挂载的数据卷不会自动删除。这种数据卷被称为悬空数据卷。要定位这些数据卷,请在命令中使用过滤参数:
|
1 |
docker volume ls -f dangling=true |
要删除所有此类悬空数据卷,请使用以下命令:
|
1 |
docker volume prune |
删除容器及其未命名的数据卷
如果您在运行容器时创建了匿名或未命名的数据卷,则可以使用单个命令将其与容器一起删除。但是,如果数据卷是有名称的,则只会删除容器。
|
1 |
docker rm -v <<容器名称>> |
现在您已经拿到了这份速查表,应该可以开始清理服务器上不需要的 Docker 资源了。
祝您使用愉快!


评论
暂无评论。发表第一条评论吧。