容器架构概述
文章目录
- 1. 介绍容器历史
- 2. 描述 Linux 容器架构
- 3. Podman 管理容器
1. 介绍容器历史
近年来,容器迅速流行起来。然而,容器背后的技术已经存在了相对较长的时间。2001年,Linux引入了一个名为VServer的项目。VServer 是第一次尝试在高度隔离的单个服务器内运行完整的进程集。
从 VServer 开始,隔离进程的想法进一步发展,并围绕 Linux 内核的以下功能正式化:
-
Namespaces
命名空间隔离通常对所有进程可见的特定系统资源。在命名空间内,只有属于该命名空间成员的进程才能看到这些资源。命名空间可以包括网络接口、进程 ID 列表、挂载点、IPC 资源和系统的主机名信息等资源。 -
Control groups (cgroups)
控制组将进程集及其子进程划分为组,以管理和限制它们消耗的资源。控制组对进程可能使用的系统资源量进行限制。这些限制使一个进程不会在主机上使用太多资源。 -
Seccomp
Seccomp 于 2005 年开发并于 2014 年左右引入容器,它限制了进程使用系统调用的方式。Seccomp 为进程定义了一个安全配置文件,其中列出了允许它们使用的系统调用、参数和文件描述符。 -
SELinux
Security-Enhanced Linux (SELinux) 是进程的强制访问控制系统。Linux 内核使用 SELinux 来保护进程免受彼此的影响,并保护主机系统免受其正在运行的进程的影响。进程作为受限的 SELinux 类型运行,对主机系统资源的访问权限有限。
所有这些创新和功能都集中在一个基本概念上:使进程能够隔离运行,同时仍然访问系统资源。这个概念是容器技术的基础,也是所有容器实现的基础。如今,容器是 Linux 内核中的进程,利用这些安全功能来创建一个隔离的环境。该环境禁止隔离进程滥用系统或其他容器资源。
容器的一个常见用例是在同一主机中拥有同一服务(例如,数据库服务器)的多个副本。每个副本都有独立的资源(文件系统、端口、内存),因此服务不需要处理资源共享。隔离保证故障或有害服务不会影响同一主机或底层系统中的其他服务或容器。
2. 描述 Linux 容器架构
从 Linux 内核的角度来看,容器是一个有限制的进程。但是,容器运行的不是单个二进制文件,而是一个镜像。映像是一个文件系统包,其中包含执行进程所需的所有依赖项:文件系统中的文件、已安装的包、可用资源、正在运行的进程和内核模块。
就像可执行文件是运行进程的基础一样,镜像是运行容器的基础。运行的容器使用镜像的不可变视图,允许多个容器同时重用同一个镜像。由于镜像是文件,它们可以通过版本控制系统进行管理,从而提高容器和镜像供应的自动化程度。
容器镜像需要在本地可用,以便容器运行时执行它们,但镜像通常存储和维护在镜像存储库中。镜像存储库只是一种服务(公共或私有),可以在其中存储、搜索和检索镜像。镜像存储库提供的其他功能包括远程访问、镜像元数据、授权或镜像版本控制。
有许多不同的镜像存储库可用,每一个都提供不同的功能:
- Red Hat Container Catalog
- Red Hat Quay
- Docker Hub
- Google Container Registry
- Amazon Elastic Container Registry
3. Podman 管理容器
容器、镜像和镜像注册表需要能够相互交互。例如,您需要能够构建镜像并将它们放入镜像注册表中。您还需要能够从镜像注册表中检索镜像并从该镜像构建容器。
Podman 是一个开源工具,用于管理容器、容器镜像以及与镜像注册表交互。它提供以下主要功能:
它使用开放容器倡议(OCI)指定的镜像格式。这些规范定义了一种标准的、社区驱动的、非专有的镜像格式。
Podman 将本地镜像存储在本地文件系统中。这样做可以避免不必要的客户端/服务器架构或在本地机器上运行守护进程。
Podman 遵循与 Docker CLI 相同的命令模式,因此无需学习新的工具集。
Podman 与 Kubernetes 兼容。Kubernetes 可以使用 Podman 来管理其容器。
REFERENCES
- Red Hat Quay Container Registry
- Podman site
- Open Container Initiative
相关文章:
容器架构概述
文章目录1. 介绍容器历史2. 描述 Linux 容器架构3. Podman 管理容器1. 介绍容器历史 近年来,容器迅速流行起来。然而,容器背后的技术已经存在了相对较长的时间。2001年,Linux引入了一个名为VServer的项目。VServer 是第一次尝试在高度隔离的…...
掌握MySQL分库分表(四)分库分表中间件Sharding-Jdbc,真实表、逻辑表、绑定表、广播表,常见分片策略
文章目录什么是ShardingSphere-JDBC?Sharding-Jdbc常见概念术语数据节点Node真实表逻辑表绑定表广播表数据库表分片(水平库、表)分片键 (PartitionKey)行表达式分片策略 InlineShardingStrategy(必备)标准分片策略Stan…...
2022-06-16_555时基的迷人历史和先天缺陷!
https://www.eet-china.com/news/magazine220608.html 555时基的迷人历史和先天缺陷! 发布于2022-06-16 03:39:12 LARRY STABILE 流行数十年的555时基,业内不知晓的工程师应该寥寥无几!几乎所有的数字电路教材中,都有该芯片的身影…...
SpringBoot 基础知识汇总
一、环境准备Java:Spring Boot 3.0.2 需要 Java 17,并且与 Java 19 兼容Maven:Apache Maven 3.5 或更高版本兼容二、启动器以下应用程序启动器由 Spring Boot 在该组下提供:org.springframework.boot表 1.Spring 引导应用程序启动…...
centos7下用kvm启动Fedora36 Cloud镜像
环境 os:centos7 Arch: aarch64 安装qemu-kvm yum install qemu-kvm kvm virt-install libvirt systemctl start libvirtd.service创建镜像 下载aarch64架构的Fedora36镜像 wget https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/36/Cloud/aarch64/images/Fedora-Cl…...
修复 K8s SSL/TLS 漏洞(CVE-2016-2183)指南
作者:老 Z,中电信数智科技有限公司山东分公司运维架构师,云原生爱好者,目前专注于云原生运维,云原生领域技术栈涉及 Kubernetes、KubeSphere、DevOps、OpenStack、Ansible 等。 前言 测试服务器配置 主机名IPCPU内存系…...
uniapp 引入彩色symbol和 指令权限
uniapp 引入iconfont图标库彩色symbol 1,先去阿里巴巴矢量图标库登录 然后点击下载至本地 2.下载本地,然后解压文件夹 3.打开终端cmd命令窗口 npm安装全局包npm i -g iconfont-tools 4.终端切换到上面解压的文件夹里面,运行iconfont-too…...
【C语言】初识结构体
Yan-英杰 悟已往之不谏 知来者之可追 目录 一、结构体的声明 二、结构体变量的定义和初始化 三、结构体成员的访问 四、结构体传参 一、结构体的声明 1.结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。2.结构的…...
前端将base64图片转换成file文件
1、base64转成file具体代码 // base64图片转file的方法(base64图片, 设置生成file的文件名)function base64ToFile(base64, fileName) {// 将base64按照 , 进行分割 将前缀 与后续内容分隔开let data base64.split(,);// 利用正则表达式 从前缀中获取图…...
OAK相机跑各种yolo模型的检测帧率和深度帧率
编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…...
存储拆分后,如何解决唯一主键问题?
在单库单表时,业务 ID 可以依赖数据库的自增主键实现,现在我们把存储拆分到了多处,如果还是用数据库的自增主键,就会出现主键重复的情况。 所以我们不得不面对的一个选择,就是ID生成器,使用一个唯一的字符…...
仿射变换学习
affine_trans_(iamge,region,xld):仿射变换-作用到iamge,region、xld等都可以 vector_angle_to_rigid():得到一个刚性仿射变换矩阵 orientation_region():得到指定区域的弧度(与x轴正方向的弧度)…...
基于java的爬虫框架webmagic基本使用
简单记录一下java项目实现网页爬取数据的基本使用. 需要引入的依赖 <dependency><groupId>us.codecraft</groupId><artifactId>webmagic-core</artifactId><version>0.7.3</version></dependency><dependency><grou…...
Python每日一练(20230221)
目录 1. 不同路径 II 2. 字符串转换整数 (atoi) 3. 字符串相乘 1. 不同路径 II 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中…...
【Linux】vim拒绝服务安全漏洞修复
根据国家信息安全漏洞共享平台于2023年2月19日发布的安全漏洞通知,Linux系统自带的vim编辑器存在两个高危安全漏洞(CNVD-2023-09166、CNVD-2023-09647),攻击者可以利用该漏洞发起拒绝服务攻击,并可能运行(恶…...
moveit 2源码编译
文章目录前言下载编译过程创建开发环境拉取源代码更新rosdep下载安装moveit 2依赖包编译源码输出结果总结前言 本文用来记录moveit 2从源码编译的全流程。 本机环境: 系统:debian 11 ros版本:ros2 humble 处理器:intel i7 内存&a…...
2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A模块(4)
目录 二、竞赛注意事项 (本模块20分) 一、项目和任务描述: 二、服务器环境说明 三、具体任务(每个任务得分以电子答题卡为准) A-1任务一 登录安全加固(Windows) 1.密码策略 a.更改或创建…...
微服务保护之sentinel熔断器
文章目录 目录 文章目录 前言 一、解决微服务雪崩的问题 二、使用步骤 三、熔断器的使用 3.1 限流规则 3.1.1流控模式 3.1.2流控效果 3.2 隔离和降级 3.2.1 隔离 3.2.2 降级 四、sentinel规则持久化 总结 前言 在基于 SpringCloud 构建的微服务体系中,服务间的调用…...
电动打气泵方案开发--鼎盛合PCBA方案
开车的每一个司机都必须要知道一个事情——定期检查轮胎气压是否正常,因为轮胎胎压不足会导致轮胎过早磨损,从而造成容易发生道路交通事故,并且对汽车的操控性和牵引力带来不良影响,甚至会出现爆胎或汽车失控等极其危险的事故。电…...
第十三届蓝桥杯省赛 C++ A 组 F 题、Java A 组 G题、C组 H 题、Python C 组 I 题——青蛙过河(AC)
目录1.青蛙过河1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围7.原题链接2.解题思路Ac_code1.C2.Java1.青蛙过河 1.题目描述 小青蛙住在一条河边, 它想到河对岸的学校去学习。小青蛙打算经过河里 的石头跳到对岸。 河里的石头排成了一条直线, 小青蛙每次跳跃…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
