Singularity入门之运行容器

Posted kongxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Singularity入门之运行容器相关的知识,希望对你有一定的参考价值。

下载已存在镜像

和Docker类似,要运行 Singularity 也需要先获取镜像,Singularity 可以从Singularity Hub 或者 Docker Hub 来获取预编译的镜像,或者编译新镜像。

# 查询镜像
$ singularity search ubuntu

# 获取预编译镜像 (会在当前目录下下载 ubuntu_<tag>.sif 文件)
$ singularity pull ubuntu
$ singularity pull docker://ubuntu

# 从 Singularity Hub build 镜像
$ singularity -d build lolcow.simg shub://GodloveD/lolcow

# 从 Docker Hub build 镜像
$ singularity -d build lolcow.simg docker://godlovedc/lolcow
$ singularity -d build centos.simg docker://centos
$ singularity -d build ubuntu.simg docker://ubuntu

交互模式运行

$ singularity shell ubuntu.simg
Singularity: Invoking an interactive shell within container...

Singularity ubuntu.simg:~> pwd
/home/admin
Singularity ubuntu.simg:~> id
uid=1000(admin) gid=1000(admin) groups=1000(admin),10(wheel)

执行一个命令并退出

$ singularity exec ubuntu.simg bash -c  "pwd && id"
/home/admin
uid=1000(admin) gid=1000(admin) groups=1000(admin),10(wheel)

运行一个容器

$ singularity run ubuntu.simg
admin@bdmaster:~$ pwd
/home/admin
admin@bdmaster:~$ id
uid=1000(admin) gid=1000(admin) groups=1000(admin),10(wheel)

后台运行容器实例

启动实例

$ singularity instance start ubuntu.simg test1
$ singularity instance start ubuntu.simg test2

查看实例

$ singularity instance list
DAEMON NAME      PID      CONTAINER IMAGE
test1            14172    /home/admin/ubuntu.simg
test2            14239    /home/admin/ubuntu.simg

操作实例

可以通过 shell, exec, run 命令来连到容器中运行命令

使用 shell 命令连入容器

$ 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

使用 exec 执行命令

$ 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

停止实例

$ singularity instance stop test1
$ singularity instance stop test1

绑定目录

在 Singularity 中也可以在 shell, run, instance.start 等命令中通过 “-B” 选项来实现 Docker 中 “-v” 选项提供挂载卷的功能,比如:

$ singularity shell -B /apps:/apps ubuntu.simg

以上是关于Singularity入门之运行容器的主要内容,如果未能解决你的问题,请参考以下文章

Singularity入门之通过沙盒创建镜像

Singularity入门之持久化Overlay

Singularity入门之资源限制

Singularity入门之运行图形应用

Singularity入门之通过文件创建镜像

Singularity入门之通过镜像定义文件创建镜像