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和主机名称. 主体服务器上创建数据库,并进行完整备份数据库和数据库事务. 拷贝备份文件给镜 ...
随机推荐
- SSM整合_年轻人的第一个增删改查_新增
写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...
- IDEA小技巧:Markdown里的命令行可以直接运行了
作为一名开发者,相信大部分人都喜欢用Markdown来写文章和写文档. 如果你经常用开源项目或者自己维护开源项目,肯定对于项目下的README文件也相当熟悉了吧,通常我们会在这里介绍项目的功能.如何使 ...
- 杭电2091空心三角形Java(AC)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2091 把三角形写入二维数组里,然后输出出来 注意事项: 1.三角形后面没有空格(每一层的后面) 2.三角形 ...
- SpringBoot 如何进行参数校验
为什么需要参数校验 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数进行校验,例如登录的时候需要校验用户名和密码是否为空,添加用户的时候校验用户邮箱地址.手机号码格式是否正确. ...
- ServletContext类 (共享数据+获取初始化的参数+请求转发+读取资源文件)
ServletContext对象 web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的 web应用: 作用 1.共享数据 (一般用sessio ...
- [操作系统]LINUX进程状态说明
R(task_running) : 可执行状态 只有在该状态的进程才可能在CPU上运行.而同一时刻可能有多个进程 处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的 ...
- Git在项目中使用技巧
1.常用的命令 mkdir 文件夹名 创建文件夹 clear 清楚屏幕 ls或者ll 将当前目录下的子文件和子目录平铺在控制台 find 目录名 将对应目录下的子孙文件或子孙目录平铺在控制台 rm 文 ...
- 老生常谈系列之Aop--Spring Aop源码解析(一)
老生常谈系列之Aop--Spring Aop源码解析(一) 前言 上一篇文章老生常谈系列之Aop--Spring Aop原理浅析大概阐述了动态代理的相关知识,并且最后的图给了一个Spring Aop实 ...
- WPF 制作雷达扫描图
实现一个雷达扫描图. 源代码在TK_King/雷达 (gitee.com),自行下载就好了 制作思路 绘制圆形(或者称之轮) 绘制分割线 绘制扫描范围 添加扫描点 具体实现 首先我们使用自定义的控件. ...
- vue - Vue路由(扩展)
忙里偷闲,还在学校,趁机把后面的路由多出来的知识点学完 十.缓存路由组件 让不展示的路由组件保持挂载,不被销毁 在我们的前面案例有一个问题,都知道vue的路由当我们切换一个路由后,另一个路由就会被销毁 ...