【容器镜像】获取原始 rootfs 及各系统大小对比

调整rootfs分区大小,uboot的环境变量设置问题,重新烧录rootfs固件到SPI Flash 1.当你把kernel和rootfs烧录到存储器中时,上电自动进入系统,我们需要进入u-boot下,打开串口调试助手这里我使用的是MobaXterm的串口调试,重新插拔USB转TTL串口工具,重新上电,同时在串口调试的终端按空格键进入uboot。使用HiTool工具,扩大rootfs长度,重新烧录rootfs固件到SPI Flash。修改之前一定要检查SPI Flash的容量大小,扩大rootfs不能超过存储器的容量大小。6.重新上电进入系统,输入rf -h打印硬盘使用情况。4.bootcmd不用修改。 阅读详情

之前一秒构建了 alpine 的容器镜像,甚至使用静态编译的应用不需要 rootfs 就可以运行,这也是 golang 在容器时代大流行的主要原因。如果不用科学上网,就可以从零构建基础 IT 设施,速度又很快,这大大增强了研发进度。下面介绍各 rootfs 的来源linuxcontainers,并根据 images.linuxcontainers.org 的镜像结构和搜索结果中提供的索引解析方法,我们可以通过以下步骤获取所有 rootfs 的大小信息。


1. 镜像分类与大小范围

该站点提供多种 Linux 发行版和架构的 rootfs,不同发行版的 rootfs 大小差异显著:

  • Alpine Linux
    • 版本:3.17、3.18 等
    • 架构:amd64、arm64、armhf
    • 压缩包大小:约 2–5 MB(minirootfs)
  • Ubuntu
    • 版本:22.04(Jammy)、20.04(Focal)
    • 架构:amd64、arm64
    • 压缩包大小:约 30–50 MB
  • Debian
    • 版本:12(Bookworm)、11(Bullseye)
    • 架构:amd64、arm64
    • 压缩包大小:约 40–60 MB
  • CentOS/ AlmaLinux
    • 版本:9、8
    • 架构:amd64、arm64
    • 压缩包大小:约 70–100 MB
  • Fedora
    • 版本:38、39
    • 架构:amd64、arm64
    • 压缩包大小:约 80–120 MB
  • Arch Linux
    • 架构:amd64
    • 压缩包大小:约 60–80 MB

2. 获取 rootfs 大小的自动化方法

通过解析镜像索引文件 meta/1.0/index-system,可生成 rootfs 的下载链接并获取大小。示例脚本如下:

#!/bin/bash

# 定义镜像源
LXC_MIRROR="https://images.linuxcontainers.org"

# 获取索引文件
echo "正在下载索引文件..."
curl -sL "${LXC_MIRROR}/meta/1.0/index-system" > index.txt

# 遍历所有镜像并获取大小
echo "开始处理镜像..."
while IFS=';' read -r os version arch type time dir; do
  if [[ "$type" == "default" ]]; then
    # 构建URL,确保路径正确
    url="${LXC_MIRROR}${dir%/}/rootfs.tar.xz"
    # 获取最终重定向后的文件大小
    size=$(curl -sIL "$url" | grep -i 'Content-Length:' | tail -n1 | awk '{printf "%.2f MB", $2/1024/1024}')
    # 输出格式化结果
    printf "[%-6s] %-12s %-8s: %s\n" "${arch}" "${os}" "${version}" "${size:-未知}"
  fi
done < index.txt

echo "处理完成。"

此脚本会输出格式如 [amd64] alpine 3.18: 4.2 MB 的列表。


3. 典型镜像大小示例

基于实际测试和搜索结果,部分镜像的压缩包大小如下(以 amd64 架构为例):

发行版版本类型大小备注
Alpine3.18default4.2 MB最小化设计,适合容器
Ubuntu22.04default48.7 MB包含基础工具和包管理
Debian12default55.3 MB标准系统核心组件
CentOS9default92.1 MB包含 SELinux 和额外服务
Arch Linuxlatestdefault68.5 MB滚动更新,包管理器简洁

4. 影响 rootfs 大小的因素

  1. 包含的软件包数量
    • 例如,Ubuntu 的 default 镜像比 minimal 包含更多预装工具。
  2. 压缩算法
    • 使用 tar.xz 压缩比 tar.gz 体积更小。
  3. 架构差异
    • ARM 架构镜像通常比 x86_64 略小(如 Alpine arm64 约 3.8 MB)。

嵌入式Linux根文件系统实战:从BusyBox到最小rootfs构建与裁剪 在嵌入式Linux开发中,根文件系统(rootfs)是系统启动后用户态运行的基石,而BusyBox作为一套核心工具集,以单一二进制集成数百条常用命令,通过符号链接实现多功能复用,成为构建最小文件系统的黄金标准。理解init进程、VFS与设备节点机制,能帮助开发者厘清内核从挂载rootfs到启动第一个进程的完整链路。本文从工程实践视角出发,围绕BusyBox的静态/动态编译选择、交叉编译环境的搭建、最小rootfs的目录设计、inittab与rcS初始化脚本配置,以及mdev动态设备管理等关键技术展开,并结合 阅读详情

相关推荐

容器镜像转虚拟机:container-vm项目原理、实战与场景解析

容器与虚拟机是两种主流的应用虚拟化与隔离技术。容器技术通过共享宿主机内核,实现了轻量级的进程级隔离和快速启动,而虚拟机则通过硬件虚拟化提供了完整的操作系统环境和更强的隔离性。在混合云、边缘计算等异构部署场景下,两种技术栈的交付物格式往往互不兼容,形成了交付鸿沟。container-vm项目正是为解决这一痛点而生,它本质上是一个转换器,其核心原理是使用umoci工具解包标准的OCI容器镜像,提取其根文件系统,再借助dracut工具构建一个极简的、仅包含必要驱动和自定义初始化脚本的initramfs引导环境。该

weixin_28730549的博客 519

【容器镜像】从底层开始一秒构建

通过以上方法,可快速构建基于国内镜像源的最小化 Alpine 容器镜像,适用于物联网设备(如树莓派)、Kubernetes Pod 等场景。这种优化后的镜像兼具高效性和安全性,特别适合资源受限的环境。自建小型基础,特别适合 VPS 类超小型主机,或者套娃容器管理。以下是基于清华大学镜像站的 Alpine Linux RootFS 构建最小化容器镜像的完整指南。架构的 Alpine v3.20 为例,逐步说明如何利用国内系统资源的构建过程。在 RootFS 中预先配置镜像加速,编辑。

Talbot3的笔记 1804

linux系统中rootfs根文件系统制作及挂载基本操作

根文件系统一般也叫做 rootfs,那么什么叫根文件系统?看到“文件系统”这四个字,很多人,包括我第一反应就是 FATFS、 FAT、 EXT4、 YAFFS 和 NTFS 等这样的文件系统。在这里,根文件系统并不是 FATFS 这样的文件系统代码, EXT4 这样的文件系统代码属于 Linux 内核的一部分。Linux 中的根文件系统更像是一个文件夹或者叫做目录(在我看来就是一个文件夹,只不过是特殊的文件夹),在这个目录里面会有很多的子目录。

嵌入式技术开发 1900

【万字长文】Docker 容器镜像是怎样炼成的?

上周我看了很多关于容器镜像相关的博客,从大佬们那里偷偷学了不少知识,对容器镜像也有了一点点深入的了解。趁着这周末宅在家有空,我把最近所学的知识整理成文,供大家一起食用。文章内容比较长,不过如果读者能有耐心看完,相信还是能收获一些知识。 镜像是怎样炼成的 所谓炼成像就是构建镜像。提到容器镜像就不得不提一下 OCI ,即 Open Container Initiative,旨在围绕容器格式和运行时制定一个开放的工业化标准。目前 OCI 主要有三个规范:运行时规范 runtime-spec ,镜像规范 .

wzlsunice88的博客 739

【异常】收到腾讯云可观测平台告警:当前数据: 85.001%(rootfs空间使用率 )

腾讯云告警提示某Pod的rootfs空间使用率超过85%,需立即处理。根因可能是日志过大、临时文件堆积或镜像冗余。建议步骤:1) 登录控制台查看监控趋势;2) 进入Pod排查大文件(使用df/du命令);3) 清理过期日志/tmp文件;4) 长期优化需配置日志轮转、调整存储配额或精简镜像。后续可设置预警阈值、建立自动化清理机制,并规范镜像构建标准。若问题持续,可联系腾讯云技术支持提供集群ID和Pod名称协助处理。

奶爸的编程之路,也就一周冷个三天 336

基于Shell脚本的Linux根文件系统(rootfs)自动化构建项目

系统初始化是操作系统从内核加载完成到用户空间服务正常运行的关键阶段。在构建自定义根文件系统(rootfs)时,若缺乏有效的启动机制,即使拥有完整的目录结构和基础工具链,系统也无法进入可用状态。因此,启动脚本的编写成为决定系统能否成功引导的核心环节。现代Linux系统普遍采用systemd作为默认初始化系统,但在嵌入式、轻量级或调试环境中,仍广泛使用传统的SysVinit或简化版的init机制,结合rc.local实现灵活的开机任务注入。

weixin_29607511的博客 1229

Kata Containers 使用 EROFS 构建 rootfs 镜像实战指南

Kata Containers 以只读方式挂载 guest 根文件系统(rootfs),其元数据开销直接影响镜像体积与启动效率。本指南完整讲解如何用 EROFS(Enhanced Read-Only File System)构建 Kata rootfs:从安装 `erofs-utils`、构造本地 rootfs、生成并安装镜像,到在运行时配置中启用 `rootfs_type = erofs` 的端

gitblog_00827的博客 168

rootfs.tar.xz

ShieldTV刷机系统文件,整合了Tegra210_Linux_R24.2.1_aarch64.tbz2和Tegra_Linux_Sample-Root-Filesystem_R24.2.1_aarch64.tbz2

蓝鲸PaaS Operator组件管理:sidecar与persistent_rootfs设计完整指南

蓝鲸PaaS(blueking-paas)是一个开放式的 SaaS 应用开发平台,其中 Operator 是负责在 Kubernetes 上构建、部署应用的核心组件。本文带你看懂 Operator 内置的两大"进程组件"——sidecar(附属容器注入)与 persistent_rootfs(容器持久化系统盘)的设计思路:它们如何通过模板 + JSON Schema 的方式,让用户用一份简单的 Y

gitblog_00678的博客 765

ROS2进程内通信:零拷贝Intra-Process原理与实战

Intra-Process通信是ROS2实现低延迟节点间数据交换的核心机制,其本质是通过C++17智能指针与零拷贝共享内存,在同一进程内绕过序列化、系统调用和上下文切换。相比传统DDS跨进程通信,它将`geometry_msgs::Twist`类消息延迟从42μs降至0.8μs,显著提升机器人实时控制性能。该技术并非自动启用,需满足同执行器、QoS严格匹配、内存所有权明确三大约束,适用于机械臂控制、视觉SLAM、图像处理流水线等对端到端延迟敏感的场景。本文聚焦ROS2原生Intra-Process通讯的原理

weixin_30619101的博客 364

【Apollo学习笔记】——规划模块TASK之SPEED_HEURISTIC_OPTIMIZER

在Apollo星火计划学习笔记——Apollo路径规划算法原理与实践与【Apollo学习笔记】——Planning模块讲到……Stage::Process的函数会依次调用task_list中的TASK,本文将会继续以LaneFollow为例依次介绍其中的TASK部分究竟做了哪些工作。由于个人能力所限,文章可能有纰漏的地方,还请批评斧正。在配置文件中,我们可以看到LaneFollow所需要执行的所有task。本文将继续介绍LaneFollow的第10个TASK——动态规划规划目标加速度尽可能小。

sinat_52032317的博客 3426

Docker受限?试试Podman,手动搭建Ubuntu容器镜像

未来,我计划在这个基础镜像上构建更多具有具体功能的容器镜像,以满足我的开发需求。无奈之下,我决定直接在Ubuntu Base的基础上构建一个基础容器镜像,然后再在这个基础镜像上构建实际需要的功能镜像。最近,我打算用Docker来搭建一个开发环境,但遗憾的是,我发现Docker Hub无法使用,甚至国内的镜像源也无法访问。这让我有些头疼,但好在我在寻找解决方案的过程中,发现了一个Docker的替代方案:Podman。镜像成功运行,我进入了一个Ubuntu的bash环境,可以看到Ubuntu的文件系统结构。

arthurchan2021的博客 1492

K-近邻算法: k-nearest neighbor classification (kNN) 详细介绍

@创建于:2020.04.09 @修改于:2020.04.09,2024.06.22 文章目录1、kNN介绍2、k近邻法的三要素详解2.1 距离度量2.2 k值的选择2.3 分类决策规则3、k近邻法的实现:kd树4、Python实现过程5、优缺点6、常见问题 1、kNN介绍 kNN是一个基本而简单的分类算法,作为监督学习,那么KNN模型需要的是有标签的训练数据,对于新样本的类别由与新样本距离最近的k个训练样本点按照分类...

chenhepg的博客 9万+

colibri:容器镜像按需拉取与块级去重实战解析

容器镜像通常遵循 OCI 分层压缩格式,layer 以 tar.gz 保存,gzip 链式压缩与 tar 无全局索引使读取难以随机寻址,拉取往往等于整镜像下载。colibri 将镜像转换为带索引的块存储:先还原文件树,再按固定大小切块、内容哈希去重,并把唯一块顺序写入单文件,辅以块索引。FUSE 层在收到读取请求时,借助 HTTP Range 只拉取所需数据块,实现按需拉取与块级去重,降低首字节时间和带宽占用。该思路适合边缘计算、批处理集群、短生命周期容器以及本地镜像迭代等存储和拉取敏感场景。围绕镜像转换、

weixin_29313423的博客 235

Cesium WebGL性能调优实战:从卡顿根源到流畅渲染

本文深入探讨Cesium WebGL性能调优的实战技巧,从硬件配置、框架适配到3D Tiles加载策略,全面解决卡顿问题。通过强制启用独立显卡、优化浏览器设置、避免Vue内存陷阱等实用方法,显著提升3D地图应用的流畅度。文章还分享了高级调试工具和实战避坑经验,帮助开发者实现高效渲染。

weixin_27215337的博客 421

Yolov5s可视化网络结构图

Yolov5共有四种网络结构,每种网络深度和宽度上都不相同。 (1) Yolov5s可视化网络结构图:点击查看 (2) Yolov5m可视化网络结构图:点击查看 (3) Yolov5l可视化网络结构图:点击查看 (4) Yolov5x可视化网络结构图:点击查看 ...

江南研习社 15万+

K8S-Demo集群实践18:构建宇宙中第一个基础容器镜像,致敬Docker之父Solomon Hykes

K8S-Demo集群实践:构建宇宙中的第一个Docker容器镜像 先用起来,通过操作实践认识k8s,积累多了自然就理解了 把理解的知识分享出来,自造福田,自得福缘 追求简单,容易使人理解,知识的上下文也是知识的一部分,例如版本,时间等 欢迎留言交流,也可以提出问题,一般在周末回复和完善文档 Jason@vip.qq.com 2021-1-29 ...

jasonhe2018的博客 434

Mac 不小心断开移动硬盘导致磁盘无法读取和加载(顺利解决!)

Mac移动硬盘不正确断开连接导致无法读取加载的解决方法,亲测有效

Robin_Pi的博客 1万+

深入理解容器镜像

一旦这个镜像被发布,那么你在全世界的任何一个地方下载这个镜像,得到的内容都完全一致,可以完全复现这个镜像制作者当初的完整环境。这,就是容器技术“强一致性”的重要体现。

key_3_feng的博客 246

脑机接口中的视觉信号解码:原理、技术与应用

脑机接口中的视觉信号解码:原理、技术与应用​ ,人工智能,计算机视觉,大模型,AI,脑机接口(Brain - Computer Interface,BCI)作为一种革命性的技术,致力于搭建人脑与外部设备之间的直接通信桥梁,绕开传统的神经肌肉输出通路。其核心目标是解读大脑活动产生的信号,从而实现对外部设备的精准控制或信息交互。在众多脑机接口研究方向中,视觉信号解码因其独特的优势和广泛的应用前景,吸引了大量科研人员的关注。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 20万+

软考中级-软件设计师 Python基础

软考中级-软件设计师 Python知识点整理

片言可决讼,半纸能缚龙 3643

Kubernetes 深入浅出系列 | 容器剖析之容器镜像原理

本章介绍了以 overlayfs 作为存储驱动的的镜像存储原理其中每层的镜像数据保存在 /var/lib/docker/overlay2//diff 目录下,init 层数据保存了在 /var/lib/docker/overlay2//diff 目录下,最后统一视图(容器层)数据在 /var/lib/docker/overlay2//diff 目录下,docker 通过 image 元数据和 layer 元数据利用内容寻址(chainID)将这些目录组织起来构成容器所运行的文件系统。

weixin_48711696的博客 1113

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

buildah mkcw 完全指南:将普通容器镜像转换为机密工作负载镜像

`buildah mkcw` 是 Buildah 提供的一项镜像转换能力:它读取一个常规的 OCI 容器镜像,将其根文件系统与配置打包进一个 LUKS 加密的磁盘镜像,并生成一个专为可信执行环境(TEE,如 AMD SEV/SNP)设计的"机密工作负载(confidential workload)"镜像。本文以 [docs/buildah-mkcw.1.md](https://link.gitco

gitblog_00859的博客 1046

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

容器镜像体积分析与瘦身:MiroFish 工具实战指南

在持续集成与持续交付的工程实践中,容器镜像体积直接影响构建效率、存储成本与交付带宽。理解 Docker 镜像分层存储原理,是优化镜像体积的前提:每一层记录文件变更,而删除操作未必真正释放空间,whiteout 机制与压缩算法让体积统计存在多种口径。基于分层解析与文件级索引,开发者可以在不修改 Dockerfile 的前提下,对存量镜像进行安全裁剪与离线增量交付。MiroFish 作为一款容器镜像体积分析与瘦身命令行工具,提供扫描、对比、裁剪、导出四大能力,帮助团队在现有镜像基础上定位冗余缓存、清理无用依赖,

weixin_31102231的博客 260

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Kata Containers 在虚拟机 Guest 内拉取容器镜像(Guest Image Pull)实战指南

Kata Containers 自 3.3.0 起引入了 Guest Image Management(虚拟机内镜像管理)特性,允许容器镜像在 **Guest VM 内部** 直接由 kata-agent 拉取,从而将镜像的获取、解压与挂载全部纳入虚拟机侧的可信执行环境(TEE)之中,防止宿主机对容器镜像的篡改,是 Confidential Containers(机密容器)方案的关键基础能力。本指

gitblog_00196的博客 609

【Docker】容器文件系统

思考一下,假如我需要同时运行100个基于Debian的容器,每个容器rootfs大小约为1GB。这会占用多少存储空间?更重要的是,如果我要为每个容器安装一个新软件包或修改配置文件,我需要如何处理?很明显,如何按照rootfs那种情况,那么我需要100GB的存储空间,且我每次更新基础镜像时需要同时更新100个副本。但是如果让所有容器共享一个rootfs,那么就使得各容器间文件无法隔离,一个容器的修改会影响其他所有容器。所以,这些难题就引入了我们的联合文件系统ufs。多容器共享基础层,大幅节省存储空间。

qq_51802998的博客 1382
上一篇: 【容器镜像】从底层开始一秒构建
下一篇: 【容器镜像】:rootfs与容器关联要点
旷野说
博客等级 码龄9年 361粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值