容器-使用slim减少10x+大模型镜像

slim(原docker-slim)是一个开源工具,全称SlimToolkit(https://github.com/slimtoolkit/slim),用于基于已有的Docker镜像减小镜像的大小,同时尽可能保留容器的功能。它通过分析镜像的运行环境和应用程序依赖,移除不必要的文件和组件,从而减少镜像的大小,加快容器的启动速度,并减少资源的占用。官方声称可以缩小达30倍。

在这里插入图片描述

安装

测试机使用anolis 8 x86_64 (kernel 5.10.134-13.an8.x86_64),所以直接选择对应版本二进制即可。

#wget https://github.com/slimtoolkit/slim/releases/download/1.40.11/dist_linux.tar.gz
#tar zxvf dist_linux.tar.gz
#rsync -vaP dist_linux/* /usr/bin/
使用
1. 测试官方提供的镜像
>> docker pull archlinux:latest
...>> slim build --target archlinux:latest --tag archlinux:curl --http-probe=false --exec "curl checkip.amazonaws.com"
...>> docker run archlinux:curl curl checkip.amazonaws.com
...>> docker images
archlinux                 curl                ...        ...         17.4MB
archlinux                 latest              ...        ...         467MB
...
2. 测试大模型大镜像
# slim build --target cuda-runc:2.8.1 --tag cuda-runc:slim-2.8.1 --http-probe=false
cmd=slim info=exec message='changing continue-after from probe to nothing because http-probe is disabled' 
cmd=slim info=exec message='changing continue-after to enter' 
cmd=slim state=started
cmd=slim info=cmd.input.params target.type='image' target.image='cuda-runc:2.8.1' continue.mode='enter' rt.as.user='true' keep.perms='true' tags='cuda-runc:slim-2.8.1' image-build-engine='internal' 
cmd=slim state=image.inspection.start
cmd=slim info=image id='sha256:2cee313ecf4c2dc18d717e58dcac4918221c48d29905302c69dd63cbd8855b6f' size.bytes='196438600805' size.human='196 GB' 
cmd=slim info=image.stack name='cuda-runc:2.8.1' id='sha256:2cee313ecf4c2dc18d717e58dcac4918221c48d29905302c69dd63cbd8855b6f' index='0' 
cmd=slim info=image.exposed_ports list='8888/tcp,6006/tcp' 
cmd=slim state=image.inspection.done
cmd=slim state=container.inspection.start
cmd=slim info=sensor location='/usr/bin/mint-sensor' filemode='-rwxr-xr-x' version='linux/amd64|ALP|x.1.42.2|29e62e7836de7b1004607c51c502537ffe1969f0|2025-01-16_07:48:54AM|x' volume='mint-sensor.x.1.42.2' 
cmd=slim info=container status='created' name='mintk_17355_20250609103324' id='ffa7c3ad2adf1b14325cc6607b94fc8d52248a726c47fed472d4779a92b24073' 
cmd=slim info=container name='mintk_17355_20250609103324' id='ffa7c3ad2adf1b14325cc6607b94fc8d52248a726c47fed472d4779a92b24073' status='running' 
cmd=slim info=container message='obtained IP address' ip='172.17.0.2' 
cmd=slim info=cmd.startmonitor status='sent' 
cmd=slim info=event.startmonitor.done status='received' 
cmd=slim info=container name='mintk_17355_20250609103324' id='ffa7c3ad2adf1b14325cc6607b94fc8d52248a726c47fed472d4779a92b24073' target.port.list='32780,32781' target.port.info='8888/tcp => 0.0.0.0:32780,6006/tcp => 0.0.0.0:32781' message='YOU CAN USE THESE PORTS TO INTERACT WITH THE CONTAINER' 
cmd=slim info=continue.after mode='enter' message='provide the expected input to allow the container inspector to continue its execution' 
cmd=slim prompt='USER INPUT REQUIRED, PRESS <ENTER> WHEN YOU ARE DONE USING THE CONTAINER'
cmd=slim state=container.inspection.finishing
cmd=slim state=container.inspection.artifact.processing
cmd=slim state=container.inspection.done
cmd=slim state=building message="building optimized image" engine=internal 
cmd=slim state=completed
cmd=slim info=results status='MINIFIED' by='11.76X' size.original='196 GB' size.optimized='17 GB' 
cmd=slim info=results image.digest='sha256:7a6048f8cff2103fdb760392e9abf15f87dfe6bd7e22cbc91e4c22d2e4d5314e' has.data='true' image-build-engine='internal' image.name='cuda-runc:slim-2.8.1' image.size='17 GB' image.id='sha256:065d66c7e559286c32db72d02e9e5212a5331ff1e7681dde7ea281daf96330b8' 
cmd=slim info=results artifacts.location='/tmp/mint-state/.mint-state/images/2cee313ecf4c2dc18d717e58dcac4918221c48d29905302c69dd63cbd8855b6f/artifacts' 
cmd=slim info=results artifacts.report='creport.json' 
cmd=slim info=results artifacts.dockerfile.reversed='Dockerfile.reversed' 
cmd=slim info=results artifacts.seccomp='cuda-runc-seccomp.json' 
cmd=slim info=results artifacts.apparmor='cuda-runc-apparmor-profile' 
cmd=slim state=done
cmd=slim info=commands message='use the xray command to learn more about the optimize image' 
cmd=slim info=report file='slim.report.json' 
cmd=slim info=version status='OUTDATED' local='x.1.42.2' current='1.41.7' 
cmd=slim message='Your version of MinToolkit is out of date! Use `mint update` to get the latest version.'
app='mint' message='GitHub Discussions' info='https://github.com/mintoolkit/mint/discussions'
app='mint' message='Join the CNCF Slack channel to ask questions or to share your feedback' info='https://cloud-native.slack.com/archives/C059QP1RH1S'
app='mint' message='Join the Discord server to ask questions or to share your feedback' info='https://discord.gg/fAvq4ruKsG'
实测效果
1. 官方的镜像压缩了20倍+
#docker images
archlinux                                                                              curl    1d98ea103b43 22 minutes ago   22.1M
archlinux                                                                                 latest 694ad64eaa86   4 days ago       486MB
2. 大模型镜像压缩了11倍+
cuda-runc                                                  2.8.1         2cee313ecf4c   4 weeks ago     196GB
cuda-runc                                                  slim-2.8.1   065d66c7e559   6 minutes ago   16.7GB

综上:slim的压缩效果还是很不错的。

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

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

相关文章

Golang基础学习

​​​​​​​​​​ 初见golang语法 go项目路径 cd $GOPATH //ls可以看到有bin,pkg,src三个文件 cd src/ mkdir GolangStudy cd GolangStudy mkdir firstGolanggo程序执行&#xff1a; go run hello.go//如果想分两步执行&#xff1a; go build hello.go ./hello导入包的…

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…

电路图识图基础知识-远程/本地启停电动机(二十一)

在实际的生产中&#xff0c;经常会需要电动机的控制可以就地控制和远方控制&#xff0c;在集中的控制室中&#xff0c;远 方控制电动机的启动、停止。在就地设置启动、停止按钮或是紧急停车按钮&#xff0c;以满足生产的需要。 1.远程、多点及连锁控制电动机电路 2.元器件配置…

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…

__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.

这个警告表明您在使用Vue的esm-bundler构建版本时&#xff0c;未明确定义编译时特性标志。以下是详细解释和解决方案&#xff1a; ‌问题原因‌&#xff1a; 该标志是Vue 3.4引入的编译时特性标志&#xff0c;用于控制生产环境下SSR水合不匹配错误的详细报告1使用esm-bundler…

Vue.js教学第二十一章:vue实战项目二,个人博客搭建

基于 Vue 的个人博客网站搭建 摘要: 随着前端技术的不断发展,Vue 作为一种轻量级、高效的前端框架,为个人博客网站的搭建提供了极大的便利。本文详细介绍了基于 Vue 搭建个人博客网站的全过程,包括项目背景、技术选型、项目架构设计、功能模块实现、性能优化与测试等方面。…

32位寻址与64位寻址

32位寻址与64位寻址 32位寻址是什么&#xff1f; 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元&#xff08;地址&#xff09;&#xff0c;其核心含义与能力如下&#xff1a; 1. 核心定义 地址位宽&#xff1a;CPU或内存控制器用32位…

如何在Spring Boot中使用注解动态切换实现

还在用冗长的if-else或switch语句管理多个服务实现? 相信不少Spring Boot开发者都遇到过这样的场景:需要根据不同条件动态选择不同的服务实现。 如果告诉你可以完全摆脱条件判断,让Spring自动选择合适的实现——只需要一个注解,你是否感兴趣? 本文将详细介绍这种优雅的…

开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例

在工业自动化控制系统中&#xff0c;常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中&#xff0c;客户现场采用了 罗克韦尔PLC&#xff0c;但需要控制的变频器仅支持 ModbusRTU 协议。为了实现PLC 对变频器的有效控制与监控&#xff0c;引入了开疆智能Etherne…

Neovim - LSP 底层原理,难点配置(二)

Neovim LSP 的工作原理 基本概念 LSP(Language Server Protocol)可以理解成是一个"语言助手"。每种编程语言都有自己的"语言助手"(比如 TypeScript 的 tsserver),这些助手能告诉你: 哪写错了(语法错误)哪能跳转(方法定义,引用)哪可以补全(自…

UNECE R152——解读自动驾驶相关标准法规(AEB)

Uniform provisions concerning the approval of motor vehicles with regard to the Advanced Emergency Braking System (AEBS) for M1 and N1 vehicles(2021) 原文链接&#xff1a;https://unece.org/sites/default/files/2024-03/R152r1am1e%20%282%29.pdf 核心内容解析 …

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…

在 Docker 容器中使用宿主机的 GPU

在 Docker 容器中使用宿主机的 GPU&#xff08;特别是 NVIDIA GPU&#xff09;需要安装 NVIDIA Container Toolkit&#xff08;之前称为 nvidia-docker&#xff09;。以下是详细的配置步骤&#xff1a; 1. 宿主机环境准备 确保宿主机已正确安装&#xff1a; NVIDIA 显卡驱动&a…

Vue3学习(接口,泛型,自定义类型,v-for,props)

一&#xff0c;前言 继续学习 二&#xff0c;TS接口泛型自定义类型 1.接口 TypeScript 接口&#xff08;Interface&#xff09;是一种定义对象形状的强大工具&#xff0c;它可以描述对象必须包含的属性、方法和它们的类型。接口不会被编译成 JavaScript 代码&#xff0c;仅…

Python爬虫实战:研究Restkit库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …

Java八股文——Redis篇

目录 1. 缓存穿透解决方案1. 缓存空值2. 布隆过滤器&#xff08;Bloom Filter&#xff09;3. 参数校验4. 接口限流与验证码 2. 缓存击穿解决方案1. 设置热点数据永不过期&#xff08;或很长过期时间&#xff09;2. 使用互斥锁&#xff08;如分布式锁&#xff09;3. 利用异步更新…

旋量理论:刚体运动的几何描述与机器人应用

旋量理论为描述刚体在三维空间中的运动提供了强大而优雅的数学框架。与传统的欧拉角或方向余弦矩阵相比&#xff0c;旋量理论通过螺旋运动的概念统一了旋转和平移&#xff0c;在机器人学、计算机图形学和多体动力学领域具有显著优势。这种描述不仅几何直观&#xff0c;而且计算…

Strong Baseline: Multi-UAV Tracking via YOLOv12 with BoT-SORT-ReID 2025最新无人机跟踪

Strong Baseline: Multi-UAV Tracking via YOLOv12 with BoT-SORT-ReID 2025最新无人机跟踪 自己研一期间的小论文大致上的结构和内容基本上已经完成&#xff0c;到了最后在测试集上测试数据的阶段&#xff0c;在跑测试集的时间上就去看一些25年和多目标跟踪的领域相关的一些内…

MyBatis中foreach集合用法详解

在 MyBatis 中&#xff0c;<foreach> 标签用于遍历集合&#xff08;Collection、List、Array、Map&#xff09;&#xff0c;常用于构建动态 SQL 语句&#xff08;如 IN 查询、批量插入等&#xff09;。以下是详细用法和示例&#xff1a; 核心属性 属性描述collection必填…