文章目录
- 1. 写在前面
- 2. 安装过程
- 3. 参考链接
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 学习之旅啦~~