5. Singularity容器技术

发布时间 2023-09-23 21:53:43作者: acmloser

1. 问题引入

image
  为了解决这些问题,容器技术出现了.容器技术与虚拟机有相似之处,具体的区别见下图.为了说明我直接复制了知乎的高赞回答:

服务器好比运输码头:拥有场地和各种设备(服务器硬件资源),服务器虚拟化好比作码头上的仓库:拥有独立的空间堆放各种货物或集装箱(仓库之间完全独立,独立的应用系统和操作系统);Docker比作集装箱:各种货物的打包(将各种应用程序和他们所依赖的运行环境打包成标准的容器,容器之间隔离).

Docker有着小巧、迁移部署快速、运行高效等特点,但隔离性比服务器虚拟化差:不同的集装箱属于不同的运单(Docker上运行不同的应用实例),相互独立(隔离)。但由同一个库管人员管理(主机操作系统内核),因此通过库管人员可以看到所有集装箱的相关信息(因为共享操作系统内核,因此相关信息会共享).

服务器虚拟化就好比在码头上(物理主机及虚拟化层),建立了多个独立的“小码头”—仓库(虚拟机)。其拥有完全独立(隔离)的空间,属于不同的客户(虚拟机所有者)。每个仓库有各自的库管人员(当前虚拟机的操作系统内核),无法管理其它仓库。不存在信息共享的情况
作者:正则云科技
链接:https://www.zhihu.com/question/48174633/answer/180743885
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

image
  Docker在刚开始只允许Linux系统安装,在后续也允许Non-Linux系统安装,这是因为Docker在系统上安装了一个小型的Linux系统,在Linux系统又是和单纯Linux系统安装Docker一样的东西.

2. 安装

  SingularityCE的使用不需要管理员权限,但安装需要管理员权限.实际把下面的代码运行一下,斜杠代表换行,只是为了美观.

# Ensure repositories are up-to-date
sudo apt-get update
# Install debian packages for dependencies
sudo apt-get install -y \
   wget \
   build-essential \
   libseccomp-dev \
   libglib2.0-dev \
   pkg-config \
   squashfs-tools \
   cryptsetup \
   runc

  运行上面的代码后,需要安装Go.

$ export VERSION=1.17.2 OS=linux ARCH=amd64 && \
#上面的export相当于Python的变量声明,将变量值带入wget里去.我们没必要一定要安装1.17.2的go.
# 也可以直接在官网复制新的版本下载代码
  wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz && \
#tar -C 指定解压路径
  sudo tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz && \
#删除下载的软件包
  rm go$VERSION.$OS-$ARCH.tar.gz

  然后将GO语言添加到环境变量

$ echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc && \
  source ~/.bashrc

  然后就是下载SingularityCE