首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Shifter 容器运行程序

使用 Shifter 容器运行程序

使用 Shifter 容器运行程序在启动镜像管理器后,Shifter 的命令行可以让我们直接将程序运行在容器中。
1.启动镜像管理器服务
在命令行环境下,可以直接运行命令行启动镜像管理器后台进程和 Celery 工作者进程,如清单 4 所示。
清单 4.        启动镜像管理器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ python imagegwapi.py
2016-09-08 05:12:52,973 [shifter_imagegw.api] INFO : initializing with /usr/local/etc/imagemanager.json
INFO:shifter_imagegw.api:initializing with /usr/local/etc/imagemanager.json
<shifter_imagegw.imagemngr.imagemngr instance at 0x7f663871b638>
2016-09-08 05:12:53,266 [shifter_imagegw.api] INFO : initializing with /usr/local/etc/imagemanager.json
INFO:shifter_imagegw.api:initializing with /usr/local/etc/imagemanager.json
<shifter_imagegw.imagemngr.imagemngr instance at 0x7f261ce04638>

$ celery worker -A shifter_imagegw.imageworker -Q mycluster

-------------- celery@ host01 v3.1.6 (Cipater)
---- **** -----
--- * ***  * -- Linux-3.16.0-30-generic-x86_64-with-Ubuntu-14.04-trusty
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> broker:      redis://127.0.0.1:6379//
- ** ---------- .> app:         tasks:0x7f3532809250
- ** ---------- .> concurrency: 2 (prefork)
- *** --- * --- .> events:      OFF (enable -E to monitor this worker)
-- ******* ----
--- ***** ----- [queues]
-------------- .> mycluster        exchange=mycluster(direct) key=mycluster


[2016-09-08 04:36:34,004: WARNING/MainProcess] celery@host01 ready.




2.获取所需镜像,执行程序
通过 shifterimg 命令,从 dockerhub 服务器上下载镜像到本地镜像管理系统。Shifter 命令启动容器,运行程序,如清单 5 所示。
清单 5.        启动容器
1
2
3
4
5
6
7
8
9
10
11
12
$ shifterimg pull busybox
2016-09-23T01:50:54 Pulling Image: docker:busybox, status: READY
$ shifterimg lookup busybox
b05baf071fd542c3146f08e5f20ad63e76fa4b4bd91f274c4838ddc41f3409f8

$ shifter --image busybox sh
/ $ ls -l bin/busybox
-rwxr-xr-x  369 root     0          1010960 Jun 23 20:13 bin/busybox
/ $ exit
$
$ ls  -l bin/busybox
ls: cannot access bin/busybox: No such file or directory




Shifter 提供基本的卷 (volume) 管理功能,可以将主机目录映射到容器中。但是目前难以自动将网络存储映射进容器。我们可以利用 Shifter 提供的可定制回调脚本        sitePreMountHook 来处理。用户可以通过自定义脚本,将网络文件系统挂载到容器里面。
LSF 中使用 Shifter Shifter 是一个命令行工具,因此可以直接在作业提交中使用,作为作业命令行的一部分。
清单 6.        提交作业
1
2
$ bsub shifter --image=busybox ./job.sh
Job <1> is submitted to default queue <normal>.




LSF 提供了一种更透明的容器使用方式。系统管理员配置 Shifter 的应用描述文件 (application        profile)定制应用所使用的容器镜像名。用户直接提交作业到应用描述就可以将应用运行在容器里面。
清单 7. 查看 Application Profile          并提交作业
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ bapp -l container

APPLICATION NAME: container
-- Container application profile to running jobs in Shifter with ubuntu image

STATISTICS:
   NJOBS     PEND      RUN    SSUSP    USUSP      RSV
       0        0        0        0        0        0

PARAMETERS:

CONTAINER: shifter [image (ubuntu)]

$ bsub -app container ./job.sh
Job <1> is submitted to default queue <normal>.




这种对用户的透明性为管理员提供了灵活管理方式。管理员可以根据需要,为作业配置不同的容器实现。LSF 不仅仅支持 Shifter,同时提供了 Docker 和 Singularity        的支持,只需要配置相应的应用描述就可以了。
结论 Shifter 是一种适用于高性能计算环境的开源容器技术。它简单易用,通过重用 Docker 镜像,提供了便捷的软件部署能力和丰富的现存软件镜像集。Shifter        通过网络文件系统统一管理本地镜像,本地主机以只读方式映射使用镜像,减少对网络文件系统原数据访问的频率,充分发挥网络存储性能。容器本身通过轻量级的命名空间隔离,减少容器之间的影响,便于和集群管理系统软件的集成使用。不过,在容器的隔离性,存储管理和镜像管理工具上,还有不少的局限,需要进一步增强。
返回列表