关于Docker清理
在Docker的日常使用中,我们或许偶尔遇到下面这些情况:
1 |
$ docker-compose ps |
这时候,我们大概明白了,大概是Docker把磁盘占满了。这时就需要我们去做一些清理了,这篇博客主要总结如下一些有效的Docker清理操作。
- 找到dockers数据与进程;
- 删除未使用的镜像,容器,卷和网络;
- 重置docker
- 限制日志大小
- 其他相关操作
在了解这些之前,我相信你已经对下面的一些词汇已经有一定的了解。
- image: 一个只读模版,可以用来创建container。如,一个包含ubuntu系统的镜像。
- container: 从镜像创建的运行实例。可以用docker命令去控制这些container。
- volume: docker数据持久化。
- dangling: 未使用的image。
- network: 连接docker容器服务。
查看Docker的磁盘使用情况
使用docker system df即可查看:
1 |
$ docker system df |
如上,镜像占了6.4GB, 容器占了42.85 MB, 数据卷占了3.541 GB。 了解基本占用后,我们就可以用下面介绍的命令进行针对性的清理了。
找到Dockers数据与进程
要清理docker,就要知道docker数据在哪,具体有哪些docker进程。
docker images列出docker镜像;docker ps列出docker容器;docker volume ls列出docker数据卷;docker network ls列出docker网络;docker info列出容器镜像的数量以及一些docker 安装等系统信息。
清除未使用的数据与进程
docker提供了一些快捷的命令去清除未使用的容器,网络和镜像:
1 |
$ docker system prune |
默认是没有清除数据卷的功能,由于数据比较重要,防止意外删除一些数据。可以通过
--volumes指定。
同时,我们还可以将—all清除未使用的images。使用--force免确认。
1 |
$ docker system prune --all --volumes |
当然,我们也可以单独清除。
docker container prune清除停止的容器;docker volume prune清除未使用的数据卷;docker image prune清除未使用的镜像;
清除所有数据重置docker
上面的命令不会影响运行中的容器以及关联的镜像,数据卷和网络。如果你需要全部清理就需要将所有容器都停止下来。
使用docker container stop [CONTAINERS...]能停止正在运行的容器。同时我们可以通过下面命令获取正在运行的容器ID。
大专栏 关于Docker清理r">
1 |
$ docker container ls -aq |
ls列出所有容器;--all / -a列出所有容器(包含未运行的);--quiet / -q只显示容器ID;
于是我们可以使用下面命令停止所有容器:
1 |
$ docker container stop $(docker container ls -a -q) |
结合清除的命令,完整的清除所有的容器命令如下:
1 |
$ docker container stop $(docker container ls -a -q) && docker system prune -a -f --volumes |
同理,我们可以想到:
- 清除容器
docker container rm $(docker container ls -a -q)/docker rm $(docker ps -a -q); - 清除镜像
docker image rm $(docker images ls -a -q); - 清除数据卷
docker volume rm $(docker volume ls -q); - 清除网络
docker network rm $(docker network ls -q);
限制容器日志大小
很多时候,我们发现我们都是被日志文件撑爆的,解决问题的源头就是限制容器日志大小,方法有三:
修改
daemon.json配置;1
2
3
4
5{
"log-opts": {
"max-size" : "521m"
}
}修改
docker-compose;1
2
3
4
5
6
7ubuntu:
image: ubuntu
restart: always
logging:
driver: "json-file"
options:
max-size: "1g"通过参数;
1
$ docker run -d --log-opt max-size=1g ubuntu
其他常见的有关清理命令
清除指定日志文件;
如果你要删除指定容器的日志,只有几步即可。
1
2
3
4# 获取该容器的日志地址
$ docker inspect 2ed640d8fcd1 --format '{{.LogPath}}'
/mnt/data/docker/containers/2ed640d8fcd1bd464a23be78513d23be1807c8ad6a95116da5cb9118a6b2380a/2ed640d8fcd1bd464a23be78513d23be1807c8ad6a95116da5cb9118a6b2380a-json.log知道了日志地址,你就可以删除或清空该日志了,不过注意权限哦~
杀死所有正在运行的容器;
1
$ docker kill $(docker ps -a -q)
删除所有已经停止的容器;
1
$ docker rm $(docker ps -a -q)
删除未打标签的镜像;
1
$ docker rmi $(docker images -q -f dangling=true)
批量删除指定镜像/容器等;
我们可以通过
--format指出docker命令的输出形式,通过grep去筛选,然后删除。 如:1
2
3
4# 删除带有指定 hub.docker.com 仓库的镜像
$ docker rmi $(docker images --format '{{.Repository}}' | grep 'hub.docker.com')
# 杀掉带有ubuntu 镜像名字的容器
$ docker kill $(docker ps -a --format '{{.Images}}' | grep 'ubuntu')
关于Docker清理的更多相关文章
- [转帖]Docker 清理占用的磁盘空间
Docker(二十七)-Docker 清理占用的磁盘空间 https://www.cnblogs.com/zhuochong/p/10076599.html docker system docker ...
- [转帖]docker清理日志
docker清理日志 2017年05月03日 10:37:27 不想当码农的程序员 阅读数 12827 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn. ...
- Docker 清理容器 log 日志
原文 Docker 清理容器 log 日志 docker logs <容器ID> 是常用命令,来查看容器运行日志,但时间长了之后,就会发现越来越慢,log 太多了,这时就需要清理一下. 先 ...
- docker 清理容器的一些命令,彻底或选择清理
越往下的,越要慎重 列出无用的卷 docker volume ls -qf dangling=true 清理无用的卷,容器,镜像 docker volume rm $(docker volume ls ...
- Docker(二十七)-Docker 清理占用的磁盘空间
1. docker system命令 docker system df命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况: docker system dfTYPE TOTAL A ...
- docker 清理容器和镜像
在docker运行过程中,会不知不觉造出很多容器,很多都是不用的,需要清理. 下面就是一些清理办法,一个个清理肯定很低效,批量清理很有意思. 查看正在运行的容器 # docker ps -q 9b9f ...
- docker 清理无用的卷
docker system prune 对于卷的清理不够彻底 题外话:docker volume ls查看当前卷列表 使用如下命令可以清理不用的卷 docker volume prune -f 强制 ...
- Docker 清理命令集锦
杀死所有正在运行的容器 复制代码代码如下: docker kill $(docker ps -a -q) 删除所有已经停止的容器 复制代码代码如下: docker rm $(docker ps -a ...
- docker 清理容器的命令
执行以下命令会彻底清除所有容器. docker rm -f $(docker ps -qa) rm -rf /var/lib/etcd /var/lib/cni /var/run/calico rm ...
随机推荐
- goweb-go语言基础
go语言基础 虽然这本书是讲goweb,但还是吧go语言基础过了一遍,由于我之前已经对go语言基础做了一遍系统的学习,这里就当简单回顾一下,不再写过多笔记了,之前的写的博客都有基础知识,O(∩_∩)O ...
- TPO1-2 The Origin of Theater
Stories (myths) may then grow up around a ritual. Frequently the myths include representatives of th ...
- 上传excel文件,读取内容,增加事务写入数据库
package com.inspur.icpmg.itss.asset.dao.impl; import com.inspur.icpmg.util.DBHelper; import org.apac ...
- ModelSerializer补充及ListSerializer
整体单改 路由层.模型层.序列化层不需要做修改,只需要处理视图层:views.py """ 1) 单整体改,说明前台要提供修改的数据,那么数据就需要校验,校验的数据应该在 ...
- selenium登录网银,密码控件输入
尝试登录农行网银,发现带控件的密码输入框怎么都无法输入啊 最后用虚拟键盘实现的 , DD模拟键盘 http://www.ddxoft.com/ 图形验证码识别没过,有时间再继续 需要安装 Tess ...
- 记录ionic 最小化应用时所遇的问题
ionic3与ionic4最小化插件安装不一样: ionic3安装方法: $ ionic cordova plugin add cordova-plugin-appminimize $ npm ins ...
- 导入import的多种形式
参考资料:anaconda官方资料 一.module(模块) 比如fibo是个模块(.py文件),其中有fib.fib2等函数 第一种形式:import fibo 在当前的符号表中,这并不会直接进入到 ...
- java正则(贪婪、勉强)
贪婪.勉强和侵占量词间的不同 在贪婪.勉强和侵占三个量词间有着细微的不同. 贪婪(*, ?, +):读入整个串,从后往前匹配 勉强(*?, ??, +?):从前往后匹配 侵占(*+, ?+, ++): ...
- auto uninstaller (autodesk 修复大师) 简体中文版 更新下载地址
小伙伴是不是遇到 CAD/3dmax/maya/Revit/Inventor 安装失败或者安装不了的问题了呢?AUTODESK系列软件着实令人头疼,CAD/3dmax/maya/Revit/Inven ...
- deeplearning.ai 序列模型 Week 2 NLP & Word Embeddings
1. Word representation One-hot representation的缺点:把每个单词独立对待,导致对相关词的泛化能力不强.比如训练出“I want a glass of ora ...