[每周一更]-(第72期):Docker容器瘦身方式

在这里插入图片描述

Docker清理缓存操作

  • 在构建测试的过程中,由于是自家小服务器,资源紧张,发现磁盘一直爆满,删除一些大镜像还是会占满的情况,就想到是不是也是缓存问题。
    经过查询确实是build过程中的缓存启发的占用问题。

因此引出以下知识点,如何清除docker的构建过程中的缓存

Docker 18.09 引入了 BuildKit ,提升了构建过程的性能、安全、存储管理等能力。

docker system df 命令,类似于 Linux上的 df 命令,用于查看 Docker 的磁盘使用情况:
TYPE 列出了 Docker 使用磁盘的 4 种类型:

类型说明
Images所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。
Containers运行的容器占用的空间,表示每个容器的读写层的空间。
Local Volumes容器挂载本地数据卷的空间。
Build Cache镜像构建过程中产生的缓存空间(只有在使用 BuildKit 时才有,Docker 18.09 以后可用)。
TYPEDocker 数据类型,包括镜像(Images)、容器(Containers)、本地卷(Local Volumes)等。
TOTAL每个数据类型的总大小。
ACTIVE获取的数据类型个数。
SIZE每个数据类型实际使用的大小。
USE%使用率,表示实际使用大小占总大小的百分比。

没清理前:

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          46        18        8.928GB   6.253GB (70%)
Containers      29        6         1.779GB   1.779GB (99%)
Local Volumes   5         5         759.8MB   0B (0%)
Build Cache     176       0         5.59GB    5.59GB

清理后:

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          46        18        8.928GB   6.253GB (70%)
Containers      29        6         1.779GB   1.779GB (99%)
Local Volumes   5         5         759.8MB   0B (0%)
Build Cache     111       0         0B        0B

获取完整的信息: docker system df -v

一键清理 Build Cache 缓存命令:

docker builder prune

如果你希望保留最近一定时间的缓存,删除时长更久的缓存,可以通过添加 --filter 参数实现,例如保留最近10天的缓存示例命令如下:

docker builder prune --filter 'until=240h'

另外,命令 docker system prune 可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。

添加参数 docker system prune -a 清理得更加彻底,可以将没有容器使用Docker镜像都删掉。

清理无用的容器

docker container prune

清理无用的镜像

docker image prune

镜像瘦身

容器固然由于时间的堆叠,会存在数据及日志越来越多的情况,根本上我们在构建镜像的时候,首先考虑镜像的最小化;

比如docker的多段构建,利用docker的最小化的系统alpine等,参考:[每周一更]-(第64期):Dockerfile构造php定制化镜像

采取一些策略来瘦身,详细操作如下:

  1. 使用轻量的基础镜像
  • 选择基于 Alpine Linux 或其他小型 Linux 发行版的基础镜像。这些基础镜像通常包含较少的组件,从而减小了镜像的大小。
  1. 多阶段构建
  • 使用多阶段构建(Multi-stage builds),这样可以在一个 Dockerfile 中包含多个 FROM 指令,每个指令对应一个构建阶段。在最终的镜像中只包含构建过程中必要的文件,减小了镜像的体积。
dockerfileCopy code
FROM golang:1.16 AS build
WORKDIR /app
COPY . .
RUN go build -o myappFROM alpine:latest
WORKDIR /app
COPY --from=build /app/myapp .
CMD ["./myapp"]
  1. 只复制必要的文件
  • 通过使用 .dockerignore 文件来排除不需要的文件,确保只有构建应用程序所需的文件被复制到镜像中。
  1. 减少层的数量
  • 每个 Dockerfile 中的指令都会创建一个新的镜像层,因此尽量将相关的指令合并到一起,以减少层的数量。
  1. 清理不需要的文件
  • 在 Dockerfile 中,使用 RUN 指令清理不需要的中间文件,确保镜像中只包含最终需要的文件。
  1. 使用更高效的命令
  • 在 Dockerfile 中使用一些高效的命令,例如将多个 RUN 指令合并成一个,使用 && 连接多个命令。
  1. 避免不必要的依赖
  • 检查应用程序的依赖关系,避免安装不必要的软件包或库。
  1. 压缩文件
  • 在 Dockerfile 中使用 COPY 指令时,可以将文件压缩成 tar 归档,然后在容器内解压。这可以减少网络传输的数据量,同时也可以减小最终镜像的大小。

参考地址:

  • docker builder prune
  • docker system df

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

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

相关文章

【自动驾驶解决方案】C++取整与保留小数位

一、C基础 1.1double型保留小数为&#xff0c;并以字符输出 #include <iostream> #include <sstream> #include <iomanip> // 包含std::fixedint main() {//浮点数double number 3.1415926;//转换工具类streamstd::stringstream stream;stream << s…

【微信小程序】2023年11月版本 关于小程序隐私保护指引设置的公告 | 修改微信小程序隐私保护 |小程序无法获取用户昵称 头像 性别 等问题

一、登录小程序后台 《关于小程序隐私保护指引设置的公告》 https://mp.weixin.qq.com/cgi-bin/announce?actiongetannouncement&announce_id11691660367cfUvX&version&langzh_CN&token 上面是官方的文档&#xff0c;但是由于比较陈旧&#xff0c;和现在的页面…

基于单片机的空气质量实时监测系统(论文+源码)

1. 系统设计 通过文献和市场调查&#xff0c;本设计的实现方案框架是以单片机为核心控制处理器搭建外围的功能模块如温度传感器模块、湿度传感器检测模块、二氧化碳传感器检测设备模块、无线通信模块和蜂鸣器声光报警提示模块来实现&#xff0c;辅以显示模块来展示。 该系统通…

数据仓库

一. 各种名词解释 1.1 ODS是什么&#xff1f; ODS层最好理解&#xff0c;基本上就是数据从源表拉过来&#xff0c;进行etl&#xff0c;比如mysql 映射到hive&#xff0c;那么到了hive里面就是ods层。 ODS 全称是 Operational Data Store&#xff0c;操作数据存储.“面向主题的…

Java 异常处理、继承、重写/重载

一、java异常处理&#xff1a; 三种类型的异常&#xff1a;检查性异常、运行时异常、错误。 所有的异常类是从java.lang.Exception类继承的子类。Exception类是Throwable类的子类。除了Exception类外&#xff0c;Throwable还有一个子类Error。 异常类有两个主要的子类&#…

OpenAI宫斗,尘埃落定,微软成最大赢家

周末被OpenAI董事会闹剧刷屏,ChatGPT之父Sam Altman前一天被踢出董事会,免职CEO,后一天重返OpenAI,目前结局未知。 很多同学想要围观,缺少背景知识,这里老章为大家简单介绍前因后果及涉及的人物,时间线,让大家轻松围观。 备好瓜子,开始。 1、主角 先看一张图,看一…

Python学习(打基础版)

以前只是大致的了解&#xff0c;现在比较完整的整理一下笔记&#xff0c;以后工作可能会用到。 学习地址如下所示&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了_哔哩哔哩_bilibili 第一章 环境配置 1 初识Python 人…

Ubuntu Server download

前言 Ubuntu——公共云、数据中心和边缘上最受欢迎的 Linux 发行版。自成立以来&#xff0c;Ubuntu 一直在获得市场份额&#xff0c;截至今天已接近 50%。 Ubuntu Server download VersionUbuntu Server 其它主机型号版本Ubuntu AMD历史版下载百度云Ubuntu Server all Ubuntu…

阿里8年经验之谈 —— 分享一次接口性能摸底测试过程!

接口性能测试是用于验证应用程序中的接口是否可以满足系统的性能要求的一种测试方法。确定应用程序在各种负载条件下的性能指标&#xff0c;例如响应时间、吞吐量、并发性能等&#xff0c;以便提高系统的性能和可靠性。本文主要讲述接口性能测试从前期准备、方案设计到环境搭建…

SQL常见函数整理 —— LAG() 向上偏移

1. 用法 窗口函数&#xff0c;用于访问窗口中当前行之前的行的数据。该函数可以根据需要计算当前行之前的值&#xff0c;使我们能够轻松地比较不同行之间的差异和变化。 2. 基本语法 LAG(column, offset, default_value) OVER (ORDER BY column)column&#xff1a;代表在返回…

【香橙派】实战记录1——简介及烧录 Linux 镜像

文章目录 一、简介1、参数2、结构3、其他配件4、下载资料 二、基于 Windows PC 将 Linux 镜像烧写到 TF 卡的方法1、使用 balenaEtcher 烧录 Linux 镜像的方法2、效果 一、简介 Orange Pi Zero 3 香橙派是一款开源的单板卡片电脑&#xff0c; 新一代的arm64开发板&#xff0c;…

百度搜索万亿规模特征计算系统实践

作者 | Jay 导读 本文主要介绍百度搜索在全网万亿级规模内容做内容理解的工程实践&#xff0c;涉及机器学习工程化、资源调度、存储优化等多个Topic。 全文6648字&#xff0c;预计阅读时间17分钟。 01 业务背景 百度收录了互联网海量内容&#xff0c;要索引这些内容&#xff0…

如果文件已经存在与git本地库中,配置gitignore能否将其从git库中删除

想把项目的前后台代码放到同一个git仓库管理&#xff0c;由于未设置.gitignore&#xff0c;就使用vscode做stage操作&#xff08;相当于git add . 命令 其中【.】点表示全部文件&#xff09;&#xff0c;观察将要入库的文件发现&#xff0c;node_modules、target、.idea、log等…

无服务器开发实例|微服务向无服务器架构演进的探索

在当今的技术环境中&#xff0c;许多组织已经从构建单一的应用程序转变为采用微服务架构。微服务架构是将服务分解成多个较小的应用程序&#xff0c;这些应用程序可以独立开发、设计和运行。这些被拆分的小的应用程序相互协作和通信&#xff0c;为用户提供全面的服务。在设计和…

C#的类型转换

目录 一、简介二、基本类型转换1.整数类型转换1.隐式转换2.显式转换 2.浮点类型转换1.隐式转换2.显式转换 3.字符类型转换1.字符到整数的转换2.整数到字符的转换 4.布尔类型转换1.布尔到整数的转换2.整数到布尔的转换 三、隐式转换和显式转换四、装箱和拆箱五、自定义类型转换六…

Java核心知识点整理大全7-笔记

目录 4.1.9. JAVA 锁 4.1.9.1. 乐观锁 4.1.9.2. 悲观锁 4.1.9.3. 自旋锁 4.1.9.4. Synchronized 同步锁 Synchronized 作用范围 Synchronized 核心组件 Synchronized 实现 4.1.9.5. ReentrantLock Lock 接口的主要方法 非公平锁 公平锁 ReentrantLock 与 synchronized …

腾讯云COS+picgo+typora 图床搭建与自动上传

1、腾讯云 COS 腾讯云活动 COS新用户专享 COS 操作步骤 1、点击 创建桶&#xff0c;完善信息 点击下一步&#xff0c;剩下的配置可自己配置 2、picgo 官网地址 2.3.1版本下载地址 现在稳定版本是2.3.1 相关连接 腾讯云密钥设置地址picgo官网地址2.3.1版本下载地址

解决k8s node节点报错: Failed to watch *v1.Secret: unknown

现象&#xff1a; 这个现象是发生在k8s集群证书过期&#xff0c;重新续签证书以后。 记得master节点的/etc/kubernetes/kubelet.conf文件已经复制到node节点了。 但是为什么还是报这个错&#xff0c;然后运行证书检查命令看一下&#xff1a; 看样子是差/etc/kubernetes/pki/…

深入 Django 的 URL 分发器

概要 在 Django 的 MVC 架构中&#xff0c;URL 分发器扮演着至关重要的角色&#xff0c;它负责将用户的请求路由到相应的视图函数或类。这一机制不仅保证了 Django 应用的高度可扩展性&#xff0c;还为开发者提供了灵活的 URL 设计能力。本文将详细介绍 Django 中的 URL 分发器…

麒麟信安与MatrixOne完成兼容互认

近日&#xff0c;超融合异构云原生数据库MatrixOne企业版软件V1.0完成了与欧拉开源操作系统&#xff08;openEuler简称“欧拉”&#xff09;、麒麟信安操作系统系列产品和虚拟化平台的相互兼容认证&#xff0c;通过了欧拉兼容性测评&#xff0c;获得了《openEuler技术测评证书》…