docker里安装hadoop并把容器打包为镜像

环境准备

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

问题:

[[email protected] 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方式进行打包