惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
P
Proofpoint News Feed
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
博客园 - Franky
V
V2EX
爱范儿
爱范儿
J
Java Code Geeks
小众软件
小众软件
Last Week in AI
Last Week in AI
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
酷 壳 – CoolShell
酷 壳 – CoolShell
The Register - Security
The Register - Security
GbyAI
GbyAI
Vercel News
Vercel News
Y
Y Combinator Blog
腾讯CDC
F
Fortinet All Blogs
I
InfoQ
N
Netflix TechBlog - Medium
B
Blog RSS Feed
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
Scott Helme
Scott Helme
T
Tor Project blog
U
Unit 42
Google Online Security Blog
Google Online Security Blog
PCI Perspectives
PCI Perspectives
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
D
Darknet – Hacking Tools, Hacker News & Cyber Security
aimingoo的专栏
aimingoo的专栏
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
Security Archives - TechRepublic
Security Archives - TechRepublic

博客 on 打工人日志

k8s RKE2 cilium L2 + envoy gateway 安装配置 k8s RKE2 vSphere 存储配置 OpenClaw 全能指南:从安装到进阶自动化实战 (2026 最终版) Kubernetes — skywalking + banyanDB APM监控部署 Kubernetes — promtail + loki + grafana 日志系统部署 k8s master 节点 Unauthorized Kubernetes — metalLB + Traefik 部署 Kubernetes — SSL 证书自动更新 Kubernetes — RKE2 + kube-vip + cilium 部署 使用TLSv1.3 升级nginx和openssl Proxmox VE(PVE) 更新到最新版本 kindle 邮件发送失败,错误代码E999 metallb + ingress-nginx + argocd 本地部署 iStoreOS(旁路由)使用openclash实现dns劫持 异常流量分析:图片库服务黑客入侵 openwrt 硬盘扩容 搭建ip地址检索服务 Kubernetes — k8s 手动安装 1.17.9 SELinux 问题:导致端口无法创建,无法访问 【福利】免费!本地部署!去除视频中移动的物体 通知:《打工人日报》迁移到独立板块 KyBook 3 | calibre-web - IOS系统最佳图书伴侣 Tmux 安装和使用教程 DockerHub 加速镜像部署 - 使用cloudflare 代理 docker的零停机部署 SD-webui 批量处理图片 ubuntu 安装 ComfyUI ubuntu 安装 stable-diffusion-webui 测试策略:微服务架构 单元测试:测试单元质量提升 端到端测试:模拟用户体验 Kubernetes — containerd 安装和部署 CI/CD 可观察性-基于grafana Argo cd 安装和部署 linux服务器进程打开文件过多导致服务异常 使用 ElasticSearch Curator 7天定期删除日志 sonarqube docker安装和配置 SSH 通过 443 端口连接 GitHub iOS 17 「待机显示」适配普通 iPhone(非 Pro/Max),屏幕在充电时常亮 GNU/Linux 一键更换系统软件源脚本 解决Elasticsearch索引只读(read-only) 【福利】埃隆·马斯克传 [沃尔特·艾萨克森] 在线下载 【破解】小鹏P5和小鹏G9开启adb和网络adb Kubernetes — kubecost 分析 Kubernetes 成本 3D Gaussian Splatting:3D模型渲染 Linux 系统收包流程以及内核参数优化 2023亚运会电竞门票民购买指南(报名+抽签) Vue3 + vite + nginx项目部署后404问题 大麦抢票辅助软件(福利 TFBOYS十年之约演唱会 2023 全机位 视频) 黑群晖最新安装教程 Ansible部署ceph集群 最好的微信朋友圈集赞神器-福利推荐 推荐一下 容器云资源 2010年的天涯神贴聊房价 如何礼貌回绝不合理的需求 nginx 配置和编译 github 国内代理访问下载 使用scrapy-redis实现增量爬取 逆境和成长-2022年终总结 优雅的使用Conda管理python环境 Jenkins 编译Android apk 流水线 Kubernetes — 更新证书 shell功能脚本集合 Nexus3 使用和部署 githubAction set-output弃用错误 Kubernetes — Rook云存储介绍和部署 Kubernetes — 基于K8S搭建Ceph分布式存储 Kubernetes — 探针和生命周期 Kubernetes — 开放标准(OCI、CRI、CNI、CSI、SMI、CPI)概述 kubernetes 部署插件 (Flannel、Web UI、CoreDNS、Ingress Controller) Cloudflare Zero Trust 内网穿透 k8s CNI 问题 连接认证失效 k8s.gcr.io国内无法连接解决方法 headscale 部署使用 羊了个羊小程序 破解通关 K8S 问题排查:cgroup 内存泄露问题 RocketMQ k8s部署 4主4从集群 docker 问题处理 kubernetes 存储 linux服务器 删除空间却未释放 kubernetes 从1.23.x 升级到 1.24.x 编写 kubernetes 资源描述文件 nginx ssh-key connection exception kubernetes manual expansion VSCode插件推荐=> Code Runner ant build.xml 编写 kubernetes 调度过程 记录一次上门打散工 k8s本地联调神器kt-connect Ant中如何添加第三方jar包依赖 OpenELB:让k8s私有环境对外暴露端口 linux 网络测速 安装 docker 出现 ERROR: Unsupported distribution 'ol' 问题 logrotate 日志滚动的使用 nginx 编译参数详解 nginx 重写规则 rewrite模块 nginx.conf 配置文件详解 rsync 文件同步 163企业邮箱设置教程 2021年第50周记
清理Docker的container,image与volume
2022-02-10 · via 博客 on 打工人日志

清理 Docker 的 container,image 与 volume

Docker 的镜像(image)、容器(container)、数据卷(volume), 都是由 daemon 托管的。 因此,在需要清理时,也需要使用其自带的手段。

清理技巧

清理所有停止运行的容器:

1docker container prune
2# or
3docker rm $(docker ps -aq)

清理所有悬挂(<none>)镜像:

1docker image prune
2# or
3docker rmi $(docker images -qf "dangling=true")

清理所有无用数据卷:

由于prune操作是批量删除类的危险操作,所以会有一次确认。 如果不想输入y<CR>来确认,可以添加-f操作。慎用!

清理停止的容器

docker rm -lv CONTAINER -l是清理 link,v是清理 volume。 这里的 CONTAINER 是容器的 name 或 ID,可以是一个或多个。

参数列表:

Name shorthandDefaultDescription
–force,-ffalseForce the removal of a running container (uses SIGKILL)
–link, -lfalseRemove the specified link
–volumes, -vfalseRemove the volumes associated with the container

清理所有停止的容器

通过docker ps可以查询当前运行的容器信息。 而通过docker ps -a,可以查询所有的容器信息,包括已停止的。

在需要清理所有已停止的容器时,通常利用 shell 的特性,组合一下就好。

docker rm $(docker ps -aq) 其中,ps的-q,是只输出容器 ID,方便作为参数让rm使用。 假如给rm指定-f,则可以清理所有容器,包括正在运行的。

这条组合命令,等价于另一条命令:

container子命令,下面包含了所有和容器相关的子命令。 包括docker ps,等价于docker container psdocker container ls。 其余还有start、stop、kill、cp等,一级子命令相当于二级子命令在外面的 alias。 而prune则是特别提供的清理命令,这在其它的管理命令里还可以看到,比如image、volume

按需批量清理容器

清除所有已停止的容器,是比较常用的清理。 但有时会需要做一些特殊过滤。

这时就需要使用docker ps --filter

比如,显示所有返回值为 0,即正常退出的容器:

1docker ps -a --filter 'exited=0'

同理,可以得到其它非正常退出的容器。

目前支持的过滤器有:

id (container’s id)
label (label=<key> or label=<key>=<value>)
name (container’s name)
exited (int - the code of exited containers. Only useful with –all)
status (created|restarting|running|removing|paused|exited|dead)
ancestor (<image-name>[:<tag>], <image id> or <image@digest>) - filters containers that were created from the given image or a descendant.
before (container’s id or name) - filters containers created before given id or name
since (container’s id or name) - filters containers created since given id or name
isolation (default|process|hyperv) (Windows daemon only)
volume (volume name or mount point) - filters containers that mount volumes.
network (network id or name) - filters containers connected to the provided network
health (starting|healthy|unhealthy|none) - filters containers based on healthcheck status

清理失败

如果在清理容器时发生失败,通过重启 Docker 的 Daemon,应该都能解决问题。

1# systemd
2sudo systemctl restart docker.service
3
4# initd
5sudo service docker restart

清理镜像

与清理容器的ps、rm类似,清理镜像也有images、rmi两个子命令。 images用来查看,rmi用来删除。

清理镜像前,应该确保该镜像的容器,已经被清除。

其中,IMAGE 可以是 name 或 ID。 如果是 name,不加 TAG 可以删除所有 TAG。

另外,这两个命令也都属于 alias。 docker images等价于docker image ls,而docker rmi等价于docker image rm

按需批量清理镜像 ¶ 与ps类似,images也支持--filter参数。

与清理相关,最常用的,当属<none>了。

1docker images --filter "dangling=true"

这条命令,可以列出所有悬挂(dangling)的镜像,也就是显示为的那些。

1docker rmi $(docker images -qf "dangling=true")

这条组合命令,如果不写入 Bash 的 alias,几乎无法使用。 不过还有一条等价命令,非常容易使用。

pruneimages类似,也同样支持–filter 参数。 其它的filter有:

dangling (boolean - true or false)
label (label=<key> or label=<key>=<value>)
before (<image-name>[:<tag>], <image id> or <image@digest>) - filter images created before given id or references
since (<image-name>[:<tag>], <image id> or <image@digest>) - filter images created since given id or references
reference (pattern of an image reference) - filter images whose reference matches the specified pattern

清理所有无用镜像

这招要慎用,否则需要重新下载。

清理数据卷

数据卷不如容器或镜像那样显眼,但占的硬盘却可大可小。

数据卷的相关命令,都在docker volume中了。

一般用docker volume ls来查看,用docker volume rm VOLUME来删除一个或多个。

不过,绝大多数情况下,不需要执行这两个命令的组合。 直接执行docker volume prune就好,即可删除所有无用卷。

注意:这是一个危险操作!甚至可以说,这是本文中最危险的操作! 一般真正有价值的运行数据,都在数据卷中。 (当然也可能挂载到了容器外的文件系统里,那就没关系。) 如果在关键服务停止期间,执行这个操作,很可能会丢失所有数据!

从文件系统删除

除配置文件以为,Docker 的内容相关文件,基本都放在/var/lib/docker/目录下。

该目录下有下列子目录,基本可以猜测出用途:

aufs
containers
image
network
plugins
swarm
tmp
trust
volumes

一般不推荐直接操作这些目录,除非一些极特殊情况。 操作不当,后果难料,需要慎重。