全国职业院校技能大赛(GZ033大数据赛项)容器环境搭建

环境说明:

宿主机(bigdata)容器(master)容器(slave1)容器(slave2)
系统Linux Mint 22CentOS:7.9.2009CentOS:7.9.2009CentOS:7.9.2009
IP地址网桥172.18.0.101172.18.0.102172.18.0.103

Docker安装与配置过程本文不再叙述,请自行在站内寻找。

一、构建镜像 

1.拉取CentOS:7.9.2009的Docker镜像:

docker pull centos:7.9.2009

2.编写Dockerfile用以构建镜像:

FROM centos:7.9.2009

RUN mkdir -p /opt/software && mkdir -p /opt/module

# 更换阿里云yum源
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \
    sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo && \
    yum makecache

# 安装必要工具
RUN yum -y install openssh-server openssh-clients vim net-tools passwd

# 配置SSHD
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && \
    ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && \
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''

# 允许root登录
RUN sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config && \
    sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config

# 设置root密码
RUN echo 'root:123456' | chpasswd

# 暴露22端口
EXPOSE 22

# 直接启动SSHD(前台运行)
CMD ["/usr/sbin/sshd", "-D"]

3.构建镜像:

docker build -t bigdata_1.0 .

4.检查镜像是否构建完成:

docker images

二、网络规划

由于网上的大部分容器集群的网络规划方法都已失效(容器集群无法连接宿主机和外网),故本文采用网桥搭建宿主机与容器之间的网络通信。

使用以下命令创建一个自定义桥接网络,确保容器间可通过主机名通信,并分配固定子网:

docker network create \
  --driver bridge \
  --subnet 172.18.0.0/16 \
  --gateway 172.18.0.1 \
  bigdata_net

网桥的IP我们设置为172.18.0.0/1,所以容器集群的IP我们可以设置为:

master(主节点)从节点(slave1)从节点(slave2)
172.18.0.101172.18.0.102172.18.0.103

 编辑宿主机的hosts文件,用以之后通过host访问HDFS WEBUI:

#在宿主机bigdata上执行
vim /etc/host

#在文件底部追加:
172.18.0.101    master
172.18.0.102    slave1
172.18.0.103    slave2

三、创建容器 

创建容器master、slave1、slave2:

#主节点 master
docker run -itd \
  --name master \
  --hostname master \
  --network bigdata_net \
  --ip 172.18.0.101 \
  bigdata_1.0

#从节点 slave1
docker run -itd \
  --name slave1 \
  --hostname slave1 \
  --network bigdata_net \
  --ip 172.18.0.102 \
  bigdata_1.0

#从节点 slave2
docker run -itd \
  --name slave2 \
  --hostname slave2 \
  --network bigdata_net \
  --ip 172.18.0.103 \
  bigdata_1.0

四、验证容器环境 

检查ssh服务:

# 进入master容器
docker exec -it master bash

# 检查SSHD进程
ps aux | grep sshd

# 测试连接slave1
ssh root@slave1
# 输入密码:123456

检查网络环境:

docker exec -it master bash

# 在容器内执行:
ping slave1        # 通过主机名通信
ping 172.18.0.102  # 通过IP通信
ping 172.18.0.1    # 宿主机桥接接口
ping 10.101.7.230  # 宿主机主IP
ping 8.8.8.8       # 外网测试

# 在宿主机执行
ping 172.18.0.101  # 测试宿主机到容器的通信

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值