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

2023-11-11 15:32

本文主要是介绍离线安装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运行环境的曲折过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/391070

相关文章

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.