银河麒麟V10-SP1-x86_64离线安装Docker

由于要推广信创,需要把Milvus向量数据库从别的平台迁移到信创平台上,为了能顺利迁移,在迁移前需要做一系列用到的功能软件的安装与运行的测试,由于Milvus向量数据库依赖于Docker运行,以及工作性质的要求,只能离线安装Docker。下面会具体介绍安装方法,以及在安装过程中遇到的问题和解决方案。

一、准备Docker环境

由于个人对软件安装的规化要求(统一规化好管理),需要提前创建好docker和containerd安装的目录。

自己创建的安装目录为/iwen/docker和/iwen/containerd,大家也可以根据自己的实际要求规化其它目录。

[root@kylinv10-sp1-iwen ~]# mkdir -pv /iwen/docker
[root@kylinv10-sp1-iwen ~]# mkdir -pv /iwen/containerd

创建好目录之后,要下载对应的docker版本和containerd版本,我自己用的是docker-27.0.1.tgz和containerd-1.7.19-linux-amd64.tar.gz。大家可以根据自己的要求选择不同的版本进行下载安装。

docker下载地址:

https://download.docker.com/linux/static/stable/x86_64/

containerd下载地址:

https://github.com/containerd/containerd/releases

注:docker的启动前提,是要依赖于containerd,所以要先安装containerd,不过也可以后续安装,大家可以根据个人爱好安排安装顺序。

1.1、安装containerd

containerd的安装非常简单,解压到规定的目录下,配置好环境变量即可。具体操作如下:

1.2.2、解压containerd
[root@kylinv10-sp1-iwen ~]# cd /iwen/containerd
[root@kylinv10-sp1-iwen containerd]# tar -xf containerd-1.7.19-linux-amd64.tar.gz
1.2.3、配置containerd环境变量和生效环境变量
[root@kylinv10-sp1-iwen containerd]# vi /etc/profile.d/containerd.sh
把以下内容添加进入保存即可
CONTAINERD_HOME=/iwen/containerd
PATH=$PATH:$CONTAINERD_HOME/bin
export PATH CONTAINERD_HOME
[root@kylinv10-sp1-iwen containerd]# source /etc/profile.d/containerd.sh
1.2.4、配置containerd.service
[root@kylinv10-sp1-iwen containerd]# vi /usr/lib/systemd/system/ containerd.service
把以下内容添加进入保存即可
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target dbus.service

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/iwen/containerd/bin/containerd

Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5

LimitNPROC=infinity
LimitCORE=infinity

TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target

需要注意“ExecStart”部分,要根据containerd安装目录进行修改。

如果不想使用该配置文件containerd.service,也可以从以下地址进行下载修改:

GitHub - containerd/containerd: An open and reliable container runtime

1.2.5、加载containerd.service
[root@kylinv10-sp1-iwen containerd]# systemctl daemon-reload
1.2.6、启动containerd.service
[root@kylinv10-sp1-iwen containerd]# systemctl start containerd.service

没有提示说明启动成功

1.2.7、检查containerd启动状态
[root@kylinv10-sp1-iwen ~]# systemctl status containerd.service 
● containerd.service - containerd container runtime
   Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2024-11-20 08:21:39 CST; 1h 5min ago
     Docs: https://containerd.io
 Main PID: 1873 (containerd)
    Tasks: 9
   Memory: 58.6M
   CGroup: /system.slice/containerd.service
           └─1873 /iwen/containerd/bin/containerd

其中Active状态是running状态,说明containerd已正常启动,并且安装和启动已没有问题。接下来就是要安装docker了。

1.2、安装docker

docker的安装相对于containerd的安装稍微有点复杂,详细操作如下:

1.2.1、解压docker

在解压之前,需要在/iwen/docker目录下创建bin目录和对应的data、lib、docker目录,其目的是为了让docker的可执行二制文件统一放在bin目录好管理,其中data、lib、docker是为了存docker的数据用的。大家可以根据自己的需要进行创建。

如下操作:

[root@kylinv10-sp1-iwen ~]# cd /iwen/docker
[root@kylinv10-sp1-iwen docker]# mkdir -pv ./data/lib/docker
[root@kylinv10-sp1-iwen docker]# mkdir ./bin
[root@kylinv10-sp1-iwen docker]# tar -xf docker-27.0.1.tgz
[root@kylinv10-sp1-iwen docker]# cd ./docker
[root@kylinv10-sp1-iwen docker]# cp * ../bin
[root@kylinv10-sp1-iwen docker]# cd /iwen/docker
[root@kylinv10-sp1-iwen docker]# rm -rf docker
1.2.3、配置docker环境变量和生效环境变量
[root@kylinv10-sp1-iwen docker]# vi /etc/profile.d/docker.sh
把以下内容添加进入保存即可
DOCKER_HOME=/iwen/docker
PATH=$PATH:$DOCKER_HOME/bin
export PATH DOCKER_HOME
[root@kylinv10-sp1-iwen docker]# source /etc/profile.d/docker.sh
1.2.4、配置docker.service
[root@kylinv10-sp1-iwen docker]# vi /usr/lib/systemd/system/docker.service
把以下内容添加进入保存即可
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/iwen/docker/bin/dockerd --data-root /iwen/docker/data/lib/docker --userland-proxy-path=/iwen/docker/bin/docker-proxy
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

需要注意标红部分,要根据docker安装目录进行修改。

其中要注意的是“/iwen/docker/bin/dockerd”后要面的参数,版本不同其中参数也不同,具体可参照以下文档:

如何解决Docker启动时报Status: unknown flag: --graph问题-CSDN博客

1.2.5、加载docker.service
[root@kylinv10-sp1-iwen docker]# systemctl daemon-reload
1.2.6、启动docker.service
[root@kylinv10-sp1-iwen docker]# systemctl start docker.service
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

启动docker时报错了,可以根据提示利用“journalctl -xe”查看报错日志。日志截图如下:

图片中的内容大家有可能看不清楚,以下是报错日志中最重要的部分。

11月 20 13:48:25 kylinv10-sp1-iwen dockerd[10263]: time="2024-11-20T13:48:25.423673778+08:00" level=warning msg="Failed to retrieve default runtime version" error="failed to retrieve runc version: exec: \"runc\": executable file not found in $PATH"

11月 20 13:48:25 kylinv10-sp1-iwen dockerd[10263]: time="2024-11-20T13:48:25.425945365+08:00" level=warning msg="Failed to find docker-init" error="exec: \"docker-init\": executable file not found in $PATH"

看报错的意思是说docker在进行启动时,无法在环境变量中检索到runc和docker-init这2个命令,但使用which命令查看这2个命令是可以通过环境变量检索到的。如下如示:

[root@kylinv10-sp1-iwen iwen]# which docker-init
/iwen/docker/bin/docker-init
[root@kylinv10-sp1-iwen iwen]# which runc
/iwen/docker/bin/runc

为了验证这个问题,用同样的方法又在银河麒麟V10-SP3的版本上安装和启动是没有问题的,通过多方查找资料发现银河麒麟V10-SP1版本不支持自定义目录安装和启动docker,需要把docker的可执行文件放到/usr/bin下才可以(为了解决这个问题耗费了不少时间和精力)。

注:大家在银河麒麟V10-SP1的ARM架构上安装时,也会出现同样的问题,可以尝试一下这个解决方法。

所以可以采用以下方法解决此问题,具体操作如下:

1.2.6.1、删除原来docker的环境变量
[root@kylinv10-sp1-iwen iwen]# rm /etc/profile.d/docker.sh
1.2.6.2、docker可执行文件创建软连接
[root@kylinv10-sp1-iwen bin]# cd /usr/bin
执行以下命令,把docker的bin目录下可执行文件软连接到该目录下。
ln -sv /iwen/docker/bin/runc runc
ln -sv /iwen/docker/bin/docker-proxy docker-proxy
ln -sv /iwen/docker/bin/docker-init docker-init
ln -sv /iwen/docker/bin/dockerd dockerd
ln -sv /iwen/docker/bin/docker docker
ln -sv /iwen/docker/bin/ctr ctr
ln -sv /iwen/docker/bin/containerd-shim-runc-v2 containerd-shim-runc-v2
ln -sv /iwen/docker/bin/containerd containerd

执行完的结果如下图所示:

1.2.6.3、修改docker.service
[root@kylinv10-sp1-iwen iwen]# vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd --data-root /iwen/docker/data/lib/docker --userland-proxy-path=/usr/bin/docker-proxy
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

需要注意“ExecStart”部分,可执行命令需要修改成所在目录/usr/bin。

1.2.6.4、重新加载docker.service
[root@kylinv10-sp1-iwen iwen]# systemctl daemon-reload
1.2.6.5、启动docker
[root@kylinv10-sp1-iwen iwen]# systemctl start docker.service

没有输出内容,并且没有报错,说明可以正常启动了。

1.2.6.6、检查docker启动状态
[root@kylinv10-sp1-iwen iwen]# systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2024-11-20 14:10:19 CST; 7s ago
     Docs: https://docs.docker.com
 Main PID: 10633 (dockerd)
    Tasks: 9
   Memory: 17.3M
   CGroup: /system.slice/docker.service
           └─10633 /usr/bin/dockerd --data-root /iwen/docker/data/lib/docker --userland-proxy-path=/usr/bin/docker-proxy

其中Active状态是running状态,说明docker已经正常启动了。到此为止银河麒麟V10-SP1版本上安装docker已成功完成。

疑问:

但还是不清楚,为什么不能使用自己规化的目录来安装和启动docker(银河麒麟V10-SP3版本可以,银河麒麟V10-SP1版不可以),如果大家有解决方法,还恳请大家能留下保贵的解决方案以供学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/920035.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue2 webpack分包实现首屏加载优化

项目打包后得到的vendor.js文件过大,进行拆包以减少文件的大小,具体实现如下: webpack3.x使用new webpack.optimize.CommonsChunkPlugin打包文件分割优化加载 修改项目build内的webpack.prod.conf.js文件,将项目中的需要拆的文件…

125.验证回文串-力扣(LeetCode)

题目: 解题思路: 首先进行移除非字母数字字符,并将大写字符转换为小写字符的操作。这个过程中,主要利用快慢指针的方式来进行移除操作,通过加32将大写字符转换为小写字符。完成后,将前一半的数据与后一半的…

ftrack 24.10全面升级:Autodesk Flame集成与多项新功能性能改进将发布

管理复杂项目绝非易事,但ftrack Studio的最新更新旨在简化这一过程。我们设计了这些增强功能,以优化大家的工作流、提高可用性,并让你们有更多时间专注于创意工作。 让我们来看看都有什么新内容吧! ​增强功能来优化工作流 轻松…

深度学习基础—Bleu得分

引言 机器翻译任务中,通常会需要评价指标来评估机器翻译的好坏。仅通过统计翻译词在标准翻译中出现的次数这种方式很不合理,就需要用到Bleu得分来进行评估。 1.n-gram(N元组) 假设要翻译:Le chat est sur le tapis&am…

【MySQL】InnoDB 基本了解+存储结构

目录​​​​​​​ InnoDB简单了解 InnoDB的特性 InnoDB架构 InnoDB存储引擎创建表的数据文件 MySQL存储结构 表空间文件 用户数据在表空间中存储方式 使用页数据存储单元的原因 数据页 区 表中数据少时如果避免空间浪费 区组 段 页 数据行的组成 快速定位数据…

鸿蒙中服务卡片数据的获取和渲染

1. 2.在卡片中使用LocalStorageProp接受传递的数据 LocalStorageProp("configNewsHead") configNewsHeadLocal: ConfigNewsHeadInfoItem[] [] 注意:LocalStorageProp括号中的为第一步图片2中的键 3.第一次在服务卡片的第一个卡片中可能会获取不到数据…

《Django 5 By Example》阅读笔记:p211-p236

《Django 5 By Example》学习第7天,p211-p236总结,总计26页。 一、技术总结 1.messages(消息推送) django.contrib.messages。 2.OAuth 2 Django里使用的是social-app-django这个package进行认证操作。 3.开发环境使用HTTPS 使用django-extension…

机器学习(贝叶斯算法,决策树)

朴素贝叶斯分类 贝叶斯分类理论 假设现有两个数据集,分为两类 我们现在用p1(x,y)表示数据点(x,y)属于类别1(图中红色圆点表示的类别)的概率,用p2(x,y)表示数据点(x,y)属于类别2(图中蓝色三角形表示的类别)的概率,那么对于一个新数据点(x,y)…

《设计模式》创建型模式总结

目录 创建型模式概述 Factory Method: 唯一的类创建型模式 Abstract Factory Builder模式 Prototype模式 Singleton模式 最近在参与一个量化交易系统的项目,里面涉及到用java来重构部分vnpy的开源框架,因为是框架的搭建,所以会涉及到像…

【Bug合集】——Java大小写引起传参失败,获取值为null的解决方案

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:本文面向的人群 二:错误场景引入 三:正确场景引入 四&#xf…

论文阅读--supervised learning with quantum enhanced feature spaces

简略摘要 量子算法实现计算加速的核心要素是通过可控纠缠和干涉利用指数级大的量子态空间。本文在超导处理器上提出并实验实现了两种量子算法。这两种方法的一个关键组成部分是使用量子态空间作为特征空间。只有在量子计算机上才能有效访问的量子增强特征空间的使用为量子优势提…

网络安全之信息收集-实战-1

请注意,本文仅供合法和授权的渗透测试使用,任何未经授权的活动都是违法的。 实战:补天公益src“吉林通用航空职业技术学院” 奇安信|用户登录https://www.butian.net/Loo/submit?cid64918 域名或ip:https://www.jlth…

jenkins离线安装插件

Jenkins 在线安装插件失败 报错: Caused: java.io.IOException: Failed to load https://updates.jenkins.io/download/plugins/login-theme/244.vd67c77f0c4c8/login-theme.hpi to /var/jenkins_home/plugins/login-theme.jpi.tmpat hudson.model.UpdateCenter$Up…

MATLAB的语音信号采集与处理分析

1、基本描述 本文描述的系统是一个全面而精细的语音信号处理平台,核心组件由MATLAB的高级功能模块构建而成。系统的核心交互界面,借助于MATLAB的uifigure函数搭建,为用户提供了一个直观且响应迅速的操作环境。通过设计的GUI按钮,如…

【赵渝强老师】MySQL的慢查询日志

MySQL的慢查询日志可以把超过参数long_query_time时间的所有SQL语句记录进来,帮助DBA人员优化所有有问题的SQL语句。通过mysqldumpslow工具可以查看慢查询日志。 视频讲解如下: MySQL的慢查询日志 【赵渝强老师】MySQL的慢查询日志 下面通过具体的演示…

IDEA指定Maven的settings不生效问题处理

文章目录 一、问题描述二、问题分析三、问题解决 一、问题描述 在Idea中手动指定了maven的settings配置文件,但是一直没生效。 如下图:设置加载settings-aliyun.xml文件,但是最后发现还是在加载settings.xml文件 二、问题分析 ‌在Intel…

论文阅读:Uni-ISP Unifying the Learning of ISPs from Multiple Cameras

这是 ECCV 2024 的一篇文章,文章作者想建立一个统一的 ISP 模型,以实现在不同手机之间的自由切换。文章作者是香港中文大学的 xue tianfan 和 Gu jinwei 老师。 Abstract 现代端到端图像信号处理器(ISPs)能够学习从 RAW/XYZ 数据…

[免费]SpringBoot+Vue毕业设计论文管理系统【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue毕业设计论文管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue毕业设计论文管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 现代经济快节奏发展以及不断完善升级的信…

项目技术栈-解决方案-web3去中心化

web3去中心化 Web3 DApp区块链:钱包:智能合约:UI:ETH系开发技能树DeFi应用 去中心化金融P2P 去中心化网络参考Web3 DApp 区块链: 以以太坊(Ethereum)为主流,也包括Solana、Aptos等其他非EVM链。 区块链本身是软件,需要运行在一系列节点上,这些节点组成P2P网络或者半…

使用 Axios 拦截器优化 HTTP 请求与响应的实践

目录 前言1. Axios 简介与拦截器概念1.1 Axios 的特点1.2 什么是拦截器 2. 请求拦截器的应用与实践2.1 请求拦截器的作用2.2 请求拦截器实现 3. 响应拦截器的应用与实践3.1 响应拦截器的作用3.2 响应拦截器实现 4. 综合实例:一个完整的 Axios 配置5. 使用拦截器的好…