前置条件

docker版本:18.06.1-ce

java版本: 1.8.0_171

hadoop版本:3.1.1

docker 基础镜像: redhat:7.3

搭建yum需要的镜像文件:rehl_server_7.3_x86_64_dvd.iso

宿主机操作系统为:Redhat 7.3(Mapio)

在window系统中安装:XSHELL5、XFTP

使用容器搭建yum源

第一,在宿主机创建一个目录:mkdir -p /home/docker。

第二,在window端解压rehl_server_7.3_x86_64_dvd.iso把解压之后的文件重命名为“RedHat”。通过xftp把windows上的文件RedHat拖动到宿主机“/home/docker”目录下。(PS:由于基础镜像中命令比较少,没有挂载命令,在此就用解压之后的文件之间进行挂载)

第三,创建容器的命令如下:

docker run -id --name yumR -h yumR -p 9090:80 -v /home/docker:/var/www/html redhat:7.3 bash

    -d:表示容器在后台运行;

    --name:给容器命名为yumR;

    -h:设置容器的hostname为yumR;

    -p :9090:80表示把容器的80端口映射到宿主机的9090端口;

   -v:把宿主机的/home/docker挂载到容器/var/www/html目录,实现数据共享

第四,执行命令如下命令进如yumR容器:

docker exec -it yumR bash

 第五,查看容器与宿主机的防火墙是否关闭,如果没有关闭使用命令:

systemctl stop firewalld
systemctl disable firewalld

第六,如果关闭之后,在容器的/etc/yum.repos.d目录下创建文件base.repo,文件包含以下内容:

[base]
name=RedHat7
enabled=1
baseurl=file:///var/www/html/RedHat
gpgcheck=1
gpgkey=file:///var/www/html/RedHat/RPM-GPG-KEY-redhat-release

在容器中执行命令:

yum clean all
yum makecache

查看命令中是否出错,根据错误信息进行修改。大部分错误是由于base.repo中信息填写错误。

第七,安装httpd服务,在容器中执行命令:

yum -y install openssh*

在容器中编辑文件:vi /etc/httpd/conf/httpd.conf。查看监听端口“Listen 80”是否为80。如果不是80,调整为80端口,在宿主机无法通过9090访问该服务。

第八,启动httpd服务的命令:

systemctl start httpd

如果提示“Failed to get D-Bus connection:Operation not permitted”。可以执行命令启动:

/usr/sbin/httpd -k start

第九,验证httpd服务启动,可以通过“ps -ef | grep httpd”查看是否存在httpd服务。也可以window的浏览器输入:http://宿主机IP:9090/RedHat,查看是否可以进行访问。

以上是通过容器搭建了yumR源服务,该容器的相关网络信息如下:

ip:172.17.0.5
netmask:255.255.0.0

至此容器的yum源服务搭建完毕。该容器用于后面大数据hadoop平台安装sshd服务。如果有问题可以加入QQ群:320542475,看到相关信息我会尽快回复。