使用docker 您所在的位置:网站首页 vivos7手机使用技巧 使用docker

使用docker

2024-02-04 01:38| 来源: 网络整理| 查看: 265

问题现象

在符合如下条件的Alibaba Cloud Linux 3系统的ECS实例中,执行dnf install docker-ce命令安装容器软件包失败,并出现如下报错。

使用适配CentOS 8系统中的第三方DNF(YUM)源。

aliyun_3_x64_20G_alibase_20210425.vhd及之前的所有镜像版本。

系统显示报错信息类似如下。

Docker CE Stable - x86_64 Failed to download metadata for repo 'docker-ce-stable' Error: Failed to download metadata for repo 'docker-ce-stable'问题原因

第三方DNF源仅适配CentOS 8发行版,而在Alibaba Cloud Linux 3中,系统的$releasever变量值与CentOS 8不同,导致DNF解析后的地址无效,进而导致下载RPM包失败。

说明

DNF安装docker-ce时,首先会从系统中获取版本号,即$releasever变量值,然后替换掉相应源baseurl中对应的$releasever变量值,之后DNF从替换后的baseurl中获取相关数据。由于CentOS 8的$releasever变量值为8,而Alibaba Cloud Linux 3系统的$releasever变量值为3,因此解析后的baseurl并非预期地址,DNF便无法从这个错误的地址中安装软件包。

解决方案

请根据实际需求情况,选择以下对应方案进行修复。

您可以参考方案一:手动修改步骤,通过手动修改$releasever变量值进行修复。

您可以参考方案二:安装插件修改步骤,通过安装dnf-plugin-releasever-adapter插件进行修复。

说明

本文以docker-ce源为例进行介绍,如果您使用的是其他DNF源,解决方案类似。

方案一:手动修改

远程登录Linux实例。

具体操作,请参见通过密码或密钥认证登录Linux实例。

执行以下命令,打开/etc/yum.repos.d/docker-ce.repo配置文件。

vim /etc/yum.repos.d/docker-ce.repo

按i键进入编辑模式,找到docker-ce.repo文件中所有存在enabled=1值的源,将源中baseurl的$releasever变量替换为8。

按下Esc键后,输入:wq并按Enter键以保存关闭配置文件,重新进行安装即可。

方案二:安装插件修改

通过安装dnf-plugin-releasever-adapter插件实现$releasever的变量进行自动转换,即将3转换为8。

确认实例是否支持使用dnf-plugin-releasever-adapter插件。

dnf-plugin-releasever-adapter插件目前的版本及默认支持的第三方repo如下表所示:

插件版本

默认支持的第三方repo

插件的限制

新版本:1.0-2

旧版本:1.0-1.3

说明

新版本插件和旧版本插件不兼容,新版本的配置文件名称为releasever_adapter.conf,旧版本为releasever-adapter.conf。升级版本会删除原来的配置文件。因此升级后,如果需要支持除docker-ce和epel之外的第三方源,需要重新按照步骤修改配置文件的include字段,其他的保持不变。

docker-ce.repo,epel.repo

您需要满足以下条件,才可以使用该插件:

操作系统需要是Alibaba Cloud Linux 3。

执行以下命令,确认系统中存在alinux3-plus的repo。

cat /etc/yum.repos.d/AliYun.repo |grep -A3 alinux3-plus

系统显示类似如下,说明存在alinux3-plus的repo。

远程登录Linux实例。

具体操作,请参见通过密码或密钥认证登录Linux实例。

执行以下命令,安装dnf-plugin-releasever-adapter插件。

说明

目前,插件默认对docker-ce和epel源中的$releasever变量值做自动转换。

dnf install dnf-plugin-releasever-adapter --repo alinux3-plus

若无其他的DNF源需要转换,安装插件后即可直接安装软件;若还有其他的DNF源需要转换,请按照以下方式配置:

执行以下命令,进入/etc/yum/pluginconf.d/目录。

cd /etc/yum/pluginconf.d/

执行以下命令,编辑releasever_adapter.conf配置文件。

vim releasever_adapter.conf

按i键切换至编辑模式,如果需要添加其他的DNF源,则需要将DNF源的.repo文件名添加在include字段后面,并以逗号隔开。

说明

DNF源的.repo文件一般在/etc/yum.repos.d/目录下查看。

系统显示类似如下。

[main] enabled=1 [releasevermapping] 2.1903 = 7 3 = 8 [reposlist] include=docker-ce.repo, epel.repo说明

文件中参数的具体介绍如下所示:

[main]:此部分为插件的主要控制部分,控制插件的启用与否,其中enabled=1表示启用插件,enabled=0表示停用插件。

[releasevermapping]:此部分为待处理的$releasever的映射关系,其中2.1903映射为7,3映射为8。

[repolist]:此部分为需要修改的源的列表,如果需要添加其他的源,则需要将.repo文件的名字添加在include字段后面,并以逗号隔开。

一般来说,一个.repo文件中有多个可以使用的源,每个源都有一个独立的名称区分其他的源,一个系统中不能出现重复的名称,例如:docker-ce.repo中有[docker-ce-stable]和[docker-ce-stable-debuginfo]等源。

修改完成后,按下Esc键,然后输入:wq并按回车,保存并关闭配置文件。

执行如下命令,通过docker-ce、epel和您添加的源安装docker-ce软件。

dnf install docker-ce


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有