dockerfile: cenos+hadoop+ssh

在進行hadoop集羣測試時,用docker進行集羣部署,在每個docker中部署一個hadoop服務,下面做一個鏡像,用於在每個容器中啓動hadoop,由於啓動hadoop集羣需要ssh服務,因此在鏡像中加入ssh的配置。dockerfile內容如下:

#version 0.1
FROM centos
WORKDIR /opt
RUN mkdir  module
ADD . /opt/module/
#set java enviroment
RUN echo "#JAVA_HOME" >> /root/.bashrc
RUN echo "export JAVA_HOME=/opt/module/jdk1.8.0_144" >> /root/.bashrc
RUN echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /root/.bashrc
#set hadoop enviroment
RUN echo "#HADOOP_HOME" >> /root/.bashrc
RUN echo "export HADOOP_HOME=/opt/module/hadoop-2.7.2" >> /root/.bashrc
RUN echo "export PATH=\$PATH:\$HADOOP_HOME/bin" >> /root/.bashrc
RUN echo "export PATH=\$PATH:\$HADOOP_HOME/sbin" >> /root/.bashrc
#install net tools, for using ping
RUN yum -y install net-tools
#set host
RUN echo "172.17.0.3      hadoop003" >> /etc/hosts
RUN echo "172.17.0.2      hadoop002" >> /etc/hosts
RUN echo "172.17.0.1      fanhao-test" >> /etc/hosts
#install which tool, hadoop use it
RUN yum -y install which

#install ssh
RUN yum -y install openssh*
#RUN systemctl start sshd

#install service
#RUN yum -y install initscripts

#解決Docker中CentOS鏡像無法使用systemd的問題
#ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

應用此dockerfile做鏡像,執行build命令:

docker build -t="softwarebird/hadoop:0.4" .

等softwarebird/hadoop:0.4鏡像成功後,就可以用此鏡像啓動帶有hadoop和ssh的容器了,示例如下:

docker run -itd --privileged=true --name my_docker softwarebird/hadoop:0.4
docker exec -it efea0d9e0841 /bin/bash

其中efea0d9e0841 爲docker容器啓動後的id。

然後可以分別執行which hadoopwhich ssh,查看是否安裝成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章