从微信云托管容器镜像的选择-alpine 说起

微信云托管 使用目前主流的容器平台Docker以及容器编排技术Kubernetes(简称K8S),来管理你的项目。使用微信云托管需要掌握对Docker的使用,但你无需掌握K8S的使用方法。微信云托管将K8S的运维配置完全接手,你不需要关心K8S和容器服务如何配置和相互作用,只需要操作微信云托管提供的简单操作面板,就可以轻松的部署服务,大大降低了容器化技术的使用门槛。当你使用微信生态下的客户端(小程序、公众号),向部署在微信云托管上的后端服务发送请求时,会自动经过微信接入层(内网),并附带微信校验的权威用户信息。非微信生态下的客户端(普通WEB网页、APP),向部署在微信云托管上的后端服务发送请求时,会经过微信云托管公网网关层(所有用户共用,由微信云托管团队维护),并根据域名转发到对应的用户服务。微信云托管提供默认公网域名,也可以接入自己备案好的自定义域名。

在微信云托管提供的官方模板里(PHP,Python,NodeJS,Golang,Java,.NET) 唯独Java 用的不是alpine 镜像,具体代码参见 https://github.com/WeixinCloud。

bd2b7525d797ed9456c31d594f2b80fc.png

在 容器崛起之前,Alpine 还是个无名之辈,可能是因为大家并不是很关心操作系统本身的大小,毕竟大家只关心业务数据和文档,程序、库文件和系统本身的大小通常可以忽略不计。

容器技术席卷整个软件产业之后,大家都注意到了一个问题,那就是容器的镜像太大了,浪费磁盘空间,拉取镜像的时间也很长。于是,人们开始寻求适用于容器的更小的镜像。对于那些耳熟能详的发行版(例如 Ubuntu、Debian、Fedora)来说,只能通过删除某些工具(例如 ifconfig 和 netstat)将镜像体积控制在 100M 以下。而对于 Alpine 而言,什么都不用删除,镜像大小也就只有 5M 而已。

Alpine 镜像的另一个优势是包管理工具的执行速度非常快,安装软件体验非常顺滑。诚然,在传统的虚拟机上不需要太关心软件包的安装速度,同一个包只需要装一次即可,无需不停重复安装。容器就不一样了,你可能会定期构建新镜像,也可能会在运行的容器中临时安装某些调试工具,如果软件包的安装速度很慢,会很快消磨掉我们的耐心。

Alpine操作系统是一个面向安全的轻型Linux发行版。它不同于通常的Linux发行版,Alpine采用了musl libc和BusyBox以减小系统的体积和运行时资源消耗,但功能上比BusyBox又完善得多。在保持瘦身的同时,Alpine还提供了自己的包管理工具apk,可以通过https://pkgs.alpinelinux.org/packages查询包信息,也可以通过apk命令直接查询和安装各种软件。

Alpine Docker镜像也继承了Alpine Linux发行版的这些优势。相比于其他Docker镜像,它的容量非常小,仅仅只有5MB左右(Ubuntu系列镜像接近200MB),且拥有非常友好的包管理机制。官方镜像来自docker-alpine项目。

在制作docker镜像时,使用 multi stage 构建各个不同阶段的命令文件,最终copy到busybox或alpilne中执行。这样做得好处有二:

  1. 保持镜像最小,busybox,alpine 是最小的操作系统镜像

  2. 有各种linux工具使用,busybox本身是一个linux工具集

  3. 构建stage建议使用alpine和其它的官方包, 主要理由是此镜像比busybox稍大,但是比其他的系统镜像都小,有人就问了,为撒不用busybox呢,因为busybox没有包管理工具,这带来很多不便;这点也是busybox和alpine的主要区别

下面我们来看一看.NET 和 Java的 alpine 的镜像情况:

当前Java 没有针对Alpine的官方稳定的OpenJDK 11构建,虽然 https://adoptopenjdk.net/ 拥有Alpine对Java 11的官方支持:https://hub.docker.com/r/adoptopenjdk/openjdk11。

Alpine是为了响应客户请求更安全的容器发行版而添加的,从.NET Core 2.0开始 .NET 就有针对Alpine 的官方稳定的.NET 构建,对Alpine 有非常好的支持,因为它包含的软件包更少,并且由于其表面积的减少,似乎具有更有限的CVE暴露:https://hub.docker.com/_/microsoft-dotnet-runtime。

相关文章:

  • 优化 ASP.NET Core Docker 镜像的大小

  • https://github.com/dotnet/dotnet-docker/blob/main/documentation/guiding-principles.md 

  • https://devblogs.microsoft.com/dotnet/staying-safe-with-dotnet-containers/

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

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

相关文章

H5移动开发AUI框架入门---博客园老牛大讲堂

大家都知道H5可以开发移动端的页面,网上提供的移动端的开发都有很多。因为我学习了AUI框架,所以我这里介绍一下移动端AUI框架。--博客园老牛大讲堂 一、AUI框架是什么?---博客园老牛大讲堂 AUI框架就是利用原生的js和css封装成的一些界面。当…

python画樱桃小丸子_每天坚持画画|简笔画练习“樱桃小丸子”

《樱桃小丸子》也是80后的经典回忆,特别是女生们。你们可能不知道如果按实际年龄来算小丸子今年已经52岁了(1965年5月8日出生)可想而知这部动画片的影响力有多大。【今日主题】《樱桃小丸子》樱桃子BY:网络,侵删【完成图】BY:纳豆…

linux操作命令等积累

1,启动服务:两种方式: /etc/init.d/networking start /etc/init.d/mysql start #:service mysql start service networking start(stop,restart) $:sudo service mysql start(stop,restart) 2, linux 程序安装位置:多数位于/v…

linux之gdb调试常用100个技巧

linux之gdb调试常用100个技巧 https://gitlore.com/page/gitlore-git/gdb_tips/index.html 如果不懂linux gdb调试的 看下这篇文章 详细解说

制造价值基本方程

财富来自于自然资源、生产制造和服务。 未经加工的自然资源是价值低或没有用的,服务也必须和生产制造联系起来才能增加财富。 生产制造是增加财富的核心手段。 ERP enterprise resources planning 企业资源计划 -- 是管理的理念和工具。 制造要回答的问题&#xff1…

.NET6使用DOCFX根据注释自动生成开发文档

本文内容来自我写的开源电子书《WoW C#》,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master sogeisetsu/WOW-Csharp (github.com)来查看编写进度。预计2021年年底会完成编写,2022年2月之前会完成所有的校对和转制电子书工作&…

Oracle数据库-主键(primary key)、外键(foreign key)、候选键(candidate key)、超键(super key)和references总结...

主要介绍一下个人对主键(primary key)、外键(foreign key)、候选键(Candidate key)、超键(super key)、references的总结 概念: 主键:用户选择元组标识的一个…

量子力学到底神奇在哪里?看完这个,我的认知彻底坍塌了

▲ 点击查看很多朋友应该都看过Facebook创始人扎克伯格给他的女儿讲量子力学的那张照片。扎克伯格在清华大学经济管理学院做演讲时,曾谈到:学习量子力学改变了他的思维方式。到底什么是量子力学?我们生活面对的物质尺度大约是厘米级到千米级之…

python开机号_感知机(python实现)

感知机(perceptron)是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取1和-1)。感知机对应于输入空间中将实例划分为两类的分离超平面。感知机旨在求出该超平面,为求得超平面导入了基于误分类的损失函数,利用梯度下…

linux 路由表设置 之 route 指令详解

使用下面的 route 命令可以查看 Linux 内核路由表。 [cpp] view plaincopy# route Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 169.254.0.0 * …

10进制转化为16进制以内的转化

进制转化问题十进制转化为其它进制应该是比较简单的问题,就是一个%和/的问题,模之后再除就ok了 1 int a[1000];2 char c[]{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F};3 int main()4 {5 int m,n,i,t,k;6 printf("十进制数:");7 …

黄老师离开呆了十年的上海

关注我的老朋友都知道,我和一线码农(黄新成)以前是同事,我以前也写过文章说过他的事迹。我们曾经一起共事过一家电商服务公司,每天和千万量级的数据打交道。.NET 圈的朋友想必很多人都看过一线码农写的技术文章&#x…

Shell配置_配置IP

1、setup 打开图形化页面a) 选择网络配置b) 选择设置配置c) 选择第一个网卡2、启动网卡(第一个网卡)vim /etc/sysconfig/network-scripts/ifcfg-eth0将ONBOOT"no"改为ONBOOT"yes"3、重启网络服务service network restart来自为知笔记…

Spring入门5.事务管理机制

Spring入门5.事务管理机制 20131126 代码下载 : 链接: http://pan.baidu.com/s/1kYc6c 密码: 233t 回顾之前的知识,Spring 最为核心的两个部分IoC和AOP,我们已经学习过了,其中IoC是Spring的基础核心,AOP是建立在IoC之上的&#xf…

linux之路由知识之ip route 命令中的疑惑

1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应…

python怎么执行程序_小鹅通视频怎么下载?用python实现小鹅通视频下载(二)

小鹅通视频怎么下载?用python实现小鹅通视频下载(二)背景上次分享《小鹅通视频怎么下载?用python实现小鹅通视频下载(一)[1]》后,引来了很多人咨询小鹅通视频怎么下载的问题。其实咨询的人大多是不懂python[2]语言的人,也有一部分…

在 Azure Functions 上使用不同的路由前缀

点击上方蓝字关注“汪宇杰博客”原文:Azure Tips and Tricks翻译:汪宇杰导语有时需要使用与 Azure Functions 自动生成的路由前缀不同的路由前缀。例如:https://mynewapimc.azurewebsites.net/api/HttpTriggerCSharp1 在函数名之前使用 api。…