官方文档链接:http://singularity.lbl.gov/user-guide一、基本介绍Singularity使用户能够完全控制其操作系统环境。这意味着用户可以将主机上的操作系统“交换”给
官方文档链接:http://singularity.lbl.gov/user-guide
一、基本介绍
Singularity使用户能够完全控制其操作系统环境。这意味着用户可以将主机上的操作系统“交换”给其他人。因此,如果主机系统运行RHEL6,但是您的应用程序在Ubuntu中运行,则可以创建一个Ubuntu映像,将应用程序安装到该映像中,将映像复制到另一个主机,并在该主机的本机Ubuntu环境中运行应用程序,总的来说Singularity类似于Docker。Singularity允许利用所在宿主机的资源。这包括HPC互连,资源管理器,文件系统,GPU和/或加速器等。Singularity和Docker优缺点对比
二、安装
Ubuntu:sudo apt-get update && sudo apt-get install python dh-autoreconf build-essentialCentos:sudo yum update && sudo yum groupinstall 'Development Tools'# clone可以选择release版本进行安装$ git clone https://github.com/singularityware/singularity.git$ cd singularity$ ./autogen.sh$ ./configure --prefix=/usr/local --sysconfdir=/etc$ make$ sudo make install
三、创建镜像
$ singularity create container.imgInitializing Singularity image subsystemOpening image file: container.imgCreating 768MiB imageBinding image to loopCreating file system within imageImage is done: container.img
默认创建镜像大小是768M,也可以指定大小进行创建
$ singularity create --size 2048 container2.imgInitializing Singularity image subsystemOpening image file: container2.imgCreating 2048MiB imageBinding image to loopCreating file system within imageImage is done: container2.img
四、定制化镜像
创建TensorFlow gpu 版本定制镜像
- create a bootstrap new file
vim Singularity
BootStrap: dockerFrom: nvidia/cuda:8.0-cudnn5-devel-centos7%post # install other needed packagesyum clean allyum -y updateyum -y install epel-releaseyum -y install python-pip# install tensorflowpip install --upgrade pippip install tensorflow-gpu
2.create a empty image
$singularity create --size 10240 centos.imgInitializing Singularity image subsystemOpening image file: centos.imgCreating 10240MiB imageBinding image to loopCreating file system within imageImage is done: centos.img
3.customize image
$ sudo singularity bootstrap centos.img Singularity Sanitizing environmentBuilding from bootstrap definition recipeAdding base Singularity environment to containerDocker image path: index.docker.io/library/ubuntu:latestCache folder set to /root/.singularity/docker[5/5] |===================================| 100.0% Exploding layer: sha256:b6f892c0043b37bd1834a4a1b7d68fe6421c6acbc7e7e63a4527e1d379f92c1b.tar.gzExploding layer: sha256:55010f332b047687e081a9639fac04918552c144bc2da4edb3422ce8efcc1fb1.tar.gzExploding layer: sha256:2955fb827c947b782af190a759805d229cfebc75978dba2d01b4a59e6a333845.tar.gzExploding layer: sha256:3deef3fcbd3072b45771bd0d192d4e5ff2b7310b99ea92bce062e01097953505.tar.gzExploding layer: sha256:cf9722e506aada1109f5c00a9ba542a81c9e109606c01c81f5991b1f93de7b66.tar.gzExploding layer: sha256:fe44851d529f465f9aa107b32351c8a0a722fc0619a2a7c22b058084fac068a4.tar.gzFinalizing Singularity container
五、进入容器里面
$singularity shell -n centos.img WARNING: Library bind directory not present in container, update containerSingularity: Invoking an interactive shell within container...Singularity.centos.img> df -hFilesystem Size Used Avail Use% Mounted onsingularity 1.0M 0 1.0M 0% /
六、共享文件
/test 是宿主机目录,/yangyang是容器内部目录,容器内部目录不需要提前创建
$singularity shell -B /test:/yangyang centos.img Singularity: Invoking an interactive shell within container...Singularity.centos.img> cd /yangyangSingularity.centos.img> lsSingularity.centos.img>