场景
最近工作中遇到服务器磁盘紧张的情况,想到docker镜像和容器可以删除些不用的,省出来一些空间。具体操作如下:
1. 删除不用的容器
- 首先执行命令
docker ps -a
查看容器列表,可以看到很多 exited的容器,表示这些容器已经退出,没用了。
删除无效容器
查询出所有的Exited的容器, 执行 docker rm 容器id
进行删除。
2. 删除不用的镜像
- 执行
docker images
查看镜像,
可以看到很多是没有用的镜像(显示为None的),还有些镜像看不出来,是否使用了。
可以执行下面的脚本
#!/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" docker rmi "$image" fi fi done
删除完了,再测试下df -h
发现多了二十多个磁盘空间。
大功告成~!!!