这是为了完成CDH manager镜像和agent镜像准备的制作环境,这个步骤可以在虚拟机上完成准备,只是制作镜像包,还不涉及安装部署。
yum install -y vim wget ntp net-tools \ && mkdir -p /etc/yum.repos.d/repo_bak \ && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bak/ \ && wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo \ && wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo \ && yum update -y \ && yum clean all
#关闭防火墙 systemctl stop firewalld \ && systemctl disable firewalld \ && systemctl status firewalld
vim /etc/selinux/config 修改为SELINUX=disabled
vim /etc/ntp.conf # 将时钟服务器更改为如下4个 server 0.cn.pool.ntp.org server 1.cn.pool.ntp.org server 2.cn.pool.ntp.org server 3.cn.pool.ntp.org # 启动设置ntp服务 systemctl start ntpd \ && systemctl enable ntpd \ && ntpdate -u 0.cn.pool.ntp.org \ && hwclock --systohc \ && date #结果 12 Sep 15:54:14 ntpdate[19610]: adjust time server 202.118.1.130 offset -0.000118 sec Sun Sep 12 15:54:15 CST 2021
yum本地库放在宿主机上,可减少master和slave容器的空间占用,打成镜像包的体积越小越好,做到足够精简
# 将rpm包拷贝到根目录 [root@cdhuser ~]# tree /root/hadoop_CDH hadoop_CDH/ ├── cloudera-repos │ ├── allkeys.asc │ ├── cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm │ ├── cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm │ ├── cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm │ ├── cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm │ ├── enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm │ ├── mysql-community-client-5.7.27-1.el7.x86_64.rpm │ ├── mysql-community-common-5.7.27-1.el7.x86_64.rpm │ ├── mysql-community-devel-5.7.27-1.el7.x86_64.rpm │ ├── mysql-community-libs-5.7.27-1.el7.x86_64.rpm │ ├── mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm │ ├── mysql-community-server-5.7.27-1.el7.x86_64.rpm │ └── oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
安装httpd服务,默认占用80端口,使得本地文件库可通过url来访问和下载。最重要的是通过yum安装解决的软件的依赖性,yum会尝试解决软件安装所需要的依赖,另外通过http实现了宿主机和容器之间文件访问,减少了rpm包的反复拷贝。在/etc/httpd/conf/httpd.conf中的DocumentRoot="/var/www/html"和Listen=80可知文件存放路径和访问端口,使用http://服务器IP:port就可以获取DocumentRoot路径下的内容
安装createrepo服务,使用"createrepo ."创建本地yum库,然后将本地yum源的仓库路径baseurl指向httpd的文件路径
yum -y install httpd createrepo \ && systemctl start httpd \ && cd /root/hadoop_CDH/cloudera-repos/ && createrepo . \ && mv /root/hadoop_CDH/cloudera-repos /var/www/html/ \ && yum clean all \ && ll /var/www/html/cloudera-repos 结果: [root@localhost cloudera-repos]# ll /var/www/html/cloudera-repos 总用量 1582956 -rw-r--r-- 1 root root 14041 7月 8 22:15 allkeys.asc -rw-r--r-- 1 root root 10483568 7月 8 22:15 cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm -rw-r--r-- 1 root root 1203832464 7月 8 22:16 cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm -rw-r--r-- 1 root root 11488 7月 8 22:15 cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm -rw-r--r-- 1 root root 10996 7月 8 22:15 cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm -rw-r--r-- 1 root root 14209868 7月 8 22:15 enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm -rw-r--r-- 1 root root 25365436 7月 8 22:15 mysql-community-client-5.7.27-1.el7.x86_64.rpm -rw-r--r-- 1 root root 281248 7月 8 22:15 mysql-community-common-5.7.27-1.el7.x86_64.rpm -rw-r--r-- 1 root root 3833396 7月 8 22:15 mysql-community-devel-5.7.27-1.el7.x86_64.rpm -rw-r--r-- 1 root root 2272032 7月 8 22:15 mysql-community-libs-5.7.27-1.el7.x86_64.rpm -rw-r--r-- 1 root root 2116432 7月 8 22:15 mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm -rw-r--r-- 1 root root 173500088 7月 8 22:15 mysql-community-server-5.7.27-1.el7.x86_64.rpm -rw-r--r-- 1 root root 184988341 7月 8 22:16 oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm drwxr-xr-x 2 root root 4096 7月 8 22:19 repodata最后生成这个
安装Docker的版本,对后期的安装部署影响不大
yum install -y yum-utils device-mapper-persistent-data lvm2 \ && yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo\ && yum -y install docker-ce \ && yum clean all \ && docker version # 结果: Client: Docker Engine - Community Version: 19.03.13 API version: 1.40 Go version: go1.13.15 Git commit: 4484c46d9d Built: Wed Sep 16 17:03:45 2020 OS/Arch: linux/amd64 Experimental: false ...
mkdir -p /etc/docker/ && \ (cat <<EOF {"registry-mirrors": ["https://1e7waog4.mirror.aliyuncs.com"]} EOF ) >>/etc/docker/daemon.json # 在启动docker systemctl start docker && systemctl enable docker && systemctl status docker
通过DockerFile完成基础镜像的制作,该镜像基于CentOS7.7 ,并安装了ssh服务,开放了22端口,后续在该基础镜像上制作manager镜像和agent镜像
[root@cdhuser ~]# cat cdh_dockerfile #选择centos7.7.1908作为基础镜像 FROM centos:centos7.7.1908 #镜像维护者信息 MAINTAINER "secretWHD" #描述信息 LABEL name="Docker build CDH cluster server" \ build_date="2021-09-12 15:07:12" #构建容器时需要运行的命令 #安装openssh-server、openssh-clients、sudo、vim和net-tools软件包 RUN yum -y install openssh-server openssh-clients sudo vim net-tools #生成相应的主机密钥文件 RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key #设置环境变量 ENV CENTOS_DEFAULT_HOME /root #终端默认登录进来的工作目录 WORKDIR $CENTOS_DEFAULT_HOME #启动sshd服务并且暴露22端口 EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"] # 依赖centos镜像创建,为安装cdh做准备,注意“最后的 . 别忘了” docker build -f /root/cdh_dockerfile -t server/bashimage . && docker images # 结果: Successfully built 8cfb66f19550 Successfully tagged server/bashimage:latest REPOSITORY TAG IMAGE ID CREATED SIZE server/bashimage latest 8cfb66f19550 1 second ago 404MB centos centos7.7.1908 08d05d1d5859 22 months ago 204MB