离线安装docker运行环境的曲折过程

目的

背景是这样的,学习docker技术,仅看理论是远远不够的,需要动手实践。
第一步当然是搭建环境,一件本来以为很容易的事情,实际是非常曲折。

挑战

首先,服务器是公司内网的,CentOS7.4,跟外网是隔离,所以不用想什么通过yum命令在线安装了,只能使用离线下载安装包——上传服务器——本地安装这种模式。

摸索

网上大部分介绍docker技术的文章,大都是采用在线安装的方式,关于离线怎么安装,开始了百度之旅。

最开始,找到了下载二进制包,然后解压缩,运行的方式,用这种方式正常启动了docker引擎,但后续发现,官方并不推荐这种方式,

不建议在生产环境中使用二进制文件安装 Docker,因为它们不会使用安全更新自动更新。此页面上描述的 Linux 二进制文件是静态链接的,这意味着构建时依赖项中的漏洞不会被 Linux 发行版的安全更新自动修补。

与使用包管理器或通过 Docker Desktop 安装的 Docker 包相比,更新二进制文件也稍微复杂一些,因为每当有新版本的 Docker 时,它都需要(手动)更新已安装的版本。

此外,静态二进制文件可能不包括动态包提供的所有功能。

参见:https://docs.docker.com/engine/install/binaries/

其他几点还好,最后一条,静态二进制文件可能不包括动态包提供的所有功能,可能影响比较大。

于是放弃这种方式,清理服务器,恢复原状,然后开始尝试安装包方案。

参照的是docker的官方文档https://docs.docker.com/engine/install/centos/#install-from-a-package,刚想感叹下,还是官方说明简洁明了,比百度搜索出来的五花八门的结果好多了,然后噩梦开始了……

选了一个最新的版本,下载后,执行yum install docker-ce-20.10.9-3.el7.x86_64.rpm 命令,报错,提示依赖包container-selinux需要高于2:2.74

[root@DB-REDISQAS setup]# yum install docker-ce-20.10.9-3.el7.x86_64.rpm
Loaded plugins: fastestmirror, langpacks
Examining docker-ce-20.10.9-3.el7.x86_64.rpm: 3:docker-ce-20.10.9-3.el7.x86_64
Marking docker-ce-20.10.9-3.el7.x86_64.rpm to be installed
Resolving Dependencies
–> Running transaction check
—> Package docker-ce.x86_64 3:20.10.9-3.el7 will be installed
–> Processing Dependency: container-selinux >= 2:2.74 for package: 3:docker-ce-20.10.9-3.el7.x86_64
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#7 - “Failed to connect to 2604:1380:2001:d00::3: Network is unreachable”

于是查找下载container-selinux这个包

下载
http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm

安装提示
—> Package container-selinux.noarch 2:2.119.2-1.911c772.el7_8 will be installed
–> Processing Dependency: selinux-policy >= 3.13.1-216.el7 for package: 2:container-selinux-2.119.2-1.911c772.el7_8.noarch

下载
http://mirror.centos.org/centos/7/os/x86_64/Packages/selinux-policy-3.13.1-268.el7.noarch.rpm

安装提示
—> Package selinux-policy.noarch 0:3.13.1-166.el7 will be updated
–> Processing Dependency: selinux-policy = 3.13.1-166.el7 for package: selinux-policy-targeted-3.13.1-166.el7.noarch

下载
http://mirror.centos.org/centos/7/os/x86_64/Packages/selinux-policy-targeted-3.13.1-268.el7.noarch.rpm

……

然后意识到,这简直就是俄罗斯套娃,一层套一层,要真依赖上几十个包,太浪费时间了,于是再次百度,发现有一篇说,依赖包大概有18个,18……多吉利的数字

再次调整思路,去百度,有没有别人已经下载好的包……能搜到,但下载地址指向了csdn,50积分……

再查,有没有批量下载依赖包的方式,还真找到了

找一台能联网虚机
yum -y install --downloadonly --downloaddir=/root/docker docker-ce
–downloadonly 只下载不安装 --downloaddir 下载后路径 docker-ce 服务名

但是……没环境啊,有这环境我直接在线安装不就得了

最后,再次搜索,有没有已经可以下载的安装好的包,找到一个百度网盘,压缩包90多兆,下载后解压一看,根本就不是centos的,继续找,终于找到一个centos7 全离线安装docker1.17.12,下载下来,23个文件,测试依然少包libgudev1-devel-219-42.el7.x86_64,并且网上只能搜到新版本,找不到该版本的下载了,安装了新版,又会进一步提示其他依赖包,又回到了原来的俄罗斯套娃游戏。

解决

最终,回到了最开始的二进制安装方式,实际试了下,作为练手的环境也够用了。

反思

反思下,本来一件以为很容易的事情,实际困难重重,linux与docker这些开源的东西,版本的管理,环境的差异,组件的依赖,技术文章的混乱,要理清楚,实在是太耗费精力和时间了……

补充

后来根据第一性原理,换了一个新思路,我们的目的是搭建一个docker学习环境,因此没必要非得安装在离线的linux系统上,完全可以放到可以联网的个人电脑上,操作系统也可以是windows而不是linux,因此采用了docker desktop的windows版本,详见博文 windows下docker环境搭建与运行实战

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学海无涯,行者无疆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值