From dfddc203b219443a4ca933d067db1935c5ee2371 Mon Sep 17 00:00:00 2001 From: wangyueliang Date: Wed, 27 Sep 2023 17:38:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E3=80=8ANestOS=20For=20Conta?= =?UTF-8?q?iner=E4=BB=A5OCI=E6=96=B9=E5=BC=8F=E5=AE=9A=E5=88=B6=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=89=8B=E5=86=8C=E3=80=8B=E5=88=9D=E7=A8=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\346\210\220\351\203\250\347\275\262.png" | Bin 0 -> 12974 bytes ...0\347\275\262\350\277\207\347\250\213.png" | Bin 0 -> 22157 bytes ...77\347\224\250\346\211\213\345\206\214.md" | 61 ++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 "docs/zh/graph/NestOS-For-Container\344\273\245OCI\346\226\271\345\274\217\345\256\232\345\210\266/\345\256\214\346\210\220\351\203\250\347\275\262.png" create mode 100644 "docs/zh/graph/NestOS-For-Container\344\273\245OCI\346\226\271\345\274\217\345\256\232\345\210\266/\351\203\250\347\275\262\350\277\207\347\250\213.png" create mode 100644 "docs/zh/usr_manual/NestOS-For-Container\344\273\245OCI\346\226\271\345\274\217\345\256\232\345\210\266\344\275\277\347\224\250\346\211\213\345\206\214.md" diff --git "a/docs/zh/graph/NestOS-For-Container\344\273\245OCI\346\226\271\345\274\217\345\256\232\345\210\266/\345\256\214\346\210\220\351\203\250\347\275\262.png" "b/docs/zh/graph/NestOS-For-Container\344\273\245OCI\346\226\271\345\274\217\345\256\232\345\210\266/\345\256\214\346\210\220\351\203\250\347\275\262.png" new file mode 100644 index 0000000000000000000000000000000000000000..807aac508ced9ff7614ec508aa408dcef69a1008 GIT binary patch literal 12974 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 + +  过往NestOS提供集成工具NestOS-assembler 用于满足用户自定义需求,但该方案较为复杂,需要用户准备rpm软件包源、修改相应构建配置信息,更重要的是与用户上层应用运维技术栈不符,学习成本很高。
+ +  现NestOS For Container集成ostree native container特性,可使容器云场景用户利用熟悉的技术栈,只需编写一个ContainerFile(Dockerfile)文件,即可轻松构建定制版镜像,用于自定义集成组件或后续的升级维护工作。
+ +### 使用方式 + +#### 定制镜像 +------- +##### 基本步骤 +- 选择相同发布流与架构的NestOS容器镜像 +- 编写Containerfile(Dockerfile)如下: +```dockerfile +FROM hub.oepkgs.net/nestos/nestos-test:22.03-LTS-SP2.20230922.0-aarch64 +# 执行自定义构建步骤,例如安装软件或拷贝自构建组件 +RUN rpm-ostree install strace && rm -rf /var/cache && ostree container commit +``` +- 执行docker build或集成于CICD中构建相应镜像 + +##### 注意事项 +- NestOS For Container 无yum/dnf包管理器,如需安装软件包可采用`rpm-ostree install`命令安装本地rpm包或软件源中提供软件 +- 如有需求也可修改/etc/yum.repo.d/目录下软件源配置 +- 每层有意义的构建命令末尾均需添加`&& ostree container commit`命令,从构建容器镜像最佳实践角度出发,建议尽可能减少RUN层的数量 +- 构建过程中会对非/usr或/etc目录内容进行清理,因此通过容器镜像方式定制主要适用于软件包或组件更新,请勿通过此方式进行系统维护或配置变更(例如添加用户useradd) + +#### 部署镜像 +------- +##### 基本步骤 +- 假设上述步骤构建容器镜像被推送为hub.oepkgs.net/nestos/nestos-test:demo-strace +- 在已部署NestOS For Container的环境中执行如下命令: +```shell +sudo rpm-ostree rebase ostree-unverified-registry:hub.oepkgs.net/nestos/nestos-test:demo-strace --bypass-driver +``` +- 重新引导后完成定制版本部署 + +##### 注意事项 +- 在部署时,您可以添加 --bypass-driver 参数。这是因为 NestOS For Container 默认通过 zincati 服务来自动更新,但如果您计划长期使用容器镜像维护系统,请关闭 zincati 服务,此时无需添加该参数。 +- 当您使用容器镜像方式部署后,rpm-ostree upgrade 默认会将更新源从ostree更新源地址更新为容器镜像地址。这会导致 zincati 服务的自动更新失效。之后,您可以在相同的tag下更新容器镜像,使用 rpm-ostree upgrade 可以检测远端镜像是否已经更新,如果有变更,它会拉取最新的镜像并完成部署。 + +#### 效果展示 +- 部署过程 + +![部署过程](/docs/zh/graph/NestOS-For-Container以OCI方式定制/部署过程.png) + +- 完成部署 + +![完成部署](/docs/zh/graph/NestOS-For-Container以OCI方式定制/完成部署.png) + +### 原理介绍 +//todo + + +### 参考资料 +- https://ostreedev.github.io/ostree/ +- https://coreos.github.io/rpm-ostree/container/ -- Gitee