前置条件
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,看到相关信息我会尽快回复。