最佳实践:CI/CD交付模式下的运维展望丨IDCF
李洪锋 启迪万众数字技术(广州)有限公司 ,产品研发中心-系统运维部、研发效能(DevOps)工程师(中级)课程学员
一、DevOps现状
据云计算产业联盟《中国DevOps现状调查报告2023》显示,国内DevOps 落地成熟度处于全面级的受访企业占比高达 41.2%,具备自动化、规范化的特点;17.83% 企业的DevOps实践成熟度处于优秀级,具备平台化、自服务化与度量驱动改进的特点;0.85% 的企业处于卓越级,能够实现 DevOps 的高度智能化、数据化及社会化的特点。
数据来源:中国信息通信研究院
特别需要关注的是,2020-2023 年 4 年间无流水线工具企业由 26.89% 逐步下降至 19.11%;19.59% 的企业内部虽然无流水线平台,但也实现了构建、部署、测试自动化;流水线平台自动化程度由 17.11% 逐步上升至 28.16%;直接通过流水线进行生产环境交付数据由 16.30% 波动上升至 20.64%。充分说明企业正在通过流水线自动化的编排流程大幅降低交付成本,已经成为持续交付环节重要生产工具。
数据来源:中国信息通信研究院
-
持续集成、单元测试、持续部署、持续发布、自动构建成为企业在持续交付域提升开发效能的主要方向。从数据反馈显示占比分别为 45.78%、40.40%、34.94%、32.58%、 32.14%。
数据来源:中国信息通信研究院
综上所述,为灵活应对快速变化的业务需求和日益复杂的市场环境,快速提升交付高质量软件或服务的能力,强化组织、技术、流程的结合,加快推动企业数字化转型,一个具备效能度量和质量管控的CI/CD工具链平台是团队生产能力稳步提升的基石,是IT组织“降本增效”的底座,其重要性不言而喻。
二、CI/CD能力级别
持续集成和持续交付(Continuous Integration &Continuous Delivery,CI/CD):以自动化方式,持续地完成软件产品和服务的构建与集成、测试、部署等过程,维持随时可以交付软件产品并发布上线运行的状态。
持续集成和持续交付是 DevOps 产品研发模式最为重要的能力和核心特征之一,是缩短从代码提交到发布上线的周期时间的关键。围绕价值交付的核心,构建可度量、可延续、可优化、可追踪的工具化自动化交付工具链路,通过DevOps产品研发交付模式,以度量管理过程,以反馈检查优化,最终达到效能和质量的提升。
参考GB/T 42560-2023 国家标准《系统与软件工程 开发运维一体化能力成熟度模型》,结合实际情况,进行分级别、分阶段的CI/CD能力建设。
等级1 | CI/CD 1.1 | 1.1.1.建设目标 | 在 DevOps 流程开展 CI/CD 活动。 |
搭建 CI/CD 的环境,以自动或者半自动方式开展 CI/CD 实践。 | |||
等级2 | CI/CD | 2.1.1.建设目标 | 建立 CI/CD 实践标准和规范,并保持更新。 |
标准先行,帮助研发团队规范 构建与集成 活动。 | |||
2.1.2.典型活动 | 梳理现有 CI/CD 规范标准; | ||
梳理现有 CI/CD 工具平台; | |||
确认 CI/CD 现状及问题; | |||
定义并发布 CI/CD 工程规范和分级标准。 | |||
CI/CD | 2.2.1.建设目标 | 建设自动化系统以支持 CI/CD 实践。 | |
持续建设、集成整合 CI/CD 实践所涉及的多个系统,包括但不限于:代管理(配置管理)系统、代码检查系统、编译构建系统、制品管理系统、自动化测试系统、部署变更系统、自动化流水线系统等,能够促进CI/CD 能力的提升。 | |||
2.2.2.典型活动 | 建设代码管理(配置管理)与变更评审系统; | ||
建设代码质量检测系统; | |||
建设编译构建系统; | |||
建设制品管理系统; | |||
建设自动化测试系统; | |||
建设部署变更系统; | |||
建设自动化流水线系统。 | |||
CI/CD 2.3 | 2.3.1.建设目标 | 依据标准规范,基于自动化系统在开发和交付中实现 CI/CD。 | |
统一标准且用统一的系统平台落地实施标准,能够保证标准能够被有效执行,也能够加快标准推广实施的速度。 | |||
2.3.2.典型活动 | 按照 CI/CD 规范标准使用系统平台开展 CI/CD 实践。 | ||
等级3 | CI/CD | 3.1.1建设目标 | 在组织标准的研发过程中融入 CI/CD 实践。 |
把 CI/CD 与研发过程的其他环节相结合,在研发流程中内嵌 CI/CD 实践,使得 CI/CD 成为研发流应执行的环节。且 CI实践宜在研发流程中多次执行,以保证研发流程各阶段的质量,保证软件持续保持在随时可以发布的状态。 | |||
3.1.2.典型活动 | 本地开发时随时 CI; | ||
代码提交至中央仓库前自动触发 CI | |||
分支合并前自动触发 CI; | |||
分支合并后自动触发 CI; | |||
CI 应通过后才能触发CD | |||
CI/CD | 3.2.1.建设目标 | 设定 CI/CD 准入标准。 | |
在项目进展过程中持续丰富 CI/CD内的检查项,不断提高 CI/CD 准入标准,进而提升软件产品或服务的质量。 | |||
3.2.2.典型活动 | 增加单元测试,并设置质量门禁; | ||
增加代码规范检查,并设置质量门禁 | |||
增加代码安全检查,并设置质量门禁 | |||
增加代码缺陷检查,并设置质量门禁 | |||
增加代码可维护性检查,并设置质量门禁、圈复杂度、注释率; | |||
增加代码重复度检查,并设置质量门禁; | |||
增加 P0自动化回归测试,并设置质量门禁; | |||
增加测试环境部署,开发人员可以自测功能; | |||
增加自动化回归测试,并设置质量门禁; | |||
增加制品安全扫描,并设置质量门禁; | |||
增加全量源码安全扫描,并设置质量门禁; | |||
增加服务安全扫描,并设置质量门禁; | |||
增加多种自动化测试类型,并设置质量门禁,如性能测试、压力测试、稳定性测试、异常测试、隐私合规测试、系统兼容性测试等; | |||
增加制品包管理规范,并设置质量门禁。 | |||
CI/CD | 3.3.1.建设目标 | 定期审视 CI/CD 过程和实践,提升工作效率 | |
解决 CI/CD 检查项增加所带来的自动化任务执行时间长、消耗资源多、系统不稳定等问题,以提升CI/CD自动化效率,保障软件开发的速度和质量 | |||
3.3.2.典型活动 | 审视当前 CI/CD 过程和实践; | ||
持续提升 CI/CD自动化效率。 | |||
CI/CD | 3.4.1.建设目标 | 定位CI/CD 失败问题并加以解决。 | |
运用各种技术、方法和工具,在 CI/CD 自动化任务失败的时候,快速定位和解决问题。 | |||
3.4.2.典型活动 | 区分并定义 CI/CD 失败问题类型。例如是程序问题还是 CI/CD 平台问题。 | ||
CI/CD 任务失败及时有效通知相关人员。 | |||
建设自动化构建系统。例如解决问题后可以不用完全重新执行整条流水。而是可以选择继续执行上次失败的流水线。 | |||
等级4 | CI/CD | 4.1.1.建设目标 | 使用统计和其他量化手段管理 CI/CD 过程。 |
开展CI/CD 效能度量,通过数据驱动 CI/CD 能力的持续提升应用统计方法找出CI/CD 过程瓶颈或问题并加以解决。 | |||
4.1.2.典型活动 | 建立研发大数据仓库,对接 CI/CD 平台,收集研发过程数据; | ||
根据 CI/CD 标准,制定度量实践过程和结果的指标; | |||
基于研发大数据仓库,开发度量指标并可视化; | |||
深入分析度量数据,持续运营 CI/CD 优秀实践。 |
三、CI/CD运维展望
CI/CD可实现更快的迭代速度、更高的软件质量和更高效的团队协作。同时CI/CD对运维发展和转变呈现以下趋势和方向:
1. 自动化程度的加深:随着技术的进步,CI/CD流程中的自动化不仅限于构建和部署,还扩展到了测试、配置管理、监控、日志分析等多个方面。自动化工具和平台的集成能力不断提升,减少人工干预,实现从代码提交到生产环境部署的端到端自动化。
2. 智能化运维(AIOps):结合人工智能和机器学习技术,AIOps能够自动分析海量运维数据,预测故障、优化资源分配、自动处理常见问题,从而提高运维效率和系统的稳定性。CI/CD流程与AIOps的融合,使得运维更加智能化、主动化。
3. 安全性集成:安全不再是事后考虑,而是被嵌入到整个CI/CD流程中,即DevSecOps,包括静态代码分析、动态应用安全测试、依赖项扫描等安全检查,确保每次部署都是经过安全验证的,减少安全漏洞的风险。
4. 容器化与微服务:容器技术和微服务架构的普及,极大促进了CI/CD的发展。容器标准化了应用的打包和部署,微服务则让系统更易于维护和快速迭代,两者结合使得CI/CD流程更加灵活高效。
6. 可观测性和监控:随着系统复杂性的增加,集成强大的可观测性和监控工具变得至关重要。这些工具能够提供实时的性能数据、异常检测和故障定位功能,确保快速响应问题,优化用户体验。
7. 文化与流程的变革:CI/CD不仅仅是技术的变革,更是文化和流程的转变。强调跨职能团队的合作,鼓励持续学习和实验文化,以及建立快速反馈和迭代的机制,是CI/CD成功实施的关键。
以可观测性工程和可靠性工程为例:
可观测性工程
基于CI/CD的可观测性工程是确保软件系统稳定运行、及时发现并解决问题的重要实践。可观测性工程关注于通过收集、分析和展示系统的指标、日志和跟踪数据,能够帮助团队在快速迭代的同时,保持对系统健康状况的精确掌握。体现在以下几个关键点:
1. 集成监控工具:在CI/CD流水线中集成监控和日志管理工具(如Prometheus、Grafana、ELK Stack等),确保新部署的服务或应用能够自动接入监控体系,及时生成并上报监控数据。
2. 日志与跟踪:配置应用以在每个CI/CD阶段生成详细的日志,包括构建、测试、部署等环节。利用分布式跟踪技术(如OpenTracing、OpenTelemetry)捕获服务间调用的完整链路,便于问题追踪和性能瓶颈分析。
3. 健康检查与就绪检查:在部署阶段自动执行健康检查和就绪检查,确保服务部署后即刻可被正确监控,并能迅速响应健康状态查询。这些检查可以是简单的HTTP请求,也可以是更复杂的逻辑判断。
4. 性能与负载测试:将性能测试和压力测试作为CI/CD的一部分,确保新版本在高负载下仍能稳定运行。通过工具(如JMeter、LoadRunner、Gatling)模拟真实用户场景,提前发现性能瓶颈。
5. 指标与阈值设定:定义关键性能指标(KPIs)和业务指标(如响应时间、成功率、吞吐量),并在监控系统中设定合理的报警阈值。当指标超出预设范围时,自动触发告警,及时通知相关人员。
6. 持续反馈与优化:建立闭环反馈机制,收集监控数据,分析部署后性能变化和用户反馈,定期回顾并优化CI/CD流程和可观测性策略,不断提升系统的稳定性和运维效率。
通过将可观测性工程深度融入CI/CD流程,团队可以更快地发现并解决问题,减少故障影响,同时提高开发和运维的效率,为持续交付高质量的软件产品奠定坚实的基础。
可靠性工程
基于CI/CD的可靠性工程是一种集成方法,旨在通过自动化和最佳实践确保软件系统在整个开发生命周期中的稳定性和可靠性。可靠性工程不仅关注于避免故障的发生,还包括了快速检测、隔离和恢复故障的能力。在CI/CD流程中实施可靠性工程主要涉及以下几个方面:
1. 自动化测试:在CI/CD流程中实施全面的自动化测试策略,包括单元测试、集成测试、端到端测试和性能测试,确保代码变更不会引入新的错误或降低系统稳定性。
2. 持续监控与日志管理:集成监控工具和日志管理系统,实现实时监控应用程序性能、资源使用情况和异常行为。这包括配置警报系统,以便在关键指标偏离正常范围时立即通知团队。
3. 混沌工程:通过混沌实验(如使用Chaos Toolkit、Gremlin等工具)故意引入故障,模拟真实世界中可能发生的各种故障场景,以评估系统的健壮性和恢复能力,并据此优化架构和配置。
4. 蓝绿部署/金丝雀发布:利用CI/CD工具支持的部署策略,如蓝绿部署或金丝雀发布,能够在不影响现有用户的情况下逐步推出新版本,快速回滚以减少故障影响范围。
5. 自愈能力:设计系统具备自我检测和自我修复能力,如自动重启故障服务、资源自动扩展、熔断机制等,减少人工干预,提高系统的稳定性。
6. 安全性集成:在CI/CD管道中集成安全扫描和漏洞检测,确保每次部署都经过安全审查,实现DevSecOps,提高系统的安全性,这也是可靠性的重要组成部分。
7. 故障恢复演练:定期进行故障恢复演练,验证灾难恢复计划的有效性,确保团队成员熟悉紧急情况下的操作流程,提高应对突发事件的能力。
8. 性能与稳定性测试:在部署前进行性能和稳定性测试,模拟高负载情况,确保系统在预期的最大负载下仍能稳定运行,优化资源配置,防止性能瓶颈。
9. 持续反馈与改进:建立一个反馈循环,收集生产环境中的数据和用户反馈,分析系统性能和稳定性,持续优化开发流程、测试策略和基础设施配置。
基于CI/CD的可靠性工程不仅增强了软件的可靠性,还缩短了故障恢复时间,提高了团队对复杂系统的管理能力,为用户提供更加稳定可靠的产品和服务。
四、总结
基于CI/CD的运维正朝着更加自动化、智能化、安全和高效的方向发展,在提升软件交付的质量和速度的同时拓宽了运维的技术视野,呈现出前所未有的广度和深度。未来的CI/CD下的运维将更加智能化、自动化、安全和可持续,以支持企业更快地创新,更稳定地运行,提高运维效率,降低运维成本,进一步提升软件交付的效率,最终提升业务价值和业务竞争力。
参考文献:
[1] GB/T 42560-2023 《系统与软件工程 开发运维一体化能力成熟度模型》,国家标准化管理委员会
[2]《2023年企业数字化转型技术发展趋势研究报告》,中国信通院
[3]《中国 DevOps 现状调查报告2023》,云计算产业联盟
[4]《DevOps IT 效能新基建》,顾黄亮
相关文章:

最佳实践:CI/CD交付模式下的运维展望丨IDCF
李洪锋 启迪万众数字技术(广州)有限公司 ,产品研发中心-系统运维部、研发效能(DevOps)工程师(中级)课程学员 一、DevOps现状 据云计算产业联盟《中国DevOps现状调查报告2023》显示,国内DevOps 落地成熟度…...

Flat Ads:开发者如何应对全球手游市场的洗牌与转型
2023年下半年至2024年上半年,中国手游的海外市场表现经历了显著变化,开发者要如何应对全球手游市场的洗牌与转型?本篇文章我们将结合相关行业白皮书的最新数据对中国手游出海表现进行分析与洞察。 一、中国手游海外市场表现 根据Sensor Tower《2024年海外手游市场洞察》最新…...

ai取名软件上哪找?一文揭秘5大ai取名生成器
在这个世界上,每一个新生命的到来都是一份奇迹,无论是一个新生儿的第一声啼哭,还是一只宠物的第一次摇尾巴,都充满了无限的希望和喜悦。 然而,给这个小生命起一个响亮、独特且富有意义的名字,往往让人煞费…...

ppt转换成pdf文件,这5个方法一键搞定!小白也能上手~
不管是工作上还是学习上,我们都会遇到转换文档格式的问题。比如常见的pdf转word,ppt转pdf,图片转pdf等。 很多软件都有自带的转换功能可以实现,但是需要保证转换后不乱码,且清晰度足够的方法还是少见的。本文整理了几个…...

中国每个软件创业者都是这个时代的“黑悟空”
作者 | 白鲸开源CEO 郭炜 我作为一个具有30游龄而20年都不碰游戏的游戏玩家,最近为了《黑神话:悟空》(简称,黑悟空),不但花重金更新了显卡,还第一次下载了Steam并绑定了支付,为的就是支持这个第…...

解决Qt多线程中fromRawData函数生成的QByteArray数据不一致问题
解决Qt多线程中fromRawData函数生成的QByteArray数据不一致问题 目录 🔔 问题背景📄 问题代码❓ 问题描述🩺 问题分析✔ 解决方案 🔔 问题背景 在开发一个使用Qt框架的多线程应用程序时,我们遇到了一个棘手的问题&…...

datax关于postsql数据增量迁移的问题
看官方文档是不支持的 数据源及同步方案_大数据开发治理平台 DataWorks(DataWorks)-阿里云帮助中心 (aliyun.com) 看了下源码有个postsqlwriter 看了下也就拼接sql 将 PostgresqlWriter中的不允许更新先注释了 让他过去先 然后看到 WriterUtil中的对应方法 getWriteTemplat…...

【Go】实现字符切片零拷贝开销转为字符串
package mainimport ("fmt""unsafe" )func main() {bytes : []byte("hello world")s : *(*string)(unsafe.Pointer(&bytes))fmt.Println(s)bytes[0] Hfmt.Println(s) }slice的底层结构是底层数组、len字段、cap字段。string的底层结构是底层…...
[sqlserver][sql]sqlserver查询执行过的历史sql
SQL是一个针对SQL Server数据库的查询执行过的历史 select * from (SELECT *FROM sys.dm_exec_query_stats QS CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) ST ) a where a.creation_time >2018-07-18 17:00:00 and charindex(delete from ckcdlist ,text)>0 an…...

python中n次方怎么表示
Python中的n次方用pow()方法来表示,pow()方法返回 xy(x的y次方)的值。 语法 以下是 math 模块 pow() 方法的语法: import math math.pow( x, y ) 内置的 pow() 方法 pow(x, y[, z]) 函数是计算x的y次方,如果z在存在&…...

Java数组怎么转List,Stream的基本方法使用教程
Stream流 Java 的 Stream 流操作是一种简洁而强大的处理集合数据的方式,允许对数据进行高效的操作,如过滤、映射、排序和聚合。Stream API 于 Java 8 引入,极大地简化了对集合(如 List、Set)等数据的处理。 一、创建 Stream 从集合创建: List<String> list = Ar…...
2024-07-12 - 基于 sealos 部署高可用 K8S 管理系统
摘要 Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。它以云原生的方式,抛弃了传统的云计算架构,转向以 Kubernetes 为云内核的新架构,使企业能够像使用个人电脑一样简单地使用云。 操作实践 1、服务器规划 kubernetes集群大体上…...

Ps:首选项 - 单位与标尺
Ps菜单:编辑/首选项 Edit/Preferences 快捷键:Ctrl K Photoshop 首选项中的“单位与标尺” Units & Rulers选项卡允许用户根据工作需求定制 Photoshop 的测量单位和标尺显示方式。这对于保持工作的一致性和精确性,尤其是在跨设备或跨平台…...

DiskDigger(文件恢复工具) v2.0.3 中文授权版
DiskDigger中文版是一款实用文件恢复工具,它能从任何媒介中恢复误删除的文件。支持硬盘、USB 闪存盘、闪存卡(SD/CF/MMS)、CD、DVD 和软盘等。支持恢复任何格式的文件。DiskDigger 能彻底的扫描每个扇区来跟踪文件,从而最大限度恢复挽回文件信息。 软件…...

C/C++逆向:x96dbg(x64dbg/x86dbg)的使用
这篇文章主要来说一下x96dbg(x64/x86)的基本使用,这里还是使用上篇文章中的简单程序用来作为本篇文章的实例,因为上篇文章再生成程序时选用的解决方案平台为x86所以生成的程序则需要我们使用x32dbg来进行分析。 这边与IDA一样,我们可以将程序…...

超声波清洗机是智商税吗?专业博主分享四大必买超声波清洗机款式
有些人觉得超声波清洗机不过是个“智商税”,花几百块买个小盒子不值当,毕竟自己用手也能清洗。但这种看法过于片面。事实上,超声波清洗已经有几十年的历史,随着科技的发展,现代超声波清洗机不仅能够批量、自动清洁&…...

TIM输出比较
文章目录 前言一、TIM输出比较简介二、PWM简介2.1 PWM基本概念2.2 PWM参数2.3 PWM波形2.4 PWM基本结构2.5 PWM参数计算 三、舵机简介3.1 舵机的工作原理3.2 输入PWM信号的要求3.3 硬件电路 四、直流电机及驱动简介4.1 直流电机4.2 TB6612电机驱动芯片 前言 提示:本…...

JNPF 5.0升级钜惠,感恩回馈永远在路上
尊敬的JNPF用户们: 经过引迈团队数月的辛勤努力和不断的技术创新,JNPF快速开发平台迎来全新升级——5.0版本!此次5.0版本的迭代革新,不仅代表着我们技术实力的进一步提升,是我们对用户需求的深度理解和积极回应。为了…...

三维平面电磁铁、交流电磁铁、显微镜磁场北京大学方案
根据用户北京大学需求设计制造方案如下 三维平面电磁铁产品规格 5MPS63-25型三维平面电磁铁,X、Y方向磁场由2对正交的磁极产生,Z轴由一组同轴线圈产生; 每轴对应的两个线圈正接产生均匀磁场,反接产生梯度磁场; …...
awk引号转义问题
这是我在终端运行的脚本: for ib1 in $(seq 0 999);do ibstr$(printf sample52-%d $ib1);calculate_rmsd --reorder Motif52.pdb ${ibstr}.pdb | awk "{printf "%d %8f\n", $ib1, $0}" >> sample52_hotspots; done 但是报错: …...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...