当前位置: 首页 > news >正文

自定义shell工具函数之pull_image()

这是一个名为pull_image的Shell脚本函数。让我来解释一下这个函数的功能:

function pull_image() {image=$1DOCKER_IMAGE_MIRROR=$(get_config_or_env 'DOCKER_IMAGE_MIRROR')if [[ "${DOCKER_IMAGE_MIRROR}" == "1" ]]; thenif [[ "$(uname -m)" == "x86_64" ]]; thenDOCKER_IMAGE_PREFIX="swr.cn-north-1.myhuaweicloud.com"fiif [[ "$(uname -m)" == "aarch64" ]]; thenDOCKER_IMAGE_PREFIX="swr.cn-north-4.myhuaweicloud.com"fiif [[ "$(uname -m)" == "loongarch64" ]]; thenDOCKER_IMAGE_PREFIX="swr.cn-southwest-2.myhuaweicloud.com"fielseDOCKER_IMAGE_PREFIX=$(get_config_or_env 'DOCKER_IMAGE_PREFIX')fiIMAGE_PULL_POLICY=$(get_config_or_env 'IMAGE_PULL_POLICY')if docker image inspect -f '{{ .Id }}' "$image" &> /dev/null; thenexits=0elseexits=1fiif [[ "$exits" == "0" && "$IMAGE_PULL_POLICY" != "Always" ]]; thenecho "[${image}] exist, pass"returnfiecho "[${image}] pulling"if [[ -n "${DOCKER_IMAGE_PREFIX}" && $(image_has_prefix "${image}") == "0" ]]; thendocker pull "${DOCKER_IMAGE_PREFIX}/${image}"docker tag "${DOCKER_IMAGE_PREFIX}/${image}" "${image}"docker rmi -f "${DOCKER_IMAGE_PREFIX}/${image}"elsedocker pull "${image}"fiecho ""
}

这个函数的功能是:

  1. 获取传入的镜像名称,并存储在image变量中。
  2. 获取DOCKER_IMAGE_MIRROR的配置或环境变量,并根据其值设置DOCKER_IMAGE_PREFIX变量。
  3. 获取IMAGE_PULL_POLICY的配置或环境变量。
  4. 使用docker image inspect命令检查镜像是否存在,如果存在则将exits设置为0,否则设置为1。
  5. 如果镜像存在且IMAGE_PULL_POLICY不等于"Always",则打印消息并返回。
  6. 如果需要拉取镜像,则根据DOCKER_IMAGE_PREFIX的值执行docker pull命令,并进行相应的标记和删除操作。
  7. 最后打印空行。

总体来说,这个函数的作用是根据配置和环境变量的设置来拉取镜像,并根据需要进行相应的操作。

相关文章:

自定义shell工具函数之pull_image()

这是一个名为pull_image的Shell脚本函数。让我来解释一下这个函数的功能: function pull_image() {image$1DOCKER_IMAGE_MIRROR$(get_config_or_env DOCKER_IMAGE_MIRROR)if [[ "${DOCKER_IMAGE_MIRROR}" "1" ]]; thenif [[ "$(uname -m…...

2019年认证杯SPSSPRO杯数学建模C题(第二阶段)保险业的数字化变革全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 基于统计建模的车险业数字变革研究 C题 保险业的数字化变革 原题再现: 车险,即机动车辆保险。保险自身是一种分散风险、消化损失的经济补偿制度,车险即为分散机动车辆在行驶过程中可能发作的未知风险和损失…...

【数据结构和算法】反转链表

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:迭代(双指针) 2.2 方法二:递归 三、代码 3.…...

What is `GenericFilterBean` does?

GenericFilterBean 是 SpringWeb 框架中提供的一个抽象基类,其对 javax.servlet.Filter接口进行了封装和扩展,它简化了在 Servlet环境下创建自定义过滤器的工作。 GenericFilterBean 主要特点包括: 集成 Spring 容器: 由于它是一…...

突破通胀风险,聚焦现货黄金投资机遇

随着全球经济不断发展和金融市场的波动,通胀风险成为各界关注的焦点。在面对通胀带来的财务压力和资产贬值的威胁时,投资者都在寻找稳定且可靠的避险资产。而现货黄金作为一种值得瞩目的投资工具,正吸引着越来越多投资者的目光。 黄金作为一种…...

Jenkins集成Sonar Qube

下载插件 重启Jenkins 容器 sonarqube 使用令牌 Jenkins 配置 重新构建...

Angular系列教程之zone.js和NgZone

文章目录 什么是zone.jsZone的工作原理Zone的常见用途NgZone:Angular中的zone.js使用NgZone使用NgZone执行代码使用NgZone外部检测 结论 什么是zone.js 在Angular中,zone.js是一个非常重要的库,它为我们提供了一种跟踪和管理异步操作的机制。…...

阿里巴巴的第二代通义千问可能即将发布:Qwen2相关信息已经提交HuggingFace官方的transformers库

本文来自DataLearnerAI官方网站:阿里巴巴的第二代通义千问可能即将发布:Qwen2相关信息已经提交HuggingFace官方的transformers库 | 数据学习者官方网站(Datalearner) 通义千问是阿里巴巴开源的一系列大语言模型。Qwen系列大模型最高参数量720亿&#xf…...

肯尼斯·里科《C和指针》第6章 指针(6)编程的练习:查找字符

1.编写一个函数,它在一个字符串中进行搜索,查找在一个给定字符集合中出现的所有字符。这个函数的原型如下: char *find_char( char const *source, char const *chars ); 它的基本想法是查找source字符串中匹配chars字符串中任何字符的第1个…...

Entity Framework知识点整理

Entity Framework Entity Framework(EF)是微软提供的一种对象关系映射(Object-Relational Mapping,ORM)框架,用于在.NET应用程序和关系型数据库之间建立映射关系。它简化了数据访问层的开发,使…...

源码搭建教学:连锁餐饮APP开发实战

连锁餐饮APP,对于很多从事餐饮行业的人来说不会陌生,同样这个项目本身就有着很高的热度。今天,小编将深入为大家讲述一下此系统的前后端开发、数据库设计、用户界面设计等方面,让您深入了解全栈开发的方方面面。 一、项目准备与规…...

使用JavaScript实现一个在线画板

一、引言 随着Web技术的发展,网页上的交互性变得越来越重要。一个在线画板是一个很好的例子,它允许用户在网页上自由创作。在这篇博客中,我们将使用HTML5的Canvas元素和JavaScript来实现一个简单的在线画板 二、HTML结构 首先,…...

微信小程序如何自定义导航栏,怎么确定导航栏及状态栏的高度?导航栏被刘海、信号图标给覆盖了怎么办?

声明:本文为了演示效果,颜色采用的比较显眼,可根据实际情况修改颜色 问题描述 当我们在JSON中将navigationStyle设置成custom后,当前页面的顶部导航栏就需要我们制作了,但出现了一下几个问题: 导航栏的高…...

Spring Boot “How-to“ 指南中文文档-上

本文为官方文档直译版本。原文链接 篇幅较长,遂分两篇 Spring Boot "How-to" 指南中文文档-上 引言Spring Boot Application创建自己的FailureAnalyzer(故障分析器)自动配置故障诊断启动前自定义环境或应用程序上下文构建 Applicat…...

快速了解spring boot中的@idempotent注解

目的:一定时间内,同样的请求(业务参数相同)访问同一个接口,则只能成功一次,其余被拒绝 幂等实现原理就是利用AOP面向切面编程,在执行业务逻辑之前插入一个方法,生成一个token,存入redis并插入到…...

【手把手带你玩转MyBatis】基础篇:挥洒自如的Java接口与注解

目录 1. MyBatis接口与Mapper接口 2. 注解属性解析 3. 使用接口实现数据访问 内容: 在MyBatis框架中,除了传统的XML映射文件方式之外,还支持使用Java接口和注解进行SQL映射。这种方式简化了开发流程,使得代码更简洁、直观&a…...

uniapp中u-switch子组件点击触发到父组件(阻止事件冒泡)

解决方法&#xff1a;在u-switch 外面包一个view标签&#xff0c;并使用tap.stop.prevent 可以阻止事件冒泡 .stop 阻止事件继续传播到父元素&#xff0c;prevent阻止事件默认行为 <view tap.stop.prevent><u-switch v-model"val_switch" change"cha…...

2024“华数杯”(A题)|放射性废水扩散|国际大学生数学建模竞赛建模解析,小鹿学长带队指引全代码文章与思路

我是小鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 完整内容可以在文章末尾领取&#xff01; 这回带大家体验一下2024“华数杯”国际大学生数学建模竞赛呀&#xff01; 此题涉及到放射性废水从日本排放…...

EtherCAT主站SOEM -- 16 --Qt-Soem通过界面按键控制电机转圈圈PV模式

EtherCAT主站SOEM -- 16 --Qt-Soem通过界面按键控制电机转圈圈 0 QT-SOEM视频预览及源代码下载:0.1 QT-SOEM视频预览0.2 QT-SOEM源代码下载1 程序文件修改替换1.1 allvalue.h1.2 motrorcontrol.h1.3 mainwindow.cpp1.4 motrorcontrol.cpp2 ui界面显示该文档修改记录:总结上下…...

芯品荟 | 电脑机箱键盘副屏市场调研报告

一.产品简介 1.带TFT彩屏电脑机箱 2.带小TFT彩屏电脑键盘 为什么电脑机箱&键盘&#xff0c;要带屏&#xff1f; 带屏的电脑机箱&键盘客户群体? 电竞玩家、设计师、电子发烧友、股民...... 二、市场规模 中国电脑机箱年产量约6000万台&#xff0c;键盘年产量约3亿…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...