众所周知,docker随着使用的时间越来越长,可能会出现很多没有用的镜像文件,而这些镜像文件一般都很占磁盘空间,所以就需要有个方法能够清理这些无用的镜像文件,下面就是一些实用的方法。
如何查看docker中的没有用的镜像
要查看Docker中没有用的镜像,可以使用以下方法:
- 列出所有镜像并查看状态:
docker images
这将列出所有镜像,其中:表示这些镜像没有被任何容器引用,可以视为没用的镜像。
- 查找悬挂(dangling)镜像:
docker images -f dangling=true
这将只列出没有被任何容器引用的镜像,即悬挂镜像。
- 使用脚本查找未使用镜像:
bash
#!/bin/bash
# 获取所有正在运行的容器ID
running_containers=$(docker ps -q)
# 获取所有镜像列表
all_images=$(docker images --format "{{.Repository}}:{{.Tag}}")
# 遍历每个镜像,检查是否被容器使用
for image in $all_images; do
# 检查该镜像是否被任何容器使用
if [[ -z $(docker ps -q --filter "ancestor=$image") ]]; then
# 检查该镜像是否为正在运行的容器使用的基础镜像
if ! grep -q "$image" <<< "$running_containers"; then
echo "未使用的镜像: $image"
fi
fi
done
这个脚本会列出所有未被任何容器使用的镜像。
通过上述方法,可以清晰地查看到Docker中哪些镜像是没有用的,从而决定是否删除它们以释放磁盘空间。删除没用镜像的命令是:
docker image prune。
如何删除没用的image
要删除Docker中没用的镜像,可以使用以下几种方式:
- 删除所有悬挂(dangling)镜像:
docker image prune
这将删除所有未被任何容器引用的镜像。
- 删除所有未使用的镜像:
docker image prune -a
这将删除所有未被任何容器引用的镜像,包括中间层镜像。
- 删除指定镜像:
docker rmi <IMAGE_ID>
可以通过docker images命令获取镜像ID,然后使用docker rmi命令删除指定镜像。
- 删除所有镜像:
docker rmi $(docker images -q)
这将删除本地所有镜像。
- 使用过滤器删除镜像:
docker image prune -a --filter="until=24h"
这将删除创建时间超过24小时的所有未使用镜像。可以根据需要调整过滤条件。
总之,docker image prune命令是删除未使用镜像的推荐方式,可以根据需要添加-a选项和过滤器。如果要删除指定镜像,可以使用docker rmi命令。