本文档大部分内容过期, 仅供参考 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)

  1. 使用 Git 命令拉取到指定文件夹, 确保目标文件夹最起码有5G 以上存储空间

    1. git clone https://gitee.com/lwmacct/web-vscode-kickstart.git /data/docker-data/vscode
  2. 使用 vscode 运行这份代码

Docker 运行 WEB 在线编辑器 VScode

web vscode 编辑器安装构建所需工具

  1. __install_tools() {
  2. apt update
  3. apt install -y createrepo mkisofs isomd5sum squashfs-tools
  4. }
  5. __install_tools

image.png

下载 CentOS7 ISO 并解压到指定目录

方式有很多,不必照着来,相当于下载一个 iso ,挂载并复制该iso内的文件到指定目录

  1. __download() {
  2. mkdir -p /config/workspace/iso/
  3. 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
  4. }
  5. __download
  6. __release() {
  7. # 挂载时报错 "mount: /mnt: failed to setup loop device for" 重启 vscode 容器再执行一次
  8. mount /config/workspace/iso/CentOS-7-x86_64-Minimal-2009.iso /mnt
  9. mkdir -p /config/workspace/kickstart/mkisofs
  10. cp -rf /mnt/* /config/workspace/kickstart/mkisofs
  11. }
  12. __release

开始构建

image.png

要构建其它镜像可将 bulid 目录下的 docker-ce, 在同级目录复制一份进行修改,并构建
以上操作仅作为构建示例

自定义构建 CentOS iso 镜像

在上面的步骤中, 已经能成功构建一个ISO安装好就有Docker 的 ISO 镜像, 但你可能不知道类似 Docker 的 RPM 包是怎么来了, 下面的步骤,会解答出这个问题
image.png
将这个文件夹删掉, 下面的步骤会将 Docker 的软件包以及依赖重新下载回来

在和 vscode 编辑器的同一个宿主机上运行一个centos:7.9 的容器,用于下载离线应用 rpm
这个容器,将 vscode 编辑器路径 kickstart/mkisofs/rpm 挂载到 centos 容器

  1. # 宿主机命令行模式
  2. nsenter --mount=/host/1/ns/mnt
  1. __run_centos() {
  2. docker rm -f centos
  3. docker run -itd --name=centos \
  4. --hostname=code \
  5. --restart=always \
  6. --privileged=true \
  7. --net=host \
  8. -v /proc:/host \
  9. -v /data/docker-data/vscode/workspace/kickstart/bulid/docker-ce/res/rpm/:/rpm \
  10. centos:7.9.2009
  11. }
  12. __run_centos
  1. docker exec -it centos bash

image.png

进入容器内部 下载想要预装的应用PRM包

安装 RPM 下载工具 yum-plugin-downloadonly

  1. yum install -y yum-plugin-downloadonly -y

image.png

下载Docker-ce 包

  1. __download_docker() {
  2. yum install -y yum-utils device-mapper-persistent-data lvm2
  3. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
  5. curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  6. yum makecache fast
  7. yum install --downloadonly --downloaddir=/rpm/docker-ce docker-ce yum-utils device-mapper-persistent-data lvm2
  8. }
  9. __download_docker

以上命令执行完成后,之前被删掉的docker-ce 目录又回来了

部分细节

安装选项也的配置文件设置

文件 /config/workspace/mkisofs/bulid/isolinux/isolinux.cfg
68 行将默认选项加 # 号注释掉
image.png

image.png

  1. label linux
  2. menu label ^Install CentOS 7 To first disk
  3. menu default
  4. kernel vmlinuz
  5. append initrd=initrd.img ks=cdrom:/res/fcg/install-ks-first-disk.cfg
  6. label linux
  7. menu label ^Install CentOS 7 To small disk
  8. kernel vmlinuz
  9. append initrd=initrd.img ks=cdrom:/res/fcg/install-ks-small-disk.cfg