文/云原生 SIG
01 背景
随着云原生的蓬勃发展,越来越多的企业在自己的生产或者测试环境使用云原生技术,而容器镜像正是云原生技术中应用的实际运行环境。一个好的容器运行环境即容器镜像会真正关系到应用的体验、演进和维护。那么选择一个好的容器镜像需要考虑哪些方面呢?具体如下:
1. 长期的支持与维护:容器镜像提供的环境是分层的,企业容器应用往往是在一些基础镜像(base image)之上构建自己的应用镜像,而基础镜像提供了应用中所依赖的库、软件包等。对基础镜像上软件包的维护更新、问题修复、新功能支持等,是我们构建一个好的、可靠的、稳定的应用镜像的必要条件。
2. 安全:企业应用的生产往往是开发人员将自己的应用与第三方应用(包括基础容器镜像)通过构建打包成可部署的制品内容,然后应用到生产环境中,这个过程隐藏着两个安全诉求:
- 需要保证所使用的容器镜像的安全性。
- 需要保证在整个软件生命周期中,软件包的源头以及制品的完整性、可追溯性证明也就成了安全的关键环节。
3. 性能/最佳实践:当前很多用户使用的容器镜像都仅仅是提供了通用的应用环境,针对各类场景缺少性能优化、缺少最佳实践方案,那么能否为用户提供优化的容器镜像、为场景提供最佳实践的容器镜像方案就成为很多用户考虑的方面。
基于上面的用户诉求,龙蜥云原生容器镜像(Anolis Container Image)应运而生。今天,很高兴地宣布龙蜥云原生容器镜像正式发布,同时也构建了部分镜像提供给社区用户进行下载,包括基础 base 镜像、基础语言镜像、基础应用镜像等(下载使用方法见下文)。
02 龙蜥云原生容器镜像
龙蜥云原生容器镜像旨在建设一个持续优化的、长期支持和维护的、安全可靠的容器镜像生态,为广大云原生用户、开发者和伙伴提供一个最佳云原生运行环境:
社区维护能力。龙蜥社区基于不同 OS 版本都会维护基础软件 RPM 包,以及基础的语言、应用等软件包,可提供丰富的 base 镜像,并且会定期进行维护更新等,这些都保证了基于龙蜥软件包构建出来的容器镜像具有完整的生命周期管理能力。未来在社区会提供下面三类容器镜像能力:
- Anolis Base Container Image:包括 Anolis 7、Anolis 8、Anolis 23、Alinux 2、Alinux 3 等 (Alinux 即 Alibaba Cloud Linux 的简称,是由阿里云操作系统团队以 Anolis OS 为基础构建的阿里云操作系统发行版。目前阿里云操作系统团队也将其贡献到了龙蜥社区云原生 SIG 的容器镜像生态中)。
- Language Container Image Base Anolis/Alinux:C++、Java、Python、Nodejs、Go 等。
- Application Container Image Base Anolis: nginx、postgres、redis、httpd、mongo、mysql 等。
安全保证。社区主要有两方面保证,一是从容器镜像软件包来源上,社区会定期对镜像中软件包进行定期 CVE 修复,保证从源头上解决安全能力;二是从容器镜像完整性上,我们构建过程中会对镜像进行数字签名,这样 Release 的镜像都是带有签名加固,实际下载镜像的用户使用者可以进行验签。而相对于传统的签名方案,我们在云原生场景可以支持更加便捷的 Keyless Signatures 模式,可以更加友好、易用地进行加签和验签。
性能最优。龙蜥社区有丰富的软件方案,其中 KeenTune 提供 AI 算法和专家知识库智能调优,我们在一些应用镜像中默认集成了 KeenTune,可以让业务运行在最优的环境中。
同时龙蜥云原生容器镜像面向开发者与伙伴提供了一站式的开发集成设施,从容器的构建平台到测试平台,再到分发平台等,可以帮助开发者低门槛贡献容器镜像。开发者只需要在社区代码仓库中提交对应镜像的 Dockerfile,社区基础设施可以完成完整的容器构建与测试、分发流程,代码仓库见下:https://gitee.com/anolis/docker-images/。
03 当前进展与未来规划
目前我们已经构建了部分的镜像,并可以提供给社区用户进行下载,未来一年我们会提供更多的高频使用容器镜像,同时在下载的镜像中带有安全数字签名,初步路标如下图所示:
04 如何获取使用
当前我们在社区已经构建出了基础的 Anolis OS base 镜像,以及部分基础语言与应用的镜像,用户可以根据表中列出的地址进行下载和使用,也欢迎大家在社区中提出建议和意见。
直接下载使用
举例如下:
Anolis 的 base 镜像:
docker pull registry.openanolis.cn/openanolis/anolisos:8.6
基础语言镜像:
docker pull registry.openanolis.cn/openanolis/golang:1.19.4-8.6 docker pull registry.openanolis.cn/openanolis/python:3.11.1-8.6
基础应用镜像:
docker pull registry.openanolis.cn/openanolis/mysql:8.0.30-8.6 docker pull registry.openanolis.cn/openanolis/redis:5.0.3-8.6
作为 base 镜像使用
举例如下:
[root]# cat Dockerfile FROM registry.openanolis.cn/openanolis/anolisos:8.6 RUN touch hello
[root]# docker build -t anolis-test . Sending build context to Docker daemon 2.048kB Step 1/2 : FROM registry.openanolis.cn/openanolis/anolisos:8.6 8.6: Pulling from openanolis/anolisos 719018114380: Pull complete Digest: sha256:9395d241fc1a41a592773629994c3c0fa48886dd99c75431d7a885fb842753fa Status: Downloaded newer image for registry.openanolis.cn/openanolis/anolisos:8.6 ---> 6f8a2912d1d7 Step 2/2 : RUN touch hello ---> Running in ca675e55ccb7 Removing intermediate container ca675e55ccb7 ---> 5b86728702bd Successfully built 5b86728702bd Successfully tagged anolis-test:latest [root]# docker run --rm anolis-test ls hello hello
此外,我们也正在与阿里云容器服务团队进行合作,在阿里云 ACR 制品中心陆续上架龙蜥社区的容器镜像,大家可以直接查看阿里云 ACR 制品中心获取。
团队招人啦:龙蜥云原生团队正在招聘中,欢迎大家一起加入龙蜥云原生,共建云原生社区生态,具体招聘信息点击这里查看。
相关链接:
龙蜥云原生 SIG 主页:
https://openanolis.cn/sig/cloud-native
—— 完 ——
加入龙蜥社群
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。