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和主机名称. 主体服务器上创建数据库,并进行完整备份数据库和数据库事务. 拷贝备份文件给镜 ...
随机推荐
- ansible模块解析及使用
模块一:setup(收集远程主机信息) [root@zabbix30 /]# ansible test -m setup 模块二:ping(测试主机是否在线) [root@zabbix30 /]# a ...
- [已解决] 含gorm、sqlite3包的go程序构建失败 C:\Program Files\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1
gorm官方文档教程实例,构建出现错误.C:\Program Files\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit st ...
- [已解决] error: cannot convert `int*' to `int**' for argument `2' to `void print_f(int, int**)'
#include "stdio.h" #include "stdlib.h" #include "time.h" void print_f( ...
- Metalama简介4.使用Fabric操作项目或命名空间
使用基于Roslyn的编译时AOP框架来解决.NET项目的代码复用问题 Metalama简介1. 不止是一个.NET跨平台的编译时AOP框架 Metalama简介2.利用Aspect在编译时进行消除重 ...
- 技术管理进阶——一线Leader与大Leader的差异是什么?
原创不易,求分享.求一键三连 前几年,因为下属的一些骚操作,Leader对我产生了误会,这导致了一些"不信任",这种不信任在短时间会让人丧失安全感,很多人会因此患得患失. 这种 ...
- XCTF练习题---CRYPTO---不仅仅是Morse
XCTF练习题---CRYPTO---不仅仅是Morse flag:cyberpeace{attackanddefenceworldisinteresting} 解题步骤: 1.观察题目,下载附件 2 ...
- 在centos 7 中 conda 环境和Python2.7 中安装远程jupyter
折腾了半天,为了能够方便学习TensorFlow,搞了远程的jupyter,方便在本地使用它,今天填了不少坑. 装完后截图: 下面是一些步骤: 检查 Python 环境 CentOS 7.2 中默认集 ...
- Linux常用命令格式
Linux命令格式 命令 选项 参数COMMAND [OPTIONS...] [ARGUMENTS...]COMMAND COMMAND COMMAND .... 选项:用于启用或关闭命令的某个或某些 ...
- 243张图片为你解析轻量级自动运维化工具Ansible
Ansible 是什么 ? ansible架构图 ansible特性 模块化:调用特定的模块,完成特定的任务: 基于Python语言研发,由Paramiko, PyYAML和Jinja2三个核心库实 ...
- 2021 CSP-J复赛 我的备战与游记
目录 备战 2021.10.18 2021.10.19 2021.10.20 2021.10.21 2021.10.22 比赛当日 早上 线下见面 正文 比赛后 赛后总结与讲解 简单总结 Candy ...