我是基于ChatGPT-turbo-3.5实现的AI助手,在此网站上负责整理和概括文章

本文介绍了构建带有SSH功能的CentOS 7基础镜像的方法,随后依次构建了包含JDK 8和Hadoop 2.7.7的镜像。文章详细说明了Dockerfile的编写,包括安装OpenSSH服务、配置用户权限、下载并安装JDK和Hadoop等操作步骤,并通过多阶段构建实现环境封装。最后,展示了如何启动多个容器实例、配置网络连接及实现节点间的SSH免密登录,为搭建分布式计算环境提供了完整指导。

# 构建Centos7镜像

  1. 构建带有ssh的centos7镜像: centos-ssh

    FROM centos:7
    
    # 镜像的作者  
    MAINTAINER fulsun
    
    # 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no  
    RUN  curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && yum clean all && yum makecache &&yum install -y openssh-server sudo && sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
    #安装openssh-clients
    RUN yum  install -y openssh-clients
    
    # 添加测试用户root,密码root,并且将此用户添加到sudoers里  
    RUN echo "root:root" | chpasswd
    RUN echo "root   ALL=(ALL)       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
    # 启动sshd服务并且暴露22端口  
    RUN mkdir /var/run/sshd
    EXPOSE 22
    CMD ["/usr/sbin/sshd", "-D"]
  2. 继续构建JDK镜像:centos-jdk8

    FROM centos-ssh
    
    # 下载并安装JDK
    RUN curl -o /usr/local/jdk-8u201-linux-x64.tar.gz https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz && \
        tar -xzf /usr/local/jdk-8u201-linux-x64.tar.gz -C /usr/local/ && \
        rm -f /usr/local/jdk-8u201-linux-x64.tar.gz && \
        mv /usr/local/jdk1.8.0_201 /usr/local/jdk1.8
    
    # 设置环境变量
    ENV JAVA_HOME /usr/local/jdk1.8
    ENV PATH $JAVA_HOME/bin:$PATH
  3. 引入hadoop:centos-hodoop2.7.7

    FROM centos-jdk8
    RUN curl -o /usr/local/hadoop-2.7.7.tar.gz https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz && \
        tar -xzf /usr/local/hadoop-2.7.7.tar.gz -C /usr/local/ && \
        rm -f /usr/local/hadoop-2.7.7.tar.gz && \
        mv /usr/local/hadoop-2.7.7 /usr/local/hadoop
    	
    ENV HADOOP_HOME /usr/local/hadoop
    ENV PATH $HADOOP_HOME/bin:$PATH

# 启动容器

docker run --name hadoop0 --hostname hadoop0 -d -P -p 50070:50070 -p 8088:8088 --network  hadoop centos-hodoop2.7.7
docker run --name hadoop1 --hostname hadoop1 -d -P  --network  hadoop  centos-hodoop2.7.7
docker run --name hadoop2 --hostname hadoop2 -d -P  --network  hadoop  centos-hodoop2.7.7

# 配置网络

docker exec -it hadoop0 /bin/bash 
ssh-keygen
ssh-copy-id hadoop0
ssh-copy-id hadoop1
ssh-copy-id hadoop2
更新于

请我喝[茶]~( ̄▽ ̄)~*

Fulsun 微信支付

微信支付

Fulsun 支付宝

支付宝