离线安装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

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

Java Kafka消费者实现过程

《JavaKafka消费者实现过程》Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交... 目录基础KafkaConsumer类分析关键代码与核心算法2.1 订阅与分区分配2.2 拉取消息2.3

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面