基于PXE与NFS共享的Ubuntu安装配置过程
假设存在服务器A、B、C
其中A为待装系统的服务器,DHCP(IP池:192.168.0.150~192.168.0.160),假设需要安装的系统为Ubuntu 22.04 Desktop
其中B为PXE服务端服务器,IP: 192.168.0.100,这里将以CentOS系统进行说明
其中C为NFS所在服务器,IP: 192.168.1.101
PXE的基本原理
PXE 基本原理与启动流程
一、PXE 启动流程
1. 网卡准备:
设备 A 网卡的 PXE 功能模块就绪,这是启动的初始状态,为后续网络引导操作做好准备。
2. IP 申请:
设备 A 网卡通过 DHCP Client 向本网段广播,请求分配 IP 地址。此步骤确保设备 A 能接入网络,获得通信基础。
3. 配置下发:
DHCP Server 响应请求,为设备 A 下发 IP 地址,同时在 DHCP 报文中包含关键配置。其中 Option 66 用于指定引导文件名称,Option 67 用于指定引导文件所在设备 B 的 IP,为设备 A 指明引导资源位置。
4. 引导文件获取:
设备 A 获得 IP 及引导指向信息后,使用 TFTP 协议连接设备 B,读取并加载指定引导文件。例如常见的引导文件有 netboot 中的 pxelinux.0,加载该文件后,还会同时加载 pxelinux.0/default 的菜单配置文件,此配置文件将决定后续加载走向。
5. 内核与初始化磁盘加载:
依据菜单配置文件设定,设备 A 从 TFTP 服务器加载内核(vmlinuz)与初始化磁盘(intrd),为系统启动提供核心支撑。
6. 后续引导执行:
加载的内核依据不同参数执行不同操作。
- 可通过 http 协议加载引导指定 URL中的 ISO 文件,实现基于网络的系统镜像引导。
- 还能通过 NFS 协议加载引导指定的 NFS 目录(形式为设备 C 的 IP:/<NFS 共享路径>,这里的目录 要求是 ISO 文件通过 mount -o loop 在 NFS Server 上挂载后的映射目录),以适配不同网络存储的引导需求。
二、启动过程控制权移交过程
- 启动之初,系统控制权在 BIOS,它负责硬件初始化等基础操作。
- 随着 PXE 启动流程推进,控制权移交给 PXE ROM,PXE ROM 开始介入网络引导相关操作。
- 接着控制权转移至 pxelinux.0,由它进一步协调引导文件加载、配置读取等工作。
- 之后控制权到相对于 pxelinux.0 的 vmlinuz 与 intrd,此时开始为内核启动做准备,加载必要的内核与初始化磁盘。
- 最后控制权进入 ISO 中的 vmlinuz 与 intrd 或者 ISO 中指定的其他引导过程,完成系统的深度引导,直至系统启动完成。
配置过程
1. 修改DHCP Server配置
为DHCP服务端添加Option 66与Option 67配置项,66请设定为“pexlinux.0”(不含引号);67请设定为服务器B的IP地址
2. 搭建用于PXE启动的TFTP服务器(服务器B配置)
netboot.tar.gz下载地址:netboot.tar.gz
以下是在 CentOS 7.9 系统下,PXE 所在服务器的基本配置步骤:
a. 安装相关服务:
通过命令 yum install xinetd tftp-server -y 安装 xinetd 和 tftp-server。xinetd 是一种超级服务器,用于管理多种网络服务,TFTP 服务常用于 PXE 启动过程中的文件传输,安装这两个服务为后续 PXE 功能实现提供基础。
b. 配置 TFTP 服务:
使用 vim /etc/xinetd.d/tftp 编辑 tftp 服务配置文件,将 disable = yes 改为 disable = no,这一步是启用 TFTP 服务,使其能正常响应客户端的文件传输请求。
c. 服务管理操作:
依次执行以下命令:
systemctl daemon-reload # 重新加载 systemd 守护进程配置,确保新的服务配置生效。
systemctl reload xinetd # 重新加载 xinetd 服务,应用对其配置的更改,如 TFTP 服务的启用设置。
systemctl reload tftp # 同样重新加载 tftp 服务,保证服务状态更新。
systemctl -s enable xinetd # 作用是设置 xinetd 服务开机自启,确保服务器重启后 PXE 相关服务依然可用。
systemctl -s enable tftp # 设置 tftp 服务开机自启。
systemctl restart xinetd # 重启 xinetd 服务,让配置完全生效,启动相关网络服务监听。
systemctl restart tftp # 重启 tftp 服务,确保其以正确配置运行,准备好传输文件。
d. 准备引导文件:
将 netboot.tar.gz 放入 /var/lib/tftpboot 中,并解压缩:tar zxvf netboot.tar.gz。这些引导文件是 PXE 启动过程中客户端所需的基础文件,解压缩到指定目录以供后续访问。
e. 放置内核及初始化文件:
执行 mkdir /var/lib/tftpboot/ubuntu,创建用于存放 ubuntu 相关文件的目录,然后将 ubuntu 安装光盘镜像中的 casper/initrd 与 casper/vmlinuz 放入 /var/lib/tftpboot/ubuntu 中,文件名不变。这些内核与初始化文件是启动 ubuntu 系统的关键组件,放在指定位置供客户端加载。
f. 修改启动配置:
修改 /var/lib/tftpboot/ubuntu-installer/amd64/boot-screens/txt.cfg,将 Install 选项的内容改为:
kernel ubuntu/vmlinuzappend vga=768 initrd=ubuntu/initrd boot=casper root=/dev/ram0 ramdisk_size=1500000 netboot=nfs ro nfsroot=192.168.1.101:/mnt/iso ip=dhcp
这一步是定制启动参数,指定内核、初始化文件路径,设置网络启动方式(如通过 NFS)、根文件系统挂载点等,确保客户端能按预期启动系统。
其中192.168.1.101 为服务器C的IP地址。
g. 防火墙配置:
针对于服务器A:
- 放行UDP 69出站用于主动连接访问TFTP服务端
- 放行UDP 入站,用于被动接收TFTP服务端发来的文件数据流
针对与服务器B:
- 放行UDP 69入站,用于接受TFTP客户端的访问
- 放行UDP 出站,用于主动向TFTP客户端发送文件数据流
3. 搭建用于Ubuntu安装过程中的NFS共享并提供光盘镜像(服务器C配置)
搭建过程以CentOS 7.9环境进行举例
请自行准备好安装光盘ISO文件,这里假设文件名为ubuntu22.04.iso,所在路径为:/opt/media/ubuntu22.04.iso
a. 创建挂载目录:
通过命令 mkdir /mnt/iso 创建用于挂载目标目录。这个目录将作为后续挂载 iso 文件的挂载点,为共享资源提供存储位置。
b. 挂载 iso 文件:
执行 mount -o loop /opt/media/ubuntu22.04.iso /mnt/iso,将 iso 文件挂载到 /mnt/iso 路径下。这样操作后,iso 文件中的内容就可以像本地目录一样被访问,方便后续通过 NFS 进行共享。
c. 安装 NFS 组件:
使用 yum install nfs-common nfs-server nfs-utils -y 安装 NFS 服务端所需的各类组件。其中 nfs-common 提供了一些通用的 NFS 功能支持,nfs-server 是 NFS 服务的核心组件,负责提供共享服务,nfs-utils 包含了一些实用工具,它们协同工作,确保 NFS 服务能够正常运行。
d. 配置 NFS 共享:
用 vim /etc/exportfs 编辑配置文件,并插入一行:/mnt/iso (ro, all_squash)。这行配置表示将 /mnt/iso 目录以只读(ro)方式共享给所有客户端(),并且使用 all_squash 选项将所有用户的访问权限都压缩为匿名用户权限,这在一些安全要求较高或者统一权限管理的场景下较为常用,确保共享资源的访问可控。
e. 重载 NFS 共享配置:
执行 exportfs -rv,此命令用于重新加载 NFS 共享配置,使之前在 /etc/exportfs 中所做的配置更改生效,让客户端能够按照新配置访问共享资源。
f. 防火墙配置:
针对于服务器C:
- 放行TCP 协议与 UDP 协议的 2049 端口的入站
- 放行 rpcbind 相关的端口的入站
针对于服务器A:
- 放行TCP协议与UDP协议的2049端口的出站
- 放行rpcbind相关端口的出站
相关文章:
基于PXE与NFS共享的Ubuntu安装配置过程
假设存在服务器A、B、C 其中A为待装系统的服务器,DHCP(IP池:192.168.0.150~192.168.0.160),假设需要安装的系统为Ubuntu 22.04 Desktop 其中B为PXE服务端服务器,IP: 192.168.0.100,这里将以Cent…...
Dots 常用操作
游戏中有多个蚂蚁群落,每个蚂蚁属于一个群落,如何设计数据结构? 方法1:为蚂蚁组件添加一个属性 ID,会造成逻辑中大量分支语句,如果分支语句逻辑不平衡可能带来 Job 调度问题,每个蚂蚁会有一份蚂…...
力扣-图论-20【算法学习day.70】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
ModbusTCP从站转Profinet主站案例
一. 案例背景 在复杂的工业自动化场景中,企业常常会采用不同品牌的设备来构建生产系统。西门子SINAMICS G120变频器以其高性能、高精度的速度和转矩控制功能,在电机驱动领域应用广泛。施耐德M580可编程逻辑控制器则以强大的逻辑控制和数据处理能力著称&…...
Linux 线程池
1.概念介绍 线程池是一种多线程处理形式,它维护着多个线程,这些线程处于等待状态,随时准备接受任务并执行。线程池的主要目的是为了提高系统的性能和资源利用率,避免在处理短时间任务时频繁创建和销毁线程所带来的开销。 线程池…...
计算机视觉目标检测-1
文章目录 摘要Abstract1.目标检测任务描述1.1 目标检测分类算法1.2 目标定位的简单实现思路1.2.1 回归位置 2.R-CNN2.1 目标检测-Overfeat模型2.1.1 滑动窗口 2.2 目标检测-RCNN模型2.2.1 非极大抑制(NMS) 2.3 目标检测评价指标 3.SPPNet3.1 spatial pyr…...
2024最新鸿蒙开发面试题合集(一)-HarmonyOS NEXT Release(API 12 Release)
1. HarmonyOS应用打包后的文件扩展名是? 打包后的文件扩展名为.hap(HarmonyOS Ability Package),这是HarmonyOS应用的标准包格式 2. 页面和自定义组件生命周期有哪些? 页面和自定义组件生命周期说明 有Entry装饰器的component组件的生命…...
HarmonyOS NEXT 实战之元服务:静态案例效果--航空出行
背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: import { authentication } …...
详解 Python 中的json.loads和json.dumps方法:中英双语
中文版 详解 Python 中的 json.loads 和 json.dumps 方法 在 Python 的标准库中,json 模块用于处理 JSON 数据格式。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端交互以及数据存储。json.loads …...
成方金融科技后端部分笔试题 - 解析
单选题 1.以下关于JAVA自动类型转换,描述错误的是哪一项?(B) A.byte->short B.char->short C.char->int D.float->double 2.请选择运行以下代码后,系统显示的内容什么?(B) public class Test {static {int x1;}static int x,y;publ…...
互联网视频云平台EasyDSS无人机推流直播技术如何助力野生动植物保护工作?
在当今社会,随着科技的飞速发展,无人机技术已经广泛应用于各个领域,为我们的生活带来了诸多便利。而在动植物保护工作中,无人机的应用更是为这一领域注入了新的活力。EasyDSS,作为一款集视频处理、分发、存储于一体的综…...
Vue3 中使用axios
1.安装axios、js-cookie、pinia axios命令行: npm install axios js-cookie命令行: npm install js-cookie store命令行: npm install pinia 2.配置文件 (1)缓存文件配置 src/plugins/auth.js const sessionCache {set (key, valu…...
【JAVA高级篇教学】第五篇:OpenFeign 微服务调用注意事项
在微服务架构中,OpenFeign 是一种常用的 HTTP 客户端工具,用于实现服务之间的调用。它提供了声明式的接口调用方式,大幅简化了开发工作。然而,在实际使用中,需要注意一些细节,尤其是在处理 GET、POST 请求和…...
Llama 3 简介(一)
目录 1. 引言 1.1 Llama 3 的简介 1.2 性能评估 1.3 开源计划 1.4 多模态扩展 ps 1. 缩放法则 2. 超额训练(Over-training) 3. 计算训练预算 4. 如何逐步估算和确定最优模型? 2. 概述 2.1 Llama 3 语言模型开发两个主要阶段 2.2…...
路由器做WPAD、VPN、透明代理中之间一个
本文章将采用家中TP-Link路由器 路由器进行配置DNS DNS理解知识本文DNS描述参考:网络安全基础知识&中间件简单介绍_计算机网络中间件-CSDN博客 TP LINK未知的错误,错误编号:-22025 TP-LINK 认证界面地址:https://realnam…...
Xcode 16 编译弹窗问题、编译通过无法,编译通过打包等问题汇总
问题1:打包的过程中不断提示 :codesign 想要访问你的钥匙串中的密钥“develop 或者distribution 证书” 解决:打开钥匙串,点击证书---显示简介---信任----改为始终信任 (记住 :不能只修改钥匙的显示简介的…...
【编辑器扩展】打开持久化路径/缓存路径/DataPath/StreamingAssetsPath文件夹
代码 [MenuItem("Assets/Open Explorer/PersistentDataPath")]public static void OpenPersistentDataPath(){Application.OpenURL(Application.persistentDataPath);}[MenuItem("Assets/Open Explorer/DataPath")]public static void OpenDataPath(){Appl…...
shardingsphere分库分表项目实践1-让shardingsphere运行起来
学习新技术最快的方式就是: 1. 先找一个比较完善的demo跑起来 2. 弄清楚用法:配置、原理、使用场景 3. 移植到自己项目上,按照自己需求进行修改优化。 找demo项目的方法:优先去官方git库找,如果没有或者过于简单那么…...
Java预加载
预加载(Preload)是一种在程序运行之前预先加载所需资源或对象的优化技术,旨在提高程序的性能和响应速度。以下是对预加载的详细解释: 一、预加载的定义 预加载是指在程序实际运行之前,将预计会频繁使用的资源&#x…...
Vue3之状态管理Vuex
Vuex作为Vue.js的官方状态管理库,在大型或复杂的前端项目中扮演着至关重要的角色。本文将从Vuex的原理、特点、应用场景等多个方面进行深入解析,并通过代码示例展示如何在Vuex中实现特定功能。 一、Vuex原理 Vuex是一个专为Vue.js应用程序开发的状态管…...
优化 invite_codes 表的 SQL 创建语句
-- auto-generated definition create table invite_codes (id int auto_incrementprimary key,invite_code varchar(6) not null comment 邀请码,6位整数,确保在有效期内…...
ctfhub disable_functions关卡
1.CTFHub Bypass disable_function —— LD_PRELOAD 2.CTFHub Bypass disable_function —— ShellShock 3.CTFHub Bypass disable_function —— Apache Mod CGI 4.CTFHub Bypass disable_function —— 攻击PHP-FPM 5.CTFHub Bypass disable_function —— GC UAF 6.CTFHub B…...
Pikachu 漏洞练习平台 XXE漏洞学习记录
懒得自己搭建的可以直接FOFA找别人的靶场玩 FOFA "Pikachu 漏洞练习平台" 开始 随便输入个包含命名实体(内部实体)的xml数据(以下代码中xxe是命名实体的实体名称): <?xml version"1.0"?>…...
机器学习基础 衡量模型性能指标
目录 1 前言 编辑1.1 错误率(Error rate)&精度(Accuracy)&误差(Error): 1.2 过拟合(overfitting): 训练误差小,测试误差大 1.3 欠拟合(underfitting):训练误差大,测试误差大 1.4 MSE: 1.5 RMSE: 1.6 MAE: 1.7 R-S…...
C#—内建接口: IEnumerable与IEnumerator接口详解
IEnumerable接口 在C#中,IEnumerable 是一个泛型接口,它表示一个可以通过 IEnumerator 迭代器进行迭代枚举的集合。这个接口是非常基础且重要的,因为它允许开发者以一致的方式遍历任何实现了该接口的集合,无论是数组、列表、自定…...
java日志框架:slf4j、jul(java.util.logging)、 log4j、 logback
SLF4J--抽象接口 SLF4J (Simple Logging Facade for Java) 是一个为各种 Java 日志框架提供简单统一接口的库。它的主要目的是将应用程序代码与具体的日志实现解耦,使得在不修改应用程序代码的情况下,可以轻松地切换不同的日志框架。 jul-to-slft4j.ja…...
SpringBoot 事务
事务是一组操作的集合, 是一个不可分割的操作.会把所有的操作作为一个整体, 一起向数据库提交或者是撤销操作请求. 所以这组操作要么同时成功, 要么同时失败. 为什么需要事务? 我们在进行程序开发时, 也会有事务的需求. 比如转账操作: 第一步:A 账户 -100 元. …...
airflow docker 安装
mkdir -p /root/airflow cd /root/airflow && mkdir -p ./dags ./logs ./plugins ./configcd /root/airflow/ wget https://airflow.apache.org/docs/apache-airflow/2.10.4/docker-compose.yaml nano docker-compose.yamlAIRFLOW__CORE__LOAD_EXAMPLES: false #初始化…...
如何用gpt来分析链接里面的内容(比如分析论文链接)和分析包含多个文件中的一块代码
如何用gpt来分析链接里面的内容,方法如下 这里使用gpt4里面有一个网路的功能 点击搜索框下面这个地球的形状即可启动搜索网页模式 然后即可提出问题在搜索框里:发现正确识别和分析了链接里面的内容 链接如下:https://arxiv.org/pdf/2009.1…...
linux 常用 Linux 命令指南
常用 Linux 命令指南 以下是一些常用的 Linux 命令,分类并附带简单说明,适合日常操作和快速参考。 1. 文件与目录操作 ls: 列出当前目录下的文件和子目录ls -l # 显示详细信息 ls -a # 显示隐藏文件cd: 切换目录cd /path/to/directorypwd: 显示当前工作目录pwdmkdir: 创…...
《战神:诸神黄昏》游戏运行时提示找不到emp.dll怎么办?emp.dll丢失如何修复?
《战神:诸神黄昏》游戏运行时提示找不到emp.dll怎么办?emp.dll丢失的修复方法 在畅游《战神:诸神黄昏》这款史诗级游戏的过程中,如果突然遭遇“找不到emp.dll”的错误提示,无疑会打断你的冒险之旅。作为一名深耕软件开…...
PHP中替换某个包或某个类
在使用composer组件时,有时候需要对包进行一些自定义修改,有一些教程中写需要修改composer.json,然后发布到Packagist,但如果只是适应自己需求所作的小修改,其实并没有必要发布到Packagist,而这样做也是Pac…...
亚信安全春节14天双倍假期通告
亚信安全14天双倍假期来袭 “网安福利王”再次实至名归 2024年 8773小时,31582680秒 亚信安全一直驰骋于云网安世界 奋战在“安全 数智化”的壮阔征途上 如今,新春的脚步渐近 长达14天的春节长假 能让我们暂且放下忙碌的工作 去除班味,…...
kubernetes存储架构之PV controller源码解读
kubernetes存储之PV controller源码解读 摘要 本文介绍kubernetes存储架构的基础,并重点对PV controller的源码进行了学习 引入 从一个业务场景出发,假如你所在的公司,有个物理机,上面部署了web服务器,随着业务…...
Kubernates
kubernates是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 架构…...
1.使用 Couchbase 数仓和 Temporal(一个分布式任务调度和编排框架)实现每 5 分钟的增量任务
在使用 Couchbase 数仓和 Temporal(一个分布式任务调度和编排框架)实现每 5 分钟的增量任务时,可以按照以下步骤实现,同时需要注意关键点。 实现方案 1. 数据层设计(Couchbase 增量存储与标记) 在 Couchb…...
设计模式的主要分类是什么?请简要介绍每个分类的特点。
大家好,我是锋哥。今天分享关于【设计模式的主要分类是什么?请简要介绍每个分类的特点。】面试题。希望对大家有帮助; 设计模式的主要分类是什么?请简要介绍每个分类的特点。 1000道 互联网大厂Java工程师 精选面试题-Java资源分…...
Webpack学习笔记(5)
1.拆分开发环境和生产环境配置 很多配置在开发环境和生产环境存在不一致的情况,比如开发环境没有必要设置缓存,生产环境需要设置公共路径等等。 2.公共路径 使用publicPath配置项,可以通过它指定应用程序中所有资源的基础路径。 webpack.…...
Unity 6 中的新增功能
Unity 6 是 Unity 的最新版本。 一、编辑器和工作流程 Unity 6 中引入的更改 在 Linux 上实现了将文件和资源从 Unity 拖放到外部应用程序的功能。将 Asset Manager for Unity 包添加到 Package Manager > Services > Content Management 部分中。此包允许用户轻松浏览…...
【前端 Uniapp】使用Vant打造Uniapp项目(避坑版)
一、基本介绍 Uniapp 是基于 Vue.js 的开发框架,通过一套代码可以同时发布到多个平台的应用框架。而 Vant 是针对移动端 Vue.js 的组件库。通过这样的组合,我们可以快速构建出一个跨平台的移动应用。Vant 已经支持多种小程序和 H5 平台,也对…...
JVM 详解
一. JVM 内存区域的划分 1. 程序计数器 程序计数器是JVM中一块比较小的空间, 它保存下一条要执行的指令的地址. [注]: 与CPU的程序计数器不同, 这里的下一条指令不是二进制的机器语言, 而是Java字节码. 2. 栈 保存方法中的局部变量, 方法的形参, 方法之间的调用关系. 栈又…...
代码加入SFTP JAVA ---(小白篇3)
在 Java 中,您可以使用 JSch(Java Secure Channel)库 来连接和操作 SFTP 服务器。以下是一个完整的示例代码,展示如何使用 Java 接入 SFTP 服务器并上传文件。 1.服务器上加入SFTP------(小白篇 1) 2.加入SFTP 用户------(小白篇…...
机器人C++开源库The Robotics Library (RL)使用手册(一)
强大的、完整的C机器人开源库 1、是否可以免费商用?2、支持什么平台?3、下载地址4、开始! 1、是否可以免费商用? Robotics Library(RL)是一个独立的C库,用于机器人运动学、运动规划和控制。它涵…...
Linux高级--2.6 网络面试问题
tcp 与 udp的区别 1.tcp 是基于连接的 UDP是基于数据包 2.处理并发的方式不通 a.tcp用epoll进行监听的 b. udp是模拟tcp的连接过程,服务端开放一个IP端口,收到连接后,服务端用另一个IP和端口发包给客户端。 3.tcp根据协议MTU黏包及…...
HTML 画布:创意与技术的融合
HTML 画布:创意与技术的融合 HTML 画布(<canvas>)元素是现代网页设计中的一个强大工具,它为开发者提供了一个空白画布,可以在上面通过JavaScript绘制图形、图像和动画。这种技术不仅为网页增添了视觉吸引力,还极大地丰富了用户的交互体验。本文将深入探讨HTML画布…...
python EEGPT报错:Cannot cast ufunc ‘clip‘ output from dtype(‘float64‘)
今天在运行EEGPT的时候遇见了下面的问题,首先是nme报错,然后引起了numpy的报错: numpy.core._exceptions._UFuncOutputCastingError: Cannot cast ufunc clip output from dtype(float64)在网上找了好久的教程,但是没有找到。猜测…...
揭秘区块链隐私黑科技:零知识证明如何改变未来
文章目录 1. 引言:什么是零知识证明?2. 零知识证明的核心概念与三大属性2.1 完备性(Completeness)2.2 可靠性(Soundness)2.3 零知识性(Zero-Knowledge) 3. 零知识证明的工作原理4. 零…...
mysql之MHA
MHA 1.概述 MHA(Master High Availability)是一种用于MySQL数据库的高可用性解决方案,旨在实现自动故障切换和最小化数据丢失。它由MHA Manager和MHA Node组成,适用于一主多从的架构。 是建立在主从复制基础之上的故障切换的软件…...
《XML》教案 第2章 使第4章 呈现XML文档
《XML》教案 第2章 使第4章 呈现XML文档 主讲人: 回顾上一章: [10分钟] 2 课程知识点讲解: 2 通过级联样式表转换XML文档:[15分钟] 3 通过可扩展样式表语言转换XML文档 :[5分钟] 4 嵌套 for 循环 :[20分钟] 5 本章总结…...
Centos7离线安装Docker脚本
1、文件结构 docker_install/ ├── docker-27.4.1.tgz ├── docker-compose-linux-x86_64 └── docker_install.sh 2、下载docker安装包 wget https://download.docker.com/linux/static/stable/x86_64/docker-27.4.1.tgz 3、下载docker-compose wget https://githu…...