要用docker搭建集群,首先需要构造集群所需的docker镜像。构建镜像的一种方式是,利用一个已有的镜像比如简单的linux系统,运行一个容器,在容器中手动的安装集群所需要的软件并进行配置,然后commit容器到新的镜像。另一种方式是,使用Dockerfile来自动化的构造镜像。
下面采用第二种.
1. 创建带ssh服务的ubuntu14.04系统镜像
使用ubuntu14系统来安装hadoop和hbase,由于hadoop集群机器之间通过ssh通信,所以需要在ubuntu14系统中安装ssh服务。
编写Dockerfile如下:
############################################# version : debugman007/ssh:v1# desc : ubuntu14.04 上安装的ssh############################################# 设置继承自ubuntu14.04官方镜像FROM ubuntu:14.04 # 下面是一些创建者的基本信息MAINTAINER debugman007 (skc361@163.com) RUN rm -vf /var/lib/apt/lists/*RUN apt-get update RUN apt-get install -y openssh-server openssh-client vim wget curl sudo #添加用户 test,设置密码为 test, 赋予sudo权限RUN useradd -m test RUN echo "test:test" | chpasswdRUN cd /etc/sudoers.d && touch nopasswdsudo && echo "test ALL=(ALL) ALL" >> nopasswdsudo#把test用户的shell改成bash,否则ssh登录ubuntu服务器,命令行不显示用户名和目录RUN usermod -s /bin/bash test RUN echo "root:root" | chpasswd #配置sshRUN mkdir /var/run/sshd RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_configRUN sed 's@session/s*required/s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshdENV NOTVISIBLE "in users profile"RUN echo "export VISIBLE=now" >> /etc/profile EXPOSE 22 USER testRUN ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsaRUN cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys USER rootRUN ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsaRUN cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
评论列表()