docker水位如何清理(容器水位清理详细分析)

news2024/11/24 3:33:15

docker水位过高,清理怕出问题?,不知道清理什么?怕删错了?进入实践

第一步准备测试数据

  • 创建 悬空的镜像(即REPOSITORY和TAG均为的镜像)
docker pull busybox:musl
docker tag busybox:musl busybox:stable
mkdir -p /tmp/busybox
cd /tmp/busybox
echo 'FROM busybox:stable' > /tmp/busybox/Dockerfile
echo 'RUN touch /tmp/test' >> /tmp/busybox/Dockerfile
docker build -t busybox:test /tmp/busybox
docker pull busybox:stable
docker build -t busybox:test /tmp/busybox
docker images -f "dangling=true"
  • 创建 正常的容器 并写入1G文件
docker run -d --rm --name busybox busybox:test /bin/sh -c "/bin/sleep 3600"
docker exec -it busybox /bin/sh -c 'dd if=/dev/zero of=./test.zip count=1024 bs=1M'
docker system df | grep Containers
  • 创建 已停止 的容器(即docker ps -a中STATUS为Exited的容器)
docker run -d --name busybox2 busybox:test /bin/sh -c "/bin/sleep 1"
docker ps -a | grep Exited
  • 创建 已暂停 的容器(即docker ps -a中STATUS为Paused的容器
docker run -d --rm --name busybox3 busybox:test /bin/sh -c "/bin/sleep 3600"
docker pause busybox3
docker ps -a | grep Paused
  • 创建 孤儿卷(即未被使用的卷)
docker volume create volume-test1
docker volume ls -f dangling=true

确认过程

1.docker info 确认 docker root 路径

  • docker info 查看 docker root 路径
docker info | grep Root

2.docker system df 分析资源使用

  • docker system df:查看所有镜像/容器/数据卷等资源使用的统计信息
docker system df

docker system df 列出了 docker 使用磁盘的 4 种类型:

类型描述
Images所有镜像占用的空间(包括拉取的镜像、本地构建的镜像)
Containers运行中的容器所占用的空间(没运行就不占空间)
Local Volumes本地数据卷的空间
Build Cache镜像构建过程产生的缓存数据
  • docker system df -v:查看所有镜像/容器/数据卷等资源使用的详细信息
docker system df -v

注:docker system df -v 看到的容器大小,有可能比实际的小很多。比如 df -v 看到某容器大小43G,但该容器对应的 overlay2/xxx/diff 和 merge 加一起却有82G。

docker inspect 分析 overlay2 使用

  • 查看指定容器(比如 busybox)的 overlay2 目录
docker inspect busybox | grep overlay2

docker volume 查看 volume 使用

  • 查看volume
docker volume ls

查看容器日志的大小

  • 查看docker所有容器日志(*-json.log)
find /var/lib/docker/containers/ -name *-json.log
  • 查看超过100MB的文件
find /var/lib/docker -type f -size +100M -print0 | xargs -0 du -h | sort -nr

查看 /var/lib/docker/overlay2

  • 查询 overlay2 占用磁盘空间较多(比如达到G或T以上)的目录
du -sh /var/lib/docker/overlay2/* | grep [GT] | sort -nr
  • 找到使用较多的 overlay2 子目录,结合 docker inspect 反向定位到哪个容器在用
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep xxx
  • 进入容器(比如 busybox),找到占用磁盘较多的目录,清理就完了。
docker exec -it busybox /bin/sh -c 'du -sh /*'

在这里插入图片描述

手动清理环节

清理容器日志

  • 重置较大的容器日志(*-json.log)
1.find /var/lib/docker/containers/ -name *-json.log
2.# bash -c "echo > /var/lib/docker/containers/xxx-json.log"
  • 删除较大(超过100MB)的容器日志
find /var/lib/docker -type f -size +100M -print0 | xargs -0 du -h | sort -nr
# rm -f xxx

停止 container

  • 停止 已暂停 的容器(注:请确认已暂停的容器不在使用,否则后面会误删)
#docker stop $(docker ps -a | grep "Paused" | awk '{print $1 }')
  • 停止 特定|所有 的容器
docker stop $(docker ps -a | egrep "(mysql|zabbix)" | awk '{print $1}')
#docker stop $(docker ps -a -q)

删除 container

  • 删除 已停止 的容器
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')

删除 特定|所有 的容器

# docker rm $(docker ps -a | egrep "(mysql|zabbix)" | awk '{print $1}')
# docker rm $(docker ps -a -q)

删除 images

  • 删除 悬空 的镜像(即REPOSITORY和TAG 均为的镜像)

注1:若REPOSITORY正常、TAG为,只是说明该镜像没有正常打标签,不可轻易删除。
注2:如果正在运行的容器使用了悬空镜像 ,那么删除此镜像就会报错:Error response from daemon: conflict: unable to delete 77bb919cd617 (cannot be forced) - image is being used by running container 48c2f4b4f4af。 若确认依赖的容器已不在使用,停掉此容器再次删除悬空镜像就不会报错了。

docker rmi $(docker images | grep "^<none>" | awk '{print $3}')
docker rmi $(docker images -qf dangling=true)
  • 删除 特定 的容器
docker rmi -f $(docker images | egrep "(mysql|zabbix|mariadb)" | awk '{print $3}')

删除 volume

  • 删除 孤儿卷(即无用的volume)
docker volume rm $(docker volume ls -qf dangling=true)
  • 清理volume
docker volume prune

删除 network

  • 删除网络,网络一般不占用磁盘空间,可以不用删除
# docker network rm $(docker network ls -q)

推荐 docker system prune

  • docker system prune:会删除已停止的容器、无用的网络、悬空镜像、悬空镜像的构建缓存
    注1:不会删除已暂停的容器、没有关联容器的镜像等
docker images -qf dangling=true  #.悬空的镜像
docker ps -a | grep Exited  #.已关闭的容器
docker system prune
  • docker system prune -a:清理的更加彻底,会删除没有容器使用的镜像
docker system prune -a

最佳实践

使用参数限制容器大小

  • 比如,在创建容器的时候使用参数 –storage-opt size=100G 来设定容器的硬盘大小为100G
docker pull nginx:latest
docker run -itd --name nginx1 -p 8001:80 nginx:latest /bin/bash
docker exec -it nginx1 /bin/bash -c 'df -Th | grep overlay'
docker run -itd --name nginx2 -p 8002:80 --memory=2G --storage-opt size=100G nginx:latest /bin/bash
docker exec -it nginx2 /bin/bash -c 'df -Th | grep overlay'

修改默认的docker路径

  • 修改docker默认存放镜像/容器/数据卷的路径,比如:/data/docker
mkdir -p /data/docker
systemctl stop docker
rsync -avz /var/lib/docker/ /data/docker
mv /var/lib/docker /var/lib/docker.bak
echo '{"data-root":"/data/docker"}' > /etc/docker/daemon.json
systemctl restart docker 
docker info | grep Root
#.执行 docker info 若返回 Docker Root Dir: /data/docker 则表示docker根目录修改成功

创建自动清理任务

  • 容器日志随时间推移会继续积累,可以创建一个定期清理的任务,脚本参考如下:clean_docker_log.sh
#!/bin/bash

logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
    cat /dev/null > $log
done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/614016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python的更新:为什么你需要及时更新并如何更新

Python的更新&#xff1a;为什么你需要及时更新并如何更新 Python是一种强大的程序设计语言&#xff0c;它具有广泛的应用&#xff0c;从数据科学&#xff0c;机器学习到Web开发&#xff0c;都有着广泛的应用。不断更新的Python版本为开发者和用户提供了最新的功能和最佳实践。…

chatgpt赋能python:Python如何在同一行输出

Python如何在同一行输出 Python是一种高级编程语言&#xff0c;广泛应用于数据科学、Web开发、人工智能等领域。其中&#xff0c;输出内容是程序必不可少的一部分。本文将介绍在Python中如何在同一行输出多个内容。 一般输出 在Python中&#xff0c;使用print函数可以将内容…

Lecture 9 Lexical Semantics

目录 Introduction: sentiment analysis 引言&#xff1a;情感分析Word Semantics 单词语义Word meanings 单词含义WordNetSynsets 同义词集Noun Relations in WordNetHypernymy Chain 上位链Word SimilarityWord Similarity with PathsBeyond Path LengthAbstract NodesConcep…

GO 性能分析

GO 性能分析 简介 ​ go提供了内存分析工具&#xff0c;pprof利用它可以看cpu和内存的情况。 包含下面的几种类型&#xff1a; cpu内存阻塞锁 pprof分为大体分为两个部分 数据采集数据分析 数据采集有两种方式&#xff1a; 官方 官方提供了两种方式 runtime/pprof 这是用…

【AI】惠普暗夜精灵9安装Ubuntu20.04+nvidia驱动

1、关闭快速启动 NVIDIA驱动安装很是矫情,为了谨慎起见,还是禁用快速启动吧 在Win11下,进入控制面板–》硬件和声音–》电源选项–》更改电源按钮的功能 禁止“启用快速启动” 2、关闭设备加密 关闭设备加密,否则安装过程中会报:bitlocker加密需要解除 3、设置bios…

SpringMVC《学习笔记(21版尚硅谷)》

一、SpringMVC简介 1、什么是MVC MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为实体类Bean&#xff1…

Form表单(antd-design组件库)简单使用以及单一检查规则

1.Form表单 高性能表单控件&#xff0c;自带数据域管理。包含数据录入、校验以及对应样式。 2.何时使用 用于创建一个实体或收集信息。 需要对输入的数据类型进行校验时。 组件代码来自&#xff1a; 表单 Form - Ant Design 3.本地验证前的准备 参考文章【react项目antd组件-de…

chatgpt赋能python:Python如何变大字体的SEO技巧

Python如何变大字体的SEO技巧 在网页设计和优化中&#xff0c;使用合适的字体和字体大小是至关重要的。对于使用Python编程的开发人员和网站管理员来说&#xff0c;如何使Pyhton代码中的字体变大是一个非常有用的技巧。在本文中&#xff0c;我们将介绍几种方法来增大Python代码…

C语言7:输入若干个学生的成绩,统计出平均成绩

在程序编辑区编写程序&#xff0c;给定程序功能是: 从键盘上输入若干个学生的成绩&#xff0c;统计出平均成绩&#xff0c;并输出低于平均分的学生成绩&#xff0c;用输入负数结束输入。 例如输入: 70 80 90 -1 输出: ave 80.00 --------OUTPUT----------- 70.0 程序有…

【茶话数据结构】查找最短路径——Dijkstra算法详解(保姆式详细图解,步步紧逼,保你学会)

&#x1f4af; 博客内容&#xff1a;【茶话数据结构】查找最短路径——Dijkstra算法详解 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f989;所属专栏&#xff1a;数据结构笔记 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;专注基础和实…

软考A计划-电子商务设计师-模拟试题卷一

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

chatgpt赋能python:Python抢票的绝招

Python 抢票的绝招 随着互联网技术的不断发展&#xff0c;越来越多的人开始享受网购的便利。但是&#xff0c;随着一些热门事件的到来&#xff0c;如演唱会、体育比赛等&#xff0c;大家面临同一个问题&#xff1a;如何抢到热门事件的门票&#xff1f;这时&#xff0c;Python …

Win10利用剪贴板多次粘贴

工作中需要经常复制粘贴图片&#xff0c;每次ctrl C, ctrl V来回切换效率很低 网上有很多剪贴板增强工具&#xff0c;但win10本身有增强版的功能 多次复制后&#xff0c;在需要粘贴的地方按下&#xff0c;Windows徽标 V&#xff0c;就会出现所有复制过的内容 需要哪个直接点…

2023/06/05 PM Day4 软件项目生存期和生命周期

视频参考地址&#xff1a; B站闫波软件项目管理视频学习. 视频资源&#xff1a;video P4-P6 本篇重点&#xff1a;项目生存期 简书日更计划同步记录&#x1f3c3;… 项目生命周期 软件项目生命周期 *项目生命周期的阶段 C概念/启动阶段&#xff1a;确立项目需求和目标D开发/计…

chatgpt赋能python:Python如何把数据存到字典

Python如何把数据存到字典 字典是Python中非常有用的数据类型之一&#xff0c;它允许您将值与唯一的键相关联&#xff0c;从而快速地查找、插入和删除数据。在这篇文章中&#xff0c;我们将介绍如何使用Python将数据存储到字典中。 什么是字典&#xff1f; 字典是Python中的…

[开发板]001瑞芯微3588s开发记录--装一个仿真环境

文章目录 前言1. 构建python环境2 模型转换 前言 我是一个开发板的新手&#xff0c;刚买了一个瑞芯微3588s的板子&#xff0c;目标是要学习嵌入式的开发&#xff0c;也就是说把深度学习的框架&#xff0c;跑到板子上。万丈高楼平地起步。先把仿真环境搭建起来。 仿真环境可以跑…

趣未来科技董事长黄婵娇:专注创新研发,把公司当做科研机构来运作!

身为研发型董事长&#xff0c;黄婵娇女士谈及“技术”&#xff0c;眼中总是透着由衷的自豪。她的办公室摆满了各类技术文件以及图纸&#xff0c;以身作则将技术研发基因带入公司核心运维&#xff0c;强势带动深圳市趣未来&#xff08;B2GO&#xff09;科技有限公司一步步成长为…

电赛备赛日记(一):K210与STM32串口通信

拖更了n久的备赛日记终于来啦&#xff0c;最近实现了关于K210图像识别并将所需数据&#xff08;即目标类别&#xff0c;目标在图像中的加权坐标&#xff09;其中&#xff0c;加权坐标指K210识别到的目标并框出的框的宽和高与框左上顶点的坐标加权&#xff0c;希望以此来判断目标…

海云捷讯杯 赛后总结 目标检测——缺陷检测(模型训练部分)

在这次比赛中&#xff0c;本人在队伍中主要负责模型训练部分&#xff0c;所以本文主要讲述如何使用PaddleDetection代码自定义数据集进行目标检测&#xff0c;欢迎大家纠错讨论哦&#xff0c;不胜荣幸~ 参考项目&#xff1a; SSDquexianjiance - 飞桨AI Studio (baidu.com) 感…

云上高校导航

2023042719 - 云上高校导航 中国大学生计算机设计大赛 广西赛区 软件应用与开发 - 移动应用开发&#xff08;非游戏类&#xff09; 三等奖 “云上高校导航”是一套基于小程序云开发的校园导航类系统开发方案。 该开发方案可供开发者进行二次开发&#xff0c;用于解决师生和访客…