制作PBS Pro Docker容器镜像
首先准备一个Dockerfile,内容如下,实际上使用的是CentOS7.2的镜像
FROM docker.io/centos
MAINTAINER 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 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.youkuaiyun.com/kongxx/article/details/52704468