1.容器简介

简而言之,容器是系统环境的封装。通常,容器技术被设计为解决企业的单一主要实例:微服务虚拟化。

Docker是最广为人知和使用最多的容器平台主要为网络微服务虚拟化而设计, 方便创建、维护和分发容器图像;容器是可以再生的;易于安装、记录完善、标准化。由于这些优势,Docker得到了广泛的使用 。它对当地和私人资源非常有用。你可以使用Docker-hub 来开发和分享你的作品。如果您需要扩展到本地资源之外,这可能是一条死路!Docker 和其他以企业为中心的容器不是为传统 HPC 设计的,也不高效,甚至不兼容传统 HPC。没有 HPC 中心允许!

2.为什么要使用容器

Unix 操作系统分为两个主要组件,内核空间和用户空间。内核与硬件对话,并提供核心系统功能。用户空间是大多数人最熟悉的环境。它是应用程序、库和系统服务运行的地方。

传统上,您使用的操作系统具有内核和用户空间的固定组合。如果您可以访问运行 CentOS 的机器,那么您无法在其上安装为 Ubuntu 打包的软件,因为这些发行版的用户空间不兼容。安装同一软件的多个版本也可能非常困难,这可能需要随着时间的推移支持不同工作流程中的可重复性。

容器将用户空间变成一个可交换的组件。这意味着 Linux 操作系统的整个用户空间部分,包括程序、自定义配置和环境,可以独立于您的系统是否在其下运行 CentOS、Fedora 等。Singularity 容器将您需要的任何内容打包到一个可验证的文件中。

软件开发人员现在可以将他们的堆栈构建到最适合他们需求的任何操作系统基础上,并创建可分发的运行时环境,这样用户就不必担心他们可能无法在他们的系统上满足的依赖关系和需求。

3.Singularity简介

Singularity 是一个 容器 平台。它允许您创建和运行以可移植和可重复的方式打包软件的容器。您可以在笔记本电脑上使用 Singularity 构建容器,然后在世界上许多最大的 HPC 集群、本地大学或公司集群、单个服务器、云中或大厅下的工作站上运行它。您的容器是单个文件,您不必担心如何在每个不同的操作系统上安装所需的所有软件。

4.为什么要使用Singularity

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

Singularity 专注于:

  • 可验证的再现性和安全性,使用加密签名、不可变的容器图像格式和内存解密。
  • 默认情况下集成而不是隔离。默认情况下,轻松利用集群或服务器上的 GPU、高速网络、并行文件系统。
  • 计算的移动性。单一文件 SIF 容器格式易于传输和共享。
  • 一个简单、有效的安全模型。您在容器内部和外部是同一用户,默认情况下无法在主机系统上获得额外权限

5.Singularity容器的工作流

6.虚拟机、容器、Singularity架构比较

6.1虚拟机架构

在虚拟机中运行的应用程序必须遍历冗余的代码路径和仿真的性能成本。技术已经弥补了许多性能差距,但是在虚拟机上评估应用程序性能时,存在相当大的开销和冗余。容器确实是一种更有效的虚拟化机制,但在隔离方面可能没有同样的信心。

6.2容器架构

容器技术利用主机的内核,因此能够运行与本机应用程序具有相同性能特征的被包含的应用程序。理论上有一个小的性能损失,有时被认为是更高效的虚拟机技术.

6.3 Singularity架构

Singularity 不是围绕微服务进程隔离的思想设计的。因此,它使用最少数量的名称
空间来实现其主要设计目标。这使得Singularity 比完全隔离的容器平台占用空
间更小,性能潜力更大,集成更容易。

7.Singularity Hub

Singularity引导定义被提交并推送到 GitHub库(名为“奇点”) GitHub通过一个 web hook与 Singularity Hub通信,它排队等待通过持续集成来构建。一旦建成,最终产品将存储在谷歌云中,可供访问。该容器将被存档,并且可以/应该在您的科学出版物中引用,以便其他人可以复制和利用您的工作。

8.参考资料:

1.Introduction to Singularity — Singularity container 3.6 documentation

2.《SingularityContainers for Science》

https://git.its.aau.dk/CLAAUDIA/docs_aicloud/raw/commit/79165e32ad24cd933dc38bf58c4b60cf6f74f3a0/aicloud_slurm/refs/GMKurtzer_Singularity_Keynote_Tuesday_02072017.pdf

什么是 singularity 容器 Singularity 是劳伦斯伯克利国家实验室专门为大规模、跨节点HPC和DL工作负载而开发的 容器 化技术。具备轻量级、快速部署、方便迁移等诸多优势,且支持从Docker镜像格式转换为 Singularity 镜像格式。除了兼容docker的镜像之外, singularity 还有一个不太明显的优势:可以通过非root帐号来拉起 容器 ,这样对于某些安全性要求比较高的场景来说... 因研究需要,复现某论文,使用的是某校的服务器集群。他们服务器使用的 容器 Singularity ,而之前自己在院里用的时docker。docker学了没多久,就开始 Singularity 。恰恰是会一点docker,所以在转用 singularity 的过程中,踩的坑比较多(造孽啊)。记录一下,前事不忘,后世之师......... 今天使用 容器 化软件 singularity 用沙盒方式创建一个了一个ArchLinux的沙盒。 为什么创建ArchLinux的沙盒呢?是因为使用AUR可以直接安装Geant4,非常方便 但是天下没有免费的午餐,也没有免费的晚餐,还没有免费的宵夜。首先安装ArchLinux就非常费劲,其次及时用 容器 化直接build这个ArchLinux,也非常难搞。 在安装yay(AUR管理程序)的时候,发现... RStudio是R语言开发中的利器,是最好用的R语言IDE集成环境。RStudio Server更是利器中的神器。不仅提供了Web的功能,可以安装到远程服务器上,通过Web进行访问,还支持多用户的协作开发。     RStudio 是一个强大的、免费的、开源的R 语言集成开发环境的应用软件,可以安装在Windows、Linux 和Mac 不同操作系统上。RStudio Server 是一个基于W 什么是 容器 容器 (container)可以简单的理解成自己配置的系统环境,有你所需的package和dependencies。它可以允许你在笔记本、云服务器和HPC环境中运行你的程序。为什么需要 容器 假设以下场景:场景1:花了几个小时在主机或者笔记本上装上了某软件/package(比如 tensorflow),分析的结果好像不错,你准备把分析放到服务器上以运行更多的数据,发现服务器的环境总是... 下载已存在镜像 和Docker类似,要运行 Singularity 也需要先获取镜像, Singularity 可以从 Singularity Hub 或者 Docker Hub 来获取已存在的镜像。 Singularity Hub singularity -d build lolcow.simg shub://GodloveD/lolcow Docker Hub singularity -d bu... 如果您需要帮助,请 什么是Linux 容器 容器 映像是一种封装的,可门户访问的环境,其创建用于分发科学分析或常规功能。 容器 可以很好地打包软件和数据依赖项以及所需的库,从而有助于再现此类内容。 容器 工具的目标是什么? 这些是用于科学 容器 的开源工具。 设计这些工具的主要目的是为科学界服务。 由于是一种 容器 技术,适合科学界中常见的共享计算资源,因此我们的大多数工具都使用它。 要查看当前维护的 容器 工具,请参阅。 要查看 Singularity Hub的当前文档,请参阅 容器 工具和奇点中心是由斯坦福大学 容器 化技术在各种生产领域已经得到了广泛的应用,这得益于 容器 的轻量化(相比于虚拟机而言),安全性(隔离弱于虚拟机,但是权限控制得当的情况下也可以认为是安全隔离的)以及系统级虚拟化带来的高可用性(基于NameSpace和cgroup)。虽然现在各大平台的兼容性有趋同的势头,比如Windows推出了WSL子系统,使得用户在Windows机器上也可以很轻松的搭建Linux环境。但是 容器 依然保持... 技术背景购物返利 m.cpa5.cn 在前面的博客中,我们大篇幅的使用到了Docker和 Singularity 这两种常见的 容器 化编程环境解决方案,使得我们的各个编程环境能够更好的隔离。如果要展开讲解 容器 化编程环境的重要性的话,我们有可能会发现 容器 并不是那么的必须:比如解决python库的依赖冲突问题,我们可以选择使用python的virtualenv或者conda的虚拟环境;比如解决gcc的版本依赖冲突,我们可以手动配置和选择对应的版本;比如对于我们没有root权限和对外网络的环境,想要安装一些工具可以采. 作为软件从业者,这种场景你一定经历过:当你开发的一个程序,它在你的机器上运行一切正常,当把它部署到客户的机器上时,却发现怎么也运行不起来。最后,经过一系列的相关依赖程序的版本升级,好不容易把环境调整一致后,终于运行了起来。Docker是为了解决运行环境和配置的差异问题,将软件的运行环境和配置打包成镜像,从而实现在各种环境中简单方便部署的一种技术方案;由于运行环境的差异,导致程序在开发环境中运行正常,当部署到生产环境却无法运行。想要解决运行环境差异问题,要在生产环境部署一致的软件运行环境和配置。 singularity 与docker功能相似,但是相比与docker需要root权限,或者专门添加用户组, singularity 在非root时也可使用,且轻量级,修改方便。 Singularity 是一个相对较新的 容器 软件,仍处于开发状态,兼容Docker 容器 这一特性让它的用户群体增长迅速。 Singularity 假设用户在一个有root权限的系统上构建 容器 ,在一...