基于 RHEL 7.6 安装 Docker 运行环境


1. 写在前面

尽管当前容器和容器编排等技术是非常热门的话题,但我之前的工作却很少有机会接触到这一类的技术栈,想起来不免觉得有些落伍了。不过好在做云计算服务的无论如何都是绕不开这个点的,所以我得花些时间搞起来,不能被 out 了……

有关容器的开篇,就讲讲如何在 linux 系统中安装 docker 运行环境,主要还是针对 RHEL 7.6 和 CentOS 7.6 版本而言,其它版本也可以参考借鉴一下。

起初,我是在 CentOS 7.6 的环境上按照如下的方式完成了 docker 运行环境的部署。

首先对系统做一些简单配置:

  • 配置主机名;
  • 关闭防火墙;
  • 禁用 selniux 模块;
  • 配置网络,主要是为了可以访问外部网络。

然后开始获取 get-docker.sh 脚本进行一键部署:

[root@centos76 ~]# mkdir /docker
[root@centos76 ~]# cd /docker
[root@centos76 docker]# curl -fsSL get.docker.com -o get-docker.sh   //获取脚本。
[root@centos76 docker]# sh get-docker.sh   //运行脚本实现一键部署。
[root@centos76 ~]# systemctl start docker   //启动 docker 服务。
[root@centos76 ~]# systemctl enable docker

最后安装成功,检查下版本信息:

[root@centos76 ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.15
 API version:       1.41
 Go version:        go1.17.9
 Git commit:        fd82621
 Built:             Thu May  5 13:16:58 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.15
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.9
  Git commit:       4433bf6
  Built:            Thu May  5 13:15:18 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.4
  GitCommit:        212e8b6fa2f44b9c21b2798135fc6fb7c53efc16
 runc:
  Version:          1.1.1
  GitCommit:        v1.1.1-0-g52de29d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

当在 CentOS 7.6 上部署成功后,我想着干脆在 RHEL 7.6 的环境上也整一个,毕竟以后 CentOS 不维护了,然后就尴尬了,同样的操作在 RHEL 7.6 的环境遇到了报错:

[root@docker-node1 docker]# sh get-docker.sh 
# Executing docker install script, commit: 614d05e0e669a0577500d055677bb6f71e822356
Packages for RHEL are currently only available for s390x.

这个 Packages for RHEL are currently only available for s390x 很显眼吧,就是对于 RHEL 目前仅支持 s390x (IBM Z) 架构,其余的暂不支持;可以看下官方文档 Install Docker Engine on RHEL 有关 Prerequisites 的说明,下面贴个图:
在这里插入图片描述

那么这个问题该如何解决呢,且看下文介绍的方法。


2. 安装过程

针对上面的问题,解决办法是拉取官方提供的 docker-ce.repo 仓库,通过 yum 来进行手工安装。

特别说明:以下所有操作全部是基于 REHL 7.6(Minimal)环境进行的!

第一步,我们需要配置好本地 yum 来安装一些基础工具。

  • 上传镜像并完成挂载:
[root@docker-node3 ~]# mkdir /iso   //上传镜像到此目录。
[root@docker-node3 ~]# mkdir /mnt/cdrom   //创建镜像挂载点。
[root@docker-node3 ~]# echo "/iso/rhel-7.6-x86_64-dvd.iso   /mnt/cdrom   iso9660   defaults   0 0" >> /etc/fstab   //设置镜像开机自动挂载。
[root@docker-node3 ~]# mount -a
  • 备份系统自带的 repo 文件:
[root@docker-node3 ~]# mkdir /etc/yum.repos.d/repobak
[root@docker-node3 ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repobak/
  • 创建 local.repo 本地 yum 源配置文件:
[root@docker-node3 ~]# vim /etc/yum.repos.d/local.repo   //配置信息如下所示。
[local]
name=local
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
  • 清除并重新生成缓存:
[root@docker-node3 ~]# yum clean all
[root@docker-node3 ~]# yum makecache
  • 安装基础工具包:
[root@docker-node3 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2 wget

第二步,配置阿里云的镜像源。

  • 获取阿里云 Centos-7.repo 配置文件并重命名为 aliyun.repo:
[root@docker-node3 ~]# wget -O /etc/yum.repos.d/aliyun.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  • 修改 aliyun.repo 配置文件中的 baseurl 链接地址(否则将无法使用此仓库):
[root@docker-node3 ~]# sed -i 's/$releasever/7/g' /etc/yum.repos.d/aliyun.repo
  • 清除并重新生成缓存:
[root@docker-node3 ~]# yum clean all
[root@docker-node3 ~]# yum makecache
  • 安装 yum-plugin-priorities 插件:
[root@docker-node3 ~]# yum -y install yum-plugin-priorities
  • 检查插件是否已启用:
[root@docker-node3 ~]# cat /etc/yum/pluginconf.d/priorities.conf |grep 'enabled'
enabled = 1   //此值为“1”表示该插件被启用,为“0”则表示未被启用。

第三步,拉取 docker-ce 的仓库。

  • 获取 docker-ce 的仓库:
[root@docker-node3 ~]# yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
  • 修改 docker-ce.repo 配置文件中的 baseurl 链接地址:
[root@docker-node3 ~]# sed -i 's/rhel\/$releasever/centos\/7/g' /etc/yum.repos.d/docker-ce.repo

温馨提示:修改 docker-ce.repo 配置文件的目的是借用 centos 的资源,否则将无法使用此仓库,在执行 yum 相关的命令时也会出现如下的错误:

failure: repodata/repomd.xml from docker-ce-stable: [Errno 256] No more mirrors to try.
https://download.docker.com/linux/rhel/7Server/x86_64/stable/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found
  • 设置 local.repo 的优先级:
[root@docker-node3 ~]# echo "priority=1" >> /etc/yum.repos.d/local.repo
  • 清除并重新生成缓存:
[root@docker-node3 ~]# yum clean all
[root@docker-node3 ~]# yum makecache
  • 显示系统当前可用的 yum 源:
[root@docker-node3 ~]# yum repolist

第四步,通过 docker-ce.repo 仓库安装 docker 环境。

  • 以降序(非严格意义上的降序)的方式列出当前仓库提供的 docker-ce 版本信息:
[root@docker-node3 ~]# yum list docker-ce --showduplicates | sort -r
This system is not registered with an entitlement server. You can use subscription-manager to register.
Loaded plugins: product-id, search-disabled-repos, subscription-manager
docker-ce.x86_64            3:20.10.9-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.8-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.7-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.6-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.5-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.4-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.3-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.16-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.15-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.14-3.el7                    docker-ce-stable
<···>
<···>   由于版本信息太多,以 “...” 符号表示省略的内容。
<···>
docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable
Available Packages
7546 packages excluded due to repository priority protections
  • 安装 docker 环境(当包后面不跟具体的版本号信息,则默认安装仓库所能提供的最新版本):
[root@docker-node3 ~]# yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin

温馨提示:如果需要指定版本号进行安装,则命令行如下所示(版本号选择使从第一个冒号 “:” 开始到第一个连字符 “-” 结束):

yum -y install docker-ce-20.10.15 docker-ce-cli-20.10.15 containerd.io docker-compose-plugin

第五步,启动 docker 服务并设置为开机自启动。

[root@docker-node3 ~]# systemctl list-unit-files |grep docker
docker.service                                disabled
docker.socket                                 disabled
[root@docker-node3 ~]# systemctl start docker
[root@docker-node3 ~]# systemctl enable docker
[root@docker-node3 ~]# systemctl status docker

第六步,查看当前 docker 的版本信息。

[root@docker-node3 ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.16
 API version:       1.41
 Go version:        go1.17.10
 Git commit:        aa7e414
 Built:             Thu May 12 09:19:45 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.16
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.10
  Git commit:       f756502
  Built:            Thu May 12 09:18:08 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.4
  GitCommit:        212e8b6fa2f44b9c21b2798135fc6fb7c53efc16
 runc:
  Version:          1.1.1
  GitCommit:        v1.1.1-0-g52de29d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

至此,docker 的运行环境就配置好了,接下来就可以愉快的开始 docker 学习之旅啦~~


3. 参考链接

[1] Install Docker Engine on RHEL.
[2] Index of linux/centos/7/x86_64/stable/Packages/.
[3] 阿里云开源镜像站:Index of /repo/.
[4] 阿里云开源镜像站:Index of /centos/7/extras/x86_64/Packages/.


  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方先森有点懒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值