环境准备
centos7.x机器为例
系统:Centos 7,内核版本3.10
宿主机准备工作
- 安装docker
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
- 配置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
yum install docker-ce-cli docker-ce containerd.io
- 服务启停和确认
启动docker,命令:systemctl start docker,然后加入开机启动,如下
systemctl start docker
systemctl enable docker
- 检查安装是否成功
docker version
拉取镜像并初始化镜像
- 拉取镜像 docker pull centos
默认是拉取centos: latest
如果需要拉取其他版本的镜像,可以通过https://hub.docker.com/_/centos?tab=tags
如果你想获取7.4的镜像,则docker pull centos:centos7.4.1708
- 查看镜像并启动镜像
docker images 可以查看到你的镜像
使用 启动容器进行初始化修改. -v进行目录映射,后续传输文件会比较方便~
docker run -it -v /data:/data centos
- 进入容器后安装必要的软件
yum install openssh-clients openssh-server dbus rsync ntpdate which
其他工具
yum install iproute net-tools
初始化jdk, hadoop安装包
从新的终端把jdk 和hadoop tgz包放到/data
再进入容器里面,执行
tar -zxvf /data/jdkxxxx.tgz -C /opt/
tar -zxvf /datapool/hadoopxxxx.tgz -C /opt/
配置环境变量
vi /etc/profile
export JAVA_HOME="/opt/jdk1.7.0_80/"
export PATH=$PATH:$JAVA_HOME/bin
保存退出后,source /etc/profile
修改机器密码
echo “root:111111”|chpasswd
配置hadoop配置文件后,参考正常hadoop配置即可。然后正常启动HDFS服务
执行./bin/hadoop fs -ls / 保证可以正确执行
尝试启动或者停止yarn
问题:
[root@5a2d7be85df8 loongoop-1.0.5-v2.7.2]# ./sbin/start-yarn.sh
starting yarn daemons
localhost: ssh: connect to host localhost port 22: Network is unreachable
systemctl start sshd 无法启动
(privileged=true 没设置?)
---如果有其他缺少命令工具的,则yum安装一下即可
-
保存容器修改并commit保存为镜像
docker commit -m "centos8 with hadoopx.x.x" 6e407cd676d3 centos8/hdp
查看打包结果 docker images
使用新镜像创建容器并调整内容
- 启动镜像
docker run -d --name ct1 -h ct1 --privileged=true -v /data:/data centos8/lgp /usr/sbin/init
- 进入
docker exec -it ct1 /bin/bash
- 参数修改
重新修改/etc/hosts, hadoop 的slaves文件。为当前节点的信息
执行启动yarn,并查看进程服务即可
此时如果没有问题,则表示 镜像 centos8/hdp 可以直接使用了
后续可以在通过修改镜像容器commit方式进行打包