介绍另外一个容器技术, Apptainer

news2024/9/23 17:17:29

一说到容器,我们往往会脱口而出, Docker, 实际上Docker 仅仅是Linux 容器化的一种, 今天介绍的Apptainer 就是另外一种容器技术。

 

那么Apptainer 具体是一个什么东西呢? 跟Docker 有什么区别呢?

首先, 来回顾下什么是容器。

容器是一个隔离的环境,用于保存软件及其依赖项和配置。 容器可以在任何具有兼容容器技术的机器上运行。 容器实例可以从现有映像运行(部署)。 因此,用户必须首先构建(创建)镜像或获取现有镜像(例如从公共注册表中提取, 例如DockerHub)。 他们还可以彼此共享预构建的镜像,以便轻松地将软件分发到不同的系统,并且可以期望始终获得相同的结果。

Apptainer 和 Docker 是容器技术的不同实现。 Docker 是最流行的一种,但不幸的是不适合多用户环境。

Linux容器是一种使用单个 Linux 内核在控制主机上运行多个隔离的 Linux 系统(容器)的方法,

提供 cgroups 功能,允许对资源(CPU、内存、块 I/O、网络等)进行限制和优先级排序,而无需启动任何虚拟机。

Apptainer是一个容器平台。Apptainer(以前称为 )是一个免费的开源容器平台,允许您以简单、可移植、快速且安全的方式在独立映像(也称为“容器”)中创建和运行应用程序。 它执行操作系统级虚拟化,称为容器化。 Apptainer 适用于多用户环境,Apptainer 旨在为科学界和高性能计算 (HPC) 用例设计,可以运行 Singularity 以及 Docker 容器镜像。 使用 Apptainer,用户可以部署容器,并且在这些容器内部可以访问与在这些容器外部可以访问的相同资源。

Apptainer具有如下特点:

- 高度优化,可在笔记本电脑或高性能集群上运行,

- 非常快且轻量级 - 因为没有虚拟化,并且图像就像任何其他程序一样简单地执行,

- 实现运行容器的安全方式 - 可以轻松验证图像,

- 限制安全风险,因为它只能访问用户可访问的资源,

- 可以直接运行来自 Docker 存储库的映像(通过路径 docker://...)。

Apptainer 容器镜像是一个文件(例如 ubuntu_18.04.sif),包含执行该环境所需的所有程序和库,可以包含一小部分程序(带有库),或整个 Linux 操作系统(如 Alpine、CentOS 或 Ubuntu),在各种 Linux 操作系统和环境之间具有高度可移植性 - 它只需要安装 Apptainer,

容器文件系统环境在部署时默认是只读的(用户可以在运行时部分更改 ),

通常格式为.sif(奇点图像格式)、.sqfs(SquashFS)或.img(图像)ext3

也可以是一个目录而不是单个文件,包含所有需要的文件,可供容器外部的用户浏览。

为什么要使用Apptainer?

Apptainer 旨在以简单、可移植且可重复的方式在 HPC 集群上运行复杂的应用程序。 它首先由劳伦斯伯克利国家实验室开发,很快在其他 HPC 站点、学术站点等中流行起来。 Apptainer 是一个开源项目,拥有一个友好的开发人员和用户社区。 用户群不断扩大,Apptainer 现在在工业界和学术界的许多工作领域得到使用。

Apptainer 旨在允许容器像主机系统上的本机程序或脚本一样执行。 构建或运行容器不需要守护进程,并且安全模型与共享系统兼容。

因此,与 Univa Grid Engine、Torque、SLURM、SGE 等集群和调度程序的集成就像运行任何其他命令一样简单。 本地运行的程序使用的所有标准输入、输出、错误、管道、IPC 和其他通信路径都与容器内本地运行的应用程序同步。

Apptainer 倾向于对容器采用“集成而非隔离”的方法。 默认情况下,容器仅隔离挂载和用户命名空间,以便它们拥有自己的文件系统视图。 访问 GPU、高速网络和共享文件系统等硬件非常简单,不需要特殊配置。 对用户主目录、/tmp 空间和安装特定安装的默认访问使用户可以轻松地从容器化应用程序的可重复性中受益,而无需对其现有工作流程进行重大更改。 当更完整的隔离很重要时,Apptainer 可以使用额外的 Linux 命名空间以及其他安全和资源限制来实现这一点。

如果上面的介绍,还是有些干巴巴的话, 那么看一下Apptainer的常用命令,就会让你加深理解:

常用命令列表

- 从 Docker 存储库中提取容器镜像

$ apptainer pull docker://alpine:latest

- 在容器内启动交互式 shell

$ apptainer shell alpine_latest.sif

- 运行容器(这会执行其预定义的 runscript 命令)

$ apptainer run alpine_latest.sif

- 在容器内执行自定义命令

$ apptainer exec alpine_latest.sif cat /etc/os-release

-直接从 Docker 的存储库容器执行命令

$ apptainer exec docker://busybox:latest busybox | head -n1

- 直接从 Docker 镜像构建沙箱目录

$ apptainer build --sandbox alpine_sandbox docker://busybox:latest

-Shell 进入沙箱,假装是 root 用户并永久保存所有更改

$ apptainer shell --fakeroot --writable alpine_sandbox

-将沙箱转换为静态镜像

$ apptainer build alpine.sif alpine_sandbox

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

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

相关文章

剑指 Offer !!56 - II. 数组中数字出现的次数 II

剑指 Offer 56 - II. 数组中数字出现的次数 II 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums [3,4,3,3] 输出:4 示例 2:输入:nums …

智慧停车场:城市出行新潮流,轻松驶入未来

在如今城市日益拥堵的交通环境下,停车难题成为人们日常生活中的一大困扰。然而,随着科技的不断进步,智慧停车场的建设正为我们带来更为便捷、高效的出行体验,成为现代城市发展的重要一环。 智慧停车场利用先进的技术手段&#xff…

Nginx安装以及LVS-DR集群搭建

Nginx安装 1.环境准备 yum insatall -y make gcc gcc-c pcre-devel #pcre-devel -- pcre库 #安装openssl-devel yum install -y openssl-devel 2.tar安装包 3.解压软件包并创建软连接 tar -xf nginx-1.22.0.tar.gz -C /usr/local/ ln -s /usr/local/nginx-1.22.0/ /usr/local…

windows 安装免费3用户ccproxy ubuntu 代理上网

Windows 上进行安装 ubuntu 上进行设置 方法一 (临时的手段) 如果仅仅是暂时需要通过http代理使用apt-get,您可以使用这种方式。 在使用apt-get之前,在终端中输入以下命令(根据您的实际情况替换yourproxyaddress和proxyport)。 终…

水果音乐制作软件fl studio汉化中文修改版下载,FL Studio哪个版本更合适新手

水果音乐制作软件fl studio汉化中文修改版下载由兔八哥爱分享小编精心为大家整理了fl studio软件所有版本合集。水果音乐制作软件fl studio汉化中文修改版下载其中包含了fl studio、以及fl studio汉化补丁、fl studio修改程序、fl studio注册机等等,fl studio是一款…

【某SH公E司IN 数据挖掘工程师-提前批笔试2023-8-8】

题目(回忆版): 给一棵树,每个节点要么是白色要么是红色,并且有节点编号,要求查询每个节点所在子树中红色节点的数量。 先是一个正整数 n,表示树有 n 个节点。 第二行给出 n-1 个数字&#xff0…

标准的OSI七层模型(其实了解tcp足矣)

七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。 它是一个七层的、抽象的模型体&#x…

Mermaid语法使用

Mermaid语法使用 1. 基础类1.1 流程图1.2 时序图 2. 工程图2.1 类图2.2 Git图 1. 基础类 1.1 流程图 graph TBid1(圆角矩形)--普通线-->id2[矩形];subgraph 子图id2粗线>id3{菱形}id3-. 虚线.->id4>右向旗帜]id3--无箭头---id5((圆形))end方向定义 用词含义TB从…

Spring(13) IOC的工作流程

目录 一、定义二、Bean的声明方式三、IOC的工作流程 一、定义 IOC:全称是 Inversion Of Control,也就是控制反转,它的核心思想是把对象的管理权限交给容器。应用程序如果需要使用某个对象的实例,那么直接从 IOC 容器里面去获取就…

Win10无法投影关闭3D模式

Win10不小心开启了3D模式,插上投影仪就一闪一闪的,无法正投影 解决办法: 1. 打开注册表工具regedit,删除以下注册表,重启电脑 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configurat…

PAT(Advanced Level) Practice(with python)——1023 Have Fun with Numbers

Code N int(input()) D_N 2*N # print(Yes)if len(str(D_N))>len(str(N)):print(No) else:for s in str(D_N):if s not in str(N) or str(D_N).count(s)!str(N).count(s):print("No")breakelse:print(Yes) print(D_N)

R语言5_安装Giotto

环境Ubuntu22/20, R4.1. 已开启科学上网。 第一步,更新服务器环境,进入终端,键入如下命令, apt-get update apt install libcurl4-openssl-dev libssl-dev libxml2-dev libcairo2-dev libgtk-3-dev libhdf5-dev libmagick9-dev …

第一百二十五天学习记录:C++提高:STL-deque容器(下)(黑马教学视频)

deque插入和删除 功能描述: 向deque容器中插入和删除数据 函数原型: 两端插入操作: push_back(elem); //在容器尾部添加一个数据 push_front(elem); //在容器头部插入一个数据 pop_back(); //删除容器最后一个数据 pop_front(); //删除容器…

flutter开发实战-TextPainter计算文本内容的宽度

flutter开发实战-TextPainter计算文本内容的宽度 最近开发过程中根据Text文本的大小判断是否需要进行显示跑马灯效果,获取文本的大小,需要TextPainter来获取Size 一、TextPainter TextPainter主要用于实现文本的绘制。TextPainter类可以将TextSpan渲染…

【从零开始学习JAVA | 第四十四篇】TCP协议中的握手与挥手

前言: TCP(传输控制协议)作为计算机网络中的重要协议,扮演着确保数据可靠传输的角色。在TCP的通信过程中,握手与挥手问题是不可忽视的关键环节。握手是指在建立连接时,客户端与服务器相互确认彼此的身份并…

Json简述(C++)

目录 1.介绍 2.格式 3.底层 3.1数据对象表示 3.2序列化接口 3.3反序列化接口 4.使用 1.介绍 Json(JavaScript Object Notation)是一种轻量级的数据交换格式,其最早是为JavaScript编程语言设计的格式。不过发发展至今,Jso…

[RoarCTF 2019Online Proxy]sql巧妙盲注

文章目录 [RoarCTF 2019Online Proxy]sql巧妙盲注解题脚本脚本解析 [RoarCTF 2019Online Proxy]sql巧妙盲注 解题 在源代码界面发现:Current Ip 我们会联想到:X-Forwarded-For来修改ip: 结果我们发现,response会讲Last Ip回显出…

基于协同过滤的电影推荐

基于协同过滤的推荐算法综述 - 知乎 (zhihu.com) # -*- coding: gbk -*- import pandas as pd_userID 1#电影评分排序 ratings pd.read_csv(ml-latest-small/ratings.csv) #打印前20行 #print(ratings.head(10))#电影所属类别 movies pd.read_csv(ml-latest-small/movies.cs…

怎么做思维导图?试试这种绘制方法

怎么做思维导图?思维导图是一种非常实用的工具,可以帮助我们更好地整理思路、总结知识和规划方案。但是传统的手绘或电脑软件绘制思维导图的方法需要一定的时间和技能,对于想要快速制作思维导图的人来说可能不太方便。下面就给大家介绍一种在…