docker脚本
docker在使用过程中,一些常用的脚本。如镜像拉取等等命令。
资源
清理脚本
总则
prune是清理,停止的,未使用的意思。-q参数,一般就是资源的id。配合删除。
docker 子命令 prune # 清理对应的
docker system prune # 一键清理
资源占用
/var/lib/docker/containers/ID目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形式保存到此目录下。/var/lib/docker/overlay2下载的镜像、运行的容器、卷等。
占用资源查看
docker system df
# 输出如下
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 0 0 0B 0B
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
容器清理
#一键删除所有已经停止的容器
docker container prune
# 删除所有容器(包括停止的、正在运行的)
docker rm -f $(docker ps -aq)
docker container rm -f $(docker container ls -aq)
镜像清理
有一些镜像是隐形的:
- 子镜像,就是被其他镜像引用的中间镜像,不能被删除。
- 悬挂状态的镜像,就是不会再被使用的镜像,可以被删除。
列出所有悬挂状态的镜像
对应清理none脚本
docker image ls -f dangling=true
# 清理
docker image rm $(docker image ls -f dangling=true -q)
# 或者
docker image prune
删除所有的镜像
docker image rm $(docker image ls -q)
正在被容器使用的镜像是不能被删除的 。另外,对于一个镜像打了两个标签,则会有如下提示,使用-f参数来强制删除,但是,会不会删掉,正在运行的呢?
卷清理
# 删除不再使用的卷
docker volume rm $(docker volume ls -q)
# 或者
docker volume prune
构建缓存
docker builder prune
一键清理
容器、镜像、数据卷都提供了 prune这个子命令,帮助我们回收空间 。 docker 系统层面也有 prune 这个子命令,可以一键清理没用的空间
docker system prune
自定义脚本
清理none镜像
在构建镜像的时候,如果构建的标签已经使用过了,则会发现,新构建的镜像的标签代替了旧的镜像,导致存在none这样的游离镜像。故使用下面方式一键删除无用的镜像。
docker image ls | awk '$1=="<none>" && $2=="<none>"{printf "docker rmi %s\n",$3}'|sh
备注:前面有现成的命令。