离线安装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 NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Win安装MySQL8全过程

《Win安装MySQL8全过程》:本文主要介绍Win安装MySQL8全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Win安装mysql81、下载MySQL2、解压文件3、新建文件夹data,用于保存数据库数据文件4、在mysql根目录下新建文件my.ini

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、