本文档大部分内容过期, 仅供参考 2022-3-31 23:42:54
简介
使用 kickstart 构建 一个CentOS ISO, 可预装任意软件, 做大量的系统预配置,满足业务场景
kickstart 可做到无人值守安装, 无需在装系统时做大量设置
最主要解决系统安装后无外网安装应用的难题
本文仅示范构建一个ISO 装好就有 Docker 的CentOS ,其大量代码思路需要慢慢咀嚼
基本使用
环境准备
https://gitee.com/lwmacct/web-vscode-kickstart
https://github.com/lwmacct/web-vscode-kickstart
[
](https://gitee.com/lwmacct/web-vscode-kickstart.git)
使用 Git 命令拉取到指定文件夹, 确保目标文件夹最起码有5G 以上存储空间
git clone https://gitee.com/lwmacct/web-vscode-kickstart.git /data/docker-data/vscode
使用 vscode 运行这份代码
web vscode 编辑器安装构建所需工具
__install_tools() {
apt update
apt install -y createrepo mkisofs isomd5sum squashfs-tools
}
__install_tools
下载 CentOS7 ISO 并解压到指定目录
方式有很多,不必照着来,相当于下载一个 iso ,挂载并复制该iso内的文件到指定目录
__download() {
mkdir -p /config/workspace/iso/
curl -o /config/workspace/iso/CentOS-7-x86_64-Minimal-2009.iso https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
}
__download
__release() {
# 挂载时报错 "mount: /mnt: failed to setup loop device for" 重启 vscode 容器再执行一次
mount /config/workspace/iso/CentOS-7-x86_64-Minimal-2009.iso /mnt
mkdir -p /config/workspace/kickstart/mkisofs
cp -rf /mnt/* /config/workspace/kickstart/mkisofs
}
__release
开始构建
要构建其它镜像可将 bulid 目录下的 docker-ce, 在同级目录复制一份进行修改,并构建
以上操作仅作为构建示例
自定义构建 CentOS iso 镜像
在上面的步骤中, 已经能成功构建一个ISO安装好就有Docker 的 ISO 镜像, 但你可能不知道类似 Docker 的 RPM 包是怎么来了, 下面的步骤,会解答出这个问题
将这个文件夹删掉, 下面的步骤会将 Docker 的软件包以及依赖重新下载回来
在和 vscode 编辑器的同一个宿主机上运行一个centos:7.9 的容器,用于下载离线应用 rpm
这个容器,将 vscode 编辑器路径 kickstart/mkisofs/rpm
挂载到 centos 容器
# 宿主机命令行模式
nsenter --mount=/host/1/ns/mnt
__run_centos() {
docker rm -f centos
docker run -itd --name=centos \
--hostname=code \
--restart=always \
--privileged=true \
--net=host \
-v /proc:/host \
-v /data/docker-data/vscode/workspace/kickstart/bulid/docker-ce/res/rpm/:/rpm \
centos:7.9.2009
}
__run_centos
docker exec -it centos bash
进入容器内部 下载想要预装的应用PRM包
安装 RPM 下载工具 yum-plugin-downloadonly
yum install -y yum-plugin-downloadonly -y
下载Docker-ce 包
__download_docker() {
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache fast
yum install --downloadonly --downloaddir=/rpm/docker-ce docker-ce yum-utils device-mapper-persistent-data lvm2
}
__download_docker
以上命令执行完成后,之前被删掉的docker-ce 目录又回来了
部分细节
安装选项也的配置文件设置
文件 /config/workspace/mkisofs/bulid/isolinux/isolinux.cfg
68 行将默认选项加 # 号注释掉
label linux
menu label ^Install CentOS 7 To first disk
menu default
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/res/fcg/install-ks-first-disk.cfg
label linux
menu label ^Install CentOS 7 To small disk
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/res/fcg/install-ks-small-disk.cfg