Shifter 提供基本的卷 (volume) 管理功能,可以将主机目录映射到容器中。但是目前难以自动将网络存储映射进容器。我们可以利用 Shifter 提供的可定制回调脚本 sitePreMountHook 来处理。用户可以通过自定义脚本,将网络文件系统挂载到容器里面。
LSF 中使用 ShifterShifter 是一个命令行工具,因此可以直接在作业提交中使用,作为作业命令行的一部分。
清单 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 通过网络文件系统统一管理本地镜像,本地主机以只读方式映射使用镜像,减少对网络文件系统原数据访问的频率,充分发挥网络存储性能。容器本身通过轻量级的命名空间隔离,减少容器之间的影响,便于和集群管理系统软件的集成使用。不过,在容器的隔离性,存储管理和镜像管理工具上,还有不少的局限,需要进一步增强。