转载备份
影子 DOM(Shadow DOM)
你的 docker stop,它优雅吗? - 无糖拿铁,谢谢
清理Docker的container,image与volume · 零壹軒·笔记
Create a PyPI Mirror Site with devpi-server – SRE
优雅的终止 docker 容器 | iTimothy
Odoo 14 开发者指南第二十一章 性能优化 | Alan Hou 的个人博客
Odoo 14 开发者指南第八章 高级服务端开发技巧 | Alan Hou 的个人博客
kafka 系列:设置日志数据保存过期时间(含某个 topic)、日志策略_NIO4444-CSDN 博客_kafka 配置数据过期时间
Chromium 历史版本离线安装包 - 下载方法
怎样将 props 传递给 {this.props.children} | WebFuse
HappyBaseDoc
用户指南 — HappyBase 1.2.0 文档
安装指南 — HappyBase 1.2.0 文档
API 参考 — HappyBase 1.2.0 文档
PostgreSQL 时间转换
JS 中创建给定长度的数组
GSAP 入门 - 学习中心 - 绿袜
操作系统复习 | Happy Coding
如何理解 ip 路由和操作 linux 的路由表 - CodeAntenna
Elasticsearch 7.11 tokenizer, analyzer and filter 以及 IK 分词配置同义词、远程拓展词库 – Brave new world
podman 容器内访问 host 主机的端口 - 知识库 - BSMI KB 基础标准矿产工业
吐血总结!100 道经典 Python 面试题集锦上(附答案)
中共党史简表(1919 年 - 1949 年)
Dockerfile 详解_万 wu 皆可爱的博客 - CSDN 博客_dockerfile
为你的 Python 应用选择一个最好的 Docker 映像 | 亚马逊 AWS 官方博客
Ubuntu Server 支持中文
docker push | Docker Documentation
docker 创建本地仓库详解 (push/pull)_乱红飞的博客 - CSDN 博客_docker push 本地仓库
基于 Ubuntu 20.04 安装 Kubernetes 1.18
PostgreSQL 集群篇——PostgreSQL 的配置文件解析_51CTO 博客_postGresql
【PostgreSQL】——主从流复制_Teingi 的博客 - CSDN 博客_postgresql 主从复制
PostgreSQL: Documentation: 14: 27.4. Hot Standby
postgresql 主从复制、主从切换_偷懒的小陈的博客 - CSDN 博客_postgresql 主从
Postgres 用户、角色与权限 :: 68hub — 技术博客
中国共产党第二十次全国代表大会在京开幕 一图速览二十大报告
配置 docker 通过代理服务器拉取镜像
IPVS no destination available - Kubernetes 实践指南
Python 风格规范 — Google 开源项目风格指南
互动测试!党的二十大报告 100 题
自定义 ESlint 规则
Java 读取 OpenSSL 生成的秘钥, 进行 RSA 加解密 | 数字魔法
CSS(一)chrome 浏览器表单自动填充默认样式 - autofil_半个 GIS 半个前端的博客 - CSDN 博客
Nginx 多级代理下的真实 IP 透传 - CodeAntenna
Jenkins 环境变量
人民币金额大写规范 - 内蒙古农业大学财务处
[转]nginx 开启 websocket - 浅忆博客
ceph 创建使用 rbd
《三》配置 ceph 存储池 pool - Buxl's blog
基于 K8S 搭建 Ceph 分部署存储 – 唐玥璨 | 博客
序言 · Kubernetes 中文指南——云原生应用架构实战手册
服务器配置 - Redis 安装配置 | 灰帽子 - 任令仓的技术博客
Ubuntu 配置 sudo 命令不需要输入密码_ubuntu sudo 免密_一路向前 - 执着的博客 - CSDN 博客
修改 Docker 数据目录位置,包含镜像位置 - 腾讯云开发者社区 - 腾讯云
微服务架构实践(API Gateway)
微服务网关:从对比到选型,由理论到实践 | Java 程序员进阶之路
聊聊微服务网关
微服务网关:从对比到选型,由理论到实践
odoo 实现表分区 partition
使用 keepalived 搭建高可用服务 - 简书
业务网关的落地实践_文化 & 方法_Qunar 技术沙龙_InfoQ 精选文章
部署 Kubernetes PostgreSQL 实例 | domac 的菜园子
一套包含完整前后端的系统如何在 K8S 中部署?_k8s 前端_木讷大叔爱运维的博客 - CSDN 博客
前端安全系列(二):如何防止 CSRF 攻击? - 美团技术团队
traefik 自定义中间件 | coolcao 的小站
CSRF 原理和实战利用 - FreeBuf 网络安全行业门户
安全运维 - 如何在 Kubernetes 中使用注释对 ingress-nginx 及后端应用进行安全加固配置实践_唯一极客知识分享的技术博客_51CTO 博客
Kubernetes 进阶使用之 Helm,Kustomize
各种加密算法比较
Docker 的三种网络代理配置 · 零壹軒 · 笔记
本文档使用 MrDoc 发布
-
+
home page
清理Docker的container,image与volume · 零壹軒·笔记
# 清理Docker的container,image与volume Docker的镜像(image)、容器(container)、数据卷(volume), 都是由daemon托管的。 因此,在需要清理时,也需要使用其自带的手段。 本文介绍一些Docker的清理技巧,以及它们的来源。 ## 清理技巧 清理所有停止运行的容器: ``` docker container prune # or docker rm $(docker ps -aq) ``` 清理所有悬挂(`<none>`)镜像: ``` docker image prune # or docker rmi $(docker images -qf "dangling=true") ``` 清理所有无用数据卷: ``` docker volume prune ``` 由于`prune`操作是批量删除类的危险操作,所以会有一次确认。 如果不想输入`y<CR>`来确认,可以添加`-f`操作。慎用! ## 清理停止的容器 ``` docker rm -lv CONTAINER ``` `-l`是清理link,`v`是清理volume。 这里的CONTAINER是容器的name或ID,可以是一个或多个。 参数列表: Name, shorthand Default Description –force, -f false Force the removal of a running container (uses SIGKILL) –link, -l false Remove the specified link –volumes, -v false Remove the volumes associated with the container ### 清理所有停止的容器 通过`docker ps`可以查询当前运行的容器信息。 而通过`docker ps -a`,可以查询所有的容器信息,包括已停止的。 在需要清理所有已停止的容器时,通常利用shell的特性,组合一下就好。 ``` docker rm $(docker ps -aq) ``` 其中,`ps`的`-q`,是只输出容器ID,方便作为参数让`rm`使用。 假如给`rm`指定`-f`,则可以清理所有容器,包括正在运行的。 这条组合命令,等价于另一条命令: ``` docker container prune ``` `container`子命令,下面包含了所有和容器相关的子命令。 包括`docker ps`,等价于`docker container ps`或`docker container ls`。 其余还有`start`、`stop`、`kill`、`cp`等,一级子命令相当于二级子命令在外面的alias。 而`prune`则是特别提供的清理命令,这在其它的管理命令里还可以看到,比如`image`、`volume`。 ### 按需批量清理容器 清除所有已停止的容器,是比较常用的清理。 但有时会需要做一些特殊过滤。 这时就需要使用`docker ps --filter`。 比如,显示所有返回值为0,即正常退出的容器: ``` docker 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,应该都能解决问题。 ``` # systemd sudo systemctl restart docker.service # initd sudo service docker restart ``` ## 清理镜像 与清理容器的`ps`、`rm`类似,清理镜像也有`images`、`rmi`两个子命令。 `images`用来查看,`rmi`用来删除。 清理镜像前,应该确保该镜像的容器,已经被清除。 ``` docker rmi IMAGE ``` 其中,IMAGE可以是name或ID。 如果是name,不加TAG可以删除所有TAG。 另外,这两个命令也都属于alias。 `docker images`等价于`docker image ls`,而`docker rmi`等价于`docker image rm`。 ### 按需批量清理镜像 与`ps`类似,`images`也支持`--filter`参数。 与清理相关,最常用的,当属`<none>`了。 ``` docker images --filter "dangling=true" ``` 这条命令,可以列出所有悬挂(dangling)的镜像,也就是显示为`<none>`的那些。 ``` docker rmi $(docker images -qf "dangling=true") ``` 这条组合命令,如果不写入Bash的alias,几乎无法使用。 不过还有一条等价命令,非常容易使用。 ``` docker image prune ``` `prune`和`images`类似,也同样支持`--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 image prune -a ``` ## 清理数据卷 数据卷不如容器或镜像那样显眼,但占的硬盘却可大可小。 数据卷的相关命令,都在`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 一般不推荐直接操作这些目录,除非一些极特殊情况。 操作不当,后果难料,需要慎重。 ## 参考 本文发布时的Docker版本:**17.05.0-ce**,API版本:**1.29**。 在一些比较老的版本,文中提到的一些做法未必可行。 - [docker rm | Docker Documentation](https://docs.docker.com/engine/reference/commandline/rm/) - [docker ps | Docker Documentation](https://docs.docker.com/engine/reference/commandline/ps/) - [docker images | Docker Documentation](https://docs.docker.com/engine/reference/commandline/images/) - [docker rmi | Docker Documentation](https://docs.docker.com/engine/reference/commandline/rmi/) - [docker volume ls | Docker Documentation](https://docs.docker.com/engine/reference/commandline/volume_ls/) - [docker volume rm | Docker Documentation](https://docs.docker.com/engine/reference/commandline/volume_rm/) - [docker volume prune | Docker Documentation](https://docs.docker.com/engine/reference/commandline/volume_prune/)
幻翼
Nov. 18, 2021, 1:57 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
share
link
type
password
Update password