[笔记] Docker 安装脚本分析

最近在研究 wsl 上安装 Docker ,查了一些资料找到官网提供的安装脚本,感觉比较有意思所以拿来分析一波:

  • https://get.docker.com

使用 curl 下载脚本

在介绍中有一个命令行用于下载该脚本:

curl -fsSL https://get.docker.com -o install-docker.sh
# -f/--fail 忽略报错,即发生错误时不报错
# -s 不显示下载进度条和报错信息
# -S 当使用 -s 模式时,-S 会在下载失败时会报错
# -L 当返回 30X 状态码时,跟随链接

安装命令 install-docker.sh

sh install-docker.sh --dry-run
# --dry-run 验证要执行的安装步骤而不实际执行脚本

在计算机领域中,--dry-run是一个常见的命令行参数或选项,用于执行模拟运行而不实际执行任何操作。它通常用于测试或验证操作的影响,以便在实际执行之前先了解结果。

当你在命令行中使用--dry-run选项时,系统会模拟执行命令或操作,显示将要执行的步骤和可能的结果,但不会真正执行这些步骤。这对于验证复杂的操作或检查潜在的问题非常有用,以便在实际操作之前进行调试或预览。

例如,假设你要删除一个目录及其所有子目录和文件,但你不确定删除操作是否会产生意外结果。你可以使用--dry-run选项运行删除命令,系统会显示将要删除的文件和目录列表,但不会实际删除它们。这样,你可以先检查列表,确保没有意外的文件将被删除,然后再决定是否执行真正的删除操作。

# 判断是否为 dry_run 模式
is_dry_run() {# 判断 DRY_RUN 变量是否存在,存在返回1,否则返回0[ -z $DRY_RUN ] && return 1 || return 0
}

具体调用逻辑:

if is_dry_run; thenreturn
fi
# 判断变量是否存在
[[ -z $DRY_RUN ]] && echo 'exists' || echo 'not exists'
# -z 用于判断字符串长度是否为0 , 当变量未设置时,默认即为空字符串
# 如果变量不存在,设置为空字符串,相当于什么也没做
DRY_RUN=${DRY_RUN:-}
# 如果变量不存在,设置为字符串hello
DRY_RUN=${DRY_RUN:-hello}
# 删除变量
unset $DRY_RUN

参考资料

  • shell 变量的默认值

设置脚本选项:

while [ $# -gt 0 ]; docase "$1" in--channel)CHANNEL="$2"shift;;--dry-run)DRY_RUN=1;;--mirror)mirror="$2"shift;;--version)VERSION="${2#v}"shift;;--*)echo "Illegal option $1";;esacshift $(( $# > 0 ? 1 : 0 ))
done

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能化工厂大屏监控

通过采集和整合工厂各个环节的数据,包括设备状态、生产进度、质量指标、能源消耗等,并将这些数据以图表、动画、报表等形式展示在大屏上。 智能化工厂大屏监控可以提供以下优势: 实时监控:通过大屏幕展示工厂各项数据&#xff0c…

分布式链路追踪(一)SkyWalking(1)介绍与安装

一、介绍 1、简介: 2、组成 以6.5.0为例,该版本下Skywalking主要分为oap、webapp和agent三部分,oap和webapp分别用于汇总数据和展示,这两块共同组成了Skywalking的平台;agent是探针,部署在需要收集数据的…

如何“使用Docker快速安装Jenkins,在CentOS7”?

1、运行 docker run -d --namejenkins -p 8080:8080 jenkins/jenkins 2、查看日志 ,使用 "docker logs -f jenkins",可以持续刷新日志 docker logs jenkins 3、通过命令查看密码 docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminP…

Spring框架----AOP全集

一:AOP概念的引入 首先我们来看一下登录的原理 如上图所示这是一个基本的登录原理图,但是如果我们想要在这个登录之上添加一些新的功能,比如权限校验 那么我们能想到的就有两种方法: ①:通过对源代码的修改实现 ②&a…

vim相关命令

vim 三种工作模式:命令模式、文本模式、末行模式 命令模式:通过vi hello.c 命令进入i a o 、I A O、 s S 可以切换到文本模式 ,写完后保存退出 o光标 回到下一行O光标回到上一行s删除当前字母S删除一整行A回到该行末尾处a光标回到下一个输入…

go语言操作etcd

首先在后台启动etcd 写一段go代码 package mainimport ("context""fmt"clientv3 "go.etcd.io/etcd/client/v3""time" )func main() {// 创建客户端,连接etcdcli, err : clientv3.New(clientv3.Config{Endpoints: []strin…

YOLOv5目标检测学习(5):源码解析之:推理部分dectet.py

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、导入相关包与路径、模块配置1.1 导入相关的python包1.2 获取当前文件的相对路径1.3 加载自定义模块1.4 总结 二、执行主体的main函数所以执行推理代码&…

手写超级好用的rabbitmq-spring-boot-start启动器

手写超级好用的rabbitmq-spring-boot-start启动器 文章目录 1.前言2.工程目录结构3.主要实现原理3.1spring.factories配置3.2EnableZlfRabbitMq配置3.3RabbitAutoConfiguration配置3.4ZlfRabbitMqRegistrar配置 4.总结 1.前言 由于springBoot官方提供的默认的rabbitMq自动装配不…

AI推介-大语言模型LLMs论文速览(arXiv方向):2024.03.05-2024.03.10—(2)

论文目录~ 1.Debiasing Large Visual Language Models2.Harnessing Multi-Role Capabilities of Large Language Models for Open-Domain Question Answering3.Towards a Psychology of Machines: Large Language Models Predict Human Memory4.Can we obtain significant succ…

Python代码操作PPT:PowerPoint演示文稿的合并与拆分

多个PowerPoint演示文稿的处理可能会成为非常麻烦的工作。有时需要将多个演示文稿合并为一个演示文稿,从而不用在演示时重复打开演示文稿;有时又需要将单个演示文稿拆分为多个演示文稿,用于其他目的或进行分发。手动进行这些操作会非常麻烦&a…

阿里云环境下,从仅知的一个外网域名如何找出前端程序的部署所在和启动命令

一、背景 一个年久失修的前端项目,临时接到需求要迭代,三四年未迭代过的项目,交接更无从谈起。 所幸的是,源码还在,知道外网访问的入口地址。 本文试着带你一起找到该前端项目部署在哪台机器,以及发布的过…

opencv的approxPolyDP函数

cv2.approxPolyDP() 是 OpenCV 库中的一个函数,用于逼近多边形曲线。它可以将一条曲线用更少的点来表示,同时尽可能地保持其形状。原来是使用Douglas-Peucker算法,表示曲线上的点与逼近后的多边形之间的最大距离d,若d小于epsilon&…

SpringCloudEureka理论与入门

文章目录 1. 前置工作1.1 搭建 user-server1.1.1 pom1.1.2 po,mapper,controller1.1.3 yml1.1.4 启动类1.1.5 启动并访问 1.2 搭建 order-server1.2.1 pom1.2.2 po mapper controller1.2.3 yml1.2.4 启动类1.2.5 启动并访问 1.3 两个服务通信 2. Eureka2…

【Swing】Java Swing实现省市区选择编辑器

【Swing】Java Swing实现省市区选择编辑器 1.需求描述2.需求实现3.效果展示 系统:Win10 JDK:1.8.0_351 IDEA:2022.3.3 1.需求描述 在公司的一个 Swing 的项目上需要实现一个选择省市区的编辑器,这还是第一次做这种编辑器&#xf…

开源办公系统CRM管理系统

基于ThinkPHP6 Layui MySQL的企业办公系统。集成系统设置、人事管理、消息管理、审批管理、日常办公、客户管理、合同管理、项目管理、财务管理、电销接口集成、在线签章等模块。系统简约,易于功能扩展,方便二次开发。 服务器运行环境要求 PHP > 7.…

Mybatis Plus + Spring 分包配置 ClickHouse 和 Mysql 双数据源

目录 一、背景 二、各个配置文件总览(文件位置因人而异) 2.1 DataSourceConfig 2.2 MybatisClickHouseConfig (ClickHouse 配置类) 2.3 MybatisMysqlConfig(Mysql 配置类) 2.4 application.propertie…

《C++游戏编程入门》第9章 高级类与动态内存:Game Lobby

《C游戏编程入门》第9章 高级类与动态内存:Game Lobby 9.1 使用聚合体09.critter_farm.cpp 9.2 使用友元函数与运算符重载09.friend_critter.cpp 9.3 动态分配内存09.heap.cpp 9.4 使用数据成员与堆09.heap_data_member.cpp 9.5 Game Lobby程序09.game_lobby.cpp 9.…

22.5 RabbitMQ

22.5 RabbitMQ 1. RabbitMQ1.1 概念上的组成1.2 使用消息队列的好处1.3 消息队列特性1.4 RabbitMQ特点1.5 RabbitMQ核心概念2. 安装Rabbitmq2.1 基于Linux安装3. RabbitMQ常用命令4. 后台管理4.1 开启Rabbitmq管理后台4.2 admin用户配置5. 实战案例5.1 依赖引入

《安富莱嵌入式周报》第334期:开源SEM扫描电子显微镜,自制编辑器并搭建嵌入式环境,免费产品设计审查服务,实用电子技术入门,USB资料汇总,UDS统一诊断

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1om411Z714/ 《安富莱嵌入式周报》第334期:开源SEM…

​【已解决】npm install​卡主不动的情况

使用 npm install 初始化前端项目时,会出现卡住不动的情况。原因是淘宝镜像源由原来的https://registry.npm.taobao.org 更换为下面这个: https://registry.npmmirror.com 直接在终端执行下面的指令即可: npm config set registry https://re…