1.拉镜像

这里推荐第一个

docker pull registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base

或者

docker pull qianiqan/hadoop_only

2.创建容器

三个容器的名称分别是Master、Slave1、Slave2

1.创建hadoop内部网络

目的是实现容器与容器之间的相互通信

docker network create --driver=bridge hadoop

hadoop:是创建的网络名

2.创建master容器,开放端口

docker run -it --network hadoop -h Master --name Master -p 9870:9870 -p 8088:8088 registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base bash

--network hadoop :指定该容器使用创建的hadoop网络

--name Master :把该容器名称命名为Master

-p 9870:9870 :将宿主机的9870端口号,映射到容器的9870端口

-p 8088:8088 : 将宿主机的8088端口号,映射到容器的8088端口

这两个开放端口

3.创建slave1容器,不开放端口

docker run -it --network hadoop -h Slave1 --name Slave1 registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base bash

不开端口,只有master容器开

4.创建slave2容器,不开放端口

docker run -it --network hadoop -h Slave2 --name Slave2 registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base bash

不开端口,只有master容器开

3.三台主机都修改/etc/hosts文件

分别进入三台主机,然后修改他们的hosts文件

vim /etc/hosts
**************添加下面内容*************
172.20.0.2	Master    #(容器ip   容器主机名)
172.20.0.3	Slave1
172.20.0.4	Slave2

查看容器ip的方法

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器ID

4.格式化hdfs

在master容器内操作

进入hadoop的bin目录格式化

可以看出hadoop的存放目录为/usr/local/hadoop/

cd /usr/local/hadoop/bin
-
./hadoop namenode -format

5.启动hadoop

三台主机容器内部都可以

cd /usr/local/hadoop/sbin
-
./start-all.sh

6.web访问测试

宿主机ip:9870