前情提要

  • ❕本教程已默认你已经做好三台机器的免密登录

  • ❕本教程已默认你的虚拟机拥有外部网络访问权限

  • ❕本教程已默认你对 Docker Network 拥有基础认知

  • ❕本教程已默认你已关闭虚拟机的防火墙

  • ❕本教程不能在 NAT 模式下使用

  • ❕本教程的虚拟机使用 Bridge 桥模式

虚拟机环境: 8C8G

80G 内存

网络适配器:桥模式

著作声明

⚠️在阅读本教程前,你需要同意:

  • 这是一份机密文件,不得随意泄露、分享,著作权和所有权利归属1103 Studio,All Rights Reserved

  • 这个文件中可能含有部分粗鲁的语言,请确保你的环境能够让你阅读(NSFW)Not Safe For Work!!!!!!!!

  • 你默认在 Docker 中安装 Hadoop 集群是一个不明智的行为,其性能开销代价巨大,且配置项复杂。

  • 你会 Linux 基础操作

温馨提示

记得勤打快照!!!!!!!多打两个快照不会要你命的!!!!

重要⚠️:千万别手贱重启你的虚拟机, docker 不会保留你的容器以及 Network 网络配置!!!!!!

千万不要!!不要!!不要!!不要随意重启!!!!!!! (除非你做了保活相关的指令)

正式开始:

1.在 Docker 中创建网桥

进入虚拟机后首先需要配置 docker,先关闭所有 docker 进程和删除所有 docker 容器,配置 docker 网络(桥模式,并指定网络)

CCF 给的 OpenEuler 系统镜像中,虽然有完整的 Docker 环境,但是 Docker 容器没有端口映射和其他网络相关操作,只能通过 NAT 来完成,这对于模块分工明确的小组来说是非常不利的。

docker stop master slave1 slave2
docker rm master slave1 slave2
 #停止并移除容器

# # # #  # # # #

docker network rm <你机器docker的自带 network ID(my_xxxxx)>
docker network create -d macvlan \
  --subnet=172.16.115.0/16 \
  --gateway=172.16.115.1 \
  -o parent=ens33 \
  hadoop-net

# # # #  # # # #

docker run -d \
  --name master \
  --hostname master \
  --network hadoop-net \
  --ip 172.16.115.131 \
  openeuler/openeuler:latest \
  tail -f /dev/null

docker run -d \
   --name slave1 \
   --hostname slave1 \
   --network hadoop-net \
   --ip 172.16.115.132 \
   my_docker_image \
   tail -f /dev/null

docker run -d \
   --name slave2 \
   --hostname slave2 \
   --network hadoop-net \
   --ip 172.16.115.133 \
   my_docker_image \
   tail -f /dev/null

创建好 Network之后,建议检查 NMTUI 内的设置,是否激活和启用

然后进入容器内部by:

注:此处-l后缀指通过登录方式进入内部,可以解决/etc/profile不会自动source的问题docker exec -it <container_name> bash -l

随后使用 dnf 安装必要的包(包括 ssh 等)

新问题:DockerContainer 的默认 DNS 可能会炸

安装必要的软件包

dnf install -y passwd which net-tools iproute iputils procps-ng vim sudo openssh-clients openssh-server hostname

完成!