distroless 镜像介绍及 基于cbl-mariner的.NET distroless 镜像的容器
1、概述
容器改变了我们看待技术基础设施的方式。这是我们运行应用程序方式的一次巨大飞跃。容器编排和云服务一起为我们提供了一种近乎无限规模的无缝扩展能力。
根据定义,容器应该包含 应用程序 及其 运行时依赖项。然而,在现实中,它们包含的远不止这些。标准容器基础镜像包含标准 Linux 发行版中可以找到的包管理器、shell 和其他程序。
虽然这些都是构建容器镜像所必需的,但它们不应该成为最终镜像的一部分。例如,一旦你把包安装好了,就不再需要在容器中使用 apt 等包管理工具了。
这不仅使你的容器里充满了不必要的软件包和程序,而且还为网络罪犯提供了攻击特定程序漏洞的机会。
你应该始终了解容器运行时中存在什么,并且应该精确地限制其只包含应用程序所需的依赖项。
除了那些必要的,你不应该安装任何东西。一些领先的科技巨头,如微软,有多年在生产中运行容器的经验,已经采用了这种方法。
微软现在通过提供 Distroless 镜像向客户开放这种能力。微软构建的这些镜像的目标是只包含你的应用程序及其依赖项,同时它们将没有常规 Linux 发行版的所有特性,包括 shell。
这意味着虽然可以像以前一样运行应用程序的容器,但不能在容器运行的时候进入容器内。这是一个重大的安全改进,因为你现在已经为黑客通过 shell 进入你的容器关上了大门。
2、Microsoft CBL-Mariner
Microsoft CBL-Mariner 是一个免费的开源 Linux 发行版,适用于 Microsoft 的云基础设施和边缘产品和服务。该发行版的主要目标是在 Microsoft Azure 云平台上提供 Azure Kubernetes 服务。
此外,CBL-Mainer 在 Azure IoT Edge 中用于在 Windows IoT 上执行 Linux 工作负载,并在后端分发中用于托管 WSLg 的 Weston 合成器。
微软最近刚发布了CBL-Mariner 2.0 , CBL-Mariner 2.0 仅包含基本组件,专为低内存和磁盘空间使用以及快速下载速度而定制。在底层,CBL-Mariner 使用最新的 Microsoft LSG 5.15 内核。最重要的是,该发行版添加了功能齐全的 eBPF 支持,从而提高了可观察性、对 Kubernetes 设置的调试以及其他功能。
3、CBL-Mariner Distroless 基础镜像
微软为大多数流行的编程语言和平台提供了 Distroless 的基础镜像。
以下基础镜像是正式发布的版本:
• mcr.microsoft.com/cbl-mariner/distroless/base:2.0
• mcr.microsoft.com/cbl-mariner/distroless/debug:2.0
• mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0
4、 .NET Distroless 镜像
官方运行时映像(例如mcr.microsoft.com/dotnet/runtime和mcr.microsoft.com/dotnet/aspnet)非常大(runtime:6.0-bullseye-slim为 188 MB)。这不仅增加了整个地方的带宽和存储使用量以及启动时间,而且还增加了攻击面。而且这些映像默认以 root 身份运行。
虽然 Alpine 已经非常小,但它还包含像 sh 这样的二进制文件,这些二进制文件没有被 dotnet 运行时引用或使用。该请求更多的是关于安全问题而不是图像大小。如果我们尽可能多地删除基础镜像中的二进制文件,潜在的安全漏洞就会更少。
微软目前只有针对CBL-Mariner Distroless .NET镜像支持,具体参考:https://github.com/dotnet/dotnet-docker/issues/3455。
distroless 镜像介绍及 基于cbl-mariner的.NET distroless 镜像的容器的更多相关文章
- SQL Server的镜像是基于物理块变化的复制 镜像Failover之后数据的预热问题
SQL Server的镜像是基于物理块变化的复制 镜像Failover之后数据的预热问题 基于物理块变化的复制,没有并行也是很快的. 逻辑复制的日志是按事务结束的时间排序的,而物理复制是与事务无关的, ...
- Docker image 镜像介绍
操作镜像 使用 docker 命令行操作 docker 镜像 获取镜像 使用「docker pull +镜像名称」从网络上下载image镜像 core@localhost ~ $ docker pul ...
- TOTP 介绍及基于C#的简单实现
TOTP 介绍及基于C#的简单实现 Intro TOTP 是基于时间的一次性密码生成算法,它由 RFC 6238 定义.和基于事件的一次性密码生成算法不同 HOTP,TOTP 是基于时间的,它和 HO ...
- Spark 介绍(基于内存计算的大数据并行计算框架)
Spark 介绍(基于内存计算的大数据并行计算框架) Hadoop与Spark 行业广泛使用Hadoop来分析他们的数据集.原因是Hadoop框架基于一个简单的编程模型(MapReduce),它支持 ...
- Spring AOP 介绍与基于接口的实现
热烈推荐:超多IT资源,尽在798资源网 声明:转载文章,为防止丢失所以做此备份. 本文来自公众号:程序之心 原文地址:https://mp.weixin.qq.com/s/vo94gVyTss0LY ...
- Docker 镜像介绍和命令
目录 是什么 UnionFS(联合文件系统) Docker镜像加载原理 分层的镜像 为什么 Docker 镜像要采用这种分层结构呢 特点 Docker镜像commit操作补充 案例演示 1.从Hub上 ...
- 基于Ubuntu 14.04构建tomcat7镜像
1.创建Dockerfile文件(如果在Windows下编辑文件,一定要将格式转化为Linux格式文件,否则将导致Linux下查看文件每行多一个^M) # Pull base image FROM u ...
- docker基于宿主机系统版本创建镜像
这里讲如何定制自己centos镜像,仅供测试docker使用. A) 安装软件 yum -y install febootstrap B)下载镜像febootstrap -i bash -i wget ...
- 基于证书的MS SQL2005数据库镜像搭建
一.准备工作: 3台服务器同版本,硬盘分区大小相同,安装相同版本数据库软件. host中分别标注3台服务器IP和主机名称. 主体服务器上创建数据库,并进行完整备份数据库和数据库事务. 拷贝备份文件给镜 ...
随机推荐
- Java基础之浅谈泛型
简单的介绍了Java泛型类型的使用.上手容易,深入很难.
- GIL全局解释器锁、协程运用、IO模型
GIL全局解释器锁 一.什么是GIL 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念.就好比C是一套语言(语法)标准,但是可以用不 ...
- Win下GCC报错 error: ‘for’ loop initial declarations are only allowed in C99 mode
##报错## 用GCC编译for循环会出现以下错误 error: 'for' loop initial declarations are only allowed in C99 mode 如图所示: ...
- 面试官:RabbitMQ怎么实现消费端限流
哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 RabbitMQ有很多高级特性, ...
- 清除安装的Rancher、K8s
#清除主机的所有容器.挂载.镜像(慎用) docker stop $(docker ps -aq) docker system prune -f docker volume rm $(docker v ...
- zookeeper篇-初识zookeeper
点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 什么是zookeeper? 中间件 作用于分布式系统 支持java.c语 ...
- STS快捷键
在类或者方法上方加注释:shift+alt+J
- Mysql 计算地址经纬度距离实时位置
前言 最近在做项目时候,遇到一个这样子的需求, 点到卡包里面卡券使用使用,需要展示卡券使用附近门店, 思路 数据库地址表设计 通用的区域街道地址表tz_sys_area 字段名称 类型 备注 area ...
- 记录一下l联想Y7000安装双系统(win10+ubuntu16.04)
单位新配的联想拯救者Y7000,感觉很不错哈,先上一张图. 说实在的,装这个有些小坑,我最开始是直接在原装win10上去装双系统的,结果死活装不上,还把原装win10给折腾没了,哈哈,好逗,以前装双系 ...
- spring boot 中接口参数为枚举时的反序列化配置(总结)
步骤 如果是 GET 请求中需要反序列化枚举值(即 url 中的参数[querystring]),确保以下两点 1.1. 重写 StringToEnumConverterFactory 1.2. 配置 ...