制作PBS Pro Docker容器镜像

来源:互联网 发布:windows 8.1专业版激活 编辑:程序博客网 时间:2024/05/16 11:12

制作PBS Pro Docker容器镜像

首先准备一个Dockerfile,内容如下,实际上使用的是CentOS7.2的镜像

FROM docker.io/centosMAINTAINER Fanbin Kong "kongxx@hotmail.com"RUN yum install -y sudo tar wget openssh-server openssh-clients openssl openssl-devel RUN yum install -y gcc make rpm-build libtool hwloc-devel \      libX11-devel libXt-devel libedit-devel libical-devel \      ncurses-devel perl postgresql-devel python-devel tcl-devel \      tk-devel swig expat-devel libXext libXft autoconf automakeRUN yum install -y expat libedit postgresql-server python sendmail tcl tk libicalRUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_configRUN echo 'root:Letmein' | chpasswdRUN useradd adminRUN echo "admin:admin" | chpasswdRUN echo "admin   ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoersRUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_keyRUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_keyRUN mkdir /var/run/sshdADD setup.sh /root/setup.shRUN chmod +x /root/setup.shEXPOSE 22CMD ["/usr/sbin/sshd", "-D"]

安装脚本

在Docker同级目录下创建一个setup.sh文件,由于PBS Pro需要编译并产生和机器名相关的文件,因此这里并没有把PBS Pro制作到Docker镜像里(其实通过修改部分文件是可以做到镜像里的),而是通过一个安装脚本来在容器里安装。

#!/bin/shPBS_MASTER=pbsmasterinstall() {    wget -c https://github.com/PBSPro/pbspro/archive/v14.1.0.tar.gz    tar zxvf v14.1.0.tar.gz    cd pbspro-14.1.0 && ./autogen.sh && ./configure --prefix=/opt/pbs && make && make install    /opt/pbs/libexec/pbs_postinstall    chmod 4755 /opt/pbs/sbin/pbs_iff /opt/pbs/sbin/pbs_rcp}master() {    install    sed -i "1cPBS_SERVER=${PBS_MASTER}" /etc/pbs.conf     sed -i 's/PBS_START_MOM=0/PBS_START_MOM=1/g' /etc/pbs.conf}slave() {    install    sed -i "1cPBS_SERVER=${PBS_MASTER}" /etc/pbs.conf    sed -i 's/PBS_START_SERVER=1/PBS_START_SERVER=0/g' /etc/pbs.conf    sed -i 's/PBS_START_SCHED=1/PBS_START_SCHED=0/g' /etc/pbs.conf    sed -i 's/PBS_START_COMM=1/PBS_START_COMM=0/g' /etc/pbs.conf    sed -i 's/PBS_START_MOM=0/PBS_START_MOM=1/g' /etc/pbs.conf}$*

生成Docker镜像

sudo docker build -t pbs:v1 .

运行Docker容器

master

$ sudo docker run --privileged --name pbsmaster -h pbsmaster -d -P pbs:v1

以root用户登录容器并执行安装

# ./setup master

slave

$ sudo docker run --privileged --name pbsslave -h pbsslave -d -P pbs:v1

以root用户登录容器并执行安装

# ./setup slave

修改master和slave节点的/etc/hosts文件,使两个机器可以互相访问

启动pbs

  • 分别在master和slave节点上运行
# /etc/init.d/pbs start
  • 在master节点将slave节点假如集群
# . /etc/profile.d/pbs.sh# 将slave节点加入集群# qmgr -c 'create node pbsslave '

测试

  • 以admin用户登录master节点
$ . /etc/profile.d/pbs.sh# 查看节点状态$ pbsnodes -a# 提交作业$ echo 'sleep 123' | qsub# 查看作业$ qstat -a

转载请以链接形式标明本文链接
本文链接:http://blog.csdn.net/kongxx/article/details/52704468

1 0