前言
Singularity
是一种容器技术,用户可以在本地将软件打包成镜像,上传到服务器上运行。因为用户在本地计算机上拥有root权限,在制作软件的容器镜像时也拥有root权限,在部署安装应用的时候更加灵活。
在使用实验室服务器时,因为不是root用户,也没有sudo权限,一些环境的部署很是蛋疼。无意中了解到,使用Singularity刚好可以成为Docker的替代方案,故而开个坑。
cat.gif
下载已存在镜像
和Docker类似,要运行 Singularity 也需要先获取镜像,Singularity
可以从Singularity Hub 或者 Docker Hub
来获取预编译的镜像,或者编译新镜像。
1 2 3 4 5 6 7 8 9 10 11
| $ singularity pull ubuntu $ singularity pull docker://ubuntu
$ singularity -d build lolcow.simg shub://GodloveD/lolcow
$ singularity -d build lolcow.simg docker://godlovedc/lolcow $ singularity -d build centos.simg docker://centos $ singularity -d build ubuntu.simg docker://ubuntu
|
交互模式运行
1 2 3 4 5 6 7 8 9 10
| $ singularity shell --nv ubuntu.simg Singularity: Invoking an interactive shell within container...
Singularity ubuntu.simg:~> pwd /home/kuhn Singularity ubuntu.simg:~> id uid=1000(admin) gid=1000(admin) groups=1000(admin),10(wheel)
$ singularity exec torch.sif python --version Python 3.8.12
|
运行&退出一个容器
1 2 3 4
| (base)kuhn@amax-59:~$ singularity run ubuntu.simg kuhn@amax-59:~$ exit exit (base)kuhn@amax-59:~$
|
后台运行容器实例
启动实例
1 2
| $ singularity instance start ubuntu.simg test1 $ singularity instance start ubuntu.simg test2
|
查看实例
1 2 3 4
| $ singularity instance list DAEMON NAME PID CONTAINER IMAGE test1 14172 /home/admin/ubuntu.simg test2 14239 /home/admin/ubuntu.simg
|
操作实例
可以通过 shell, exec, run
命令来连到容器中运行命令
1 2 3 4 5 6
| $ singularity shell instance://test1 Singularity ubuntu.simg:~> ps -ef UID PID PPID C STIME TTY TIME CMD admin 1 0 0 03:14 ? 00:00:00 singularity-instance: admin [test1] admin 3 0 3 03:14 pts/0 00:00:00 /bin/bash --norc admin 4 3 0 03:14 pts/0 00:00:00 ps -ef
|
1 2 3 4
| $ singularity exec instance://test1 ps -ef UID PID PPID C STIME TTY TIME CMD admin 1 0 0 03:14 ? 00:00:00 singularity-instance: admin[test1] admin 6 0 0 03:15 pts/0 00:00:00 ps -ef
|
停止实例
1 2
| $ singularity instance stop test1 $ singularity instance stop test2
|
Reference
SingularityCE
User Guide Documentation
Singularity
快速上手, 带你飞
运行
Singularity · GitBook (whu.edu.cn)