制作PBS Pro Docker容器镜像

制作PBS Pro Docker容器镜像

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

FROM docker.io/centos

MAINTAINER Fanbin Kong "[email protected]"

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 automake
RUN yum install -y expat libedit postgresql-server python sendmail tcl tk libical

RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN echo 'root:Letmein' | chpasswd
RUN useradd admin
RUN echo "admin:admin" | chpasswd
RUN echo "admin   ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers

RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN mkdir /var/run/sshd

ADD setup.sh /root/setup.sh
RUN chmod +x /root/setup.sh

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

安装脚本

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

#!/bin/sh

PBS_MASTER=pbsmaster

install() {
    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

你可能感兴趣的:(PBS,Docker)