温馨提示×

如何自定义CentOS Overlay环境

小樊
40
2026-01-10 17:49:14
栏目: 智能运维

自定义 CentOS Overlay 环境的实用路线

一、先明确你的目标

  • 容器场景:为 Docker/Containerd 定制可复用的 CentOS 基础镜像或镜像层(Dockerfile、commit)。
  • 虚拟化场景:基于 ISO/KVM/QEMU 制作自定义安装镜像(kickstart、无人值守安装)。
  • 主机/嵌入式场景:在 CentOS 主机上直接使用 OverlayFS 做只读根 + 可写层的联合挂载。
  • 容器网络场景:在 Docker 中创建 Overlay 网络 用于多主机/跨主机容器通信。

二、容器镜像定制 Dockerfile 路线(推荐)

  • 基本步骤
    1. 准备基础镜像(如 centos:7centos:stream)。
    2. 编写 Dockerfile:安装常用工具、设置 ENV/WORKDIR、暴露端口、定义 CMD/ENTRYPOINT
    3. 构建镜像:docker build -t mycentos:0.1 .
    4. 运行验证:docker run -it mycentos:0.1
  • 示例 Dockerfile
    FROM centos:7
    MAINTAINER your_name@example.com
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    RUN yum -y update && yum -y install -q \
        vim net-tools wget gcc-c++ pcre pcre-devel zlib zlib-devel \
        openssl openssl-devel patch bash-completion unzip zip && \
        yum clean all
    EXPOSE 80
    CMD ["/bin/bash"]
    
  • 需要 SSH 的场景
    • 在 Dockerfile 中安装并启用 openssh-server,设置 root 密码或 SSH 密钥,并暴露 22 端口;或采用“特权容器 + systemd”方式运行(示例:docker run -d --name centos7-ssh --privileged -p 9022:22 centos:7 /usr/sbin/init,容器内 yum install -y openssh-server && systemctl enable --now sshd)。注意生产环境不建议开启 root 密码登录,优先密钥认证。

三、ISO 与 KVM 定制安装镜像(无人值守)

  • 基本步骤
    1. 下载 CentOS ISO(如 CentOS-7-x86_64-Minimal)。
    2. 挂载 ISO 并拷贝到工作目录:mount -o loop CentOS-7.iso /mnt && cp -a /mnt /root/centos7_iso
    3. 准备 kickstart 文件(ks.cfg),定制分区、包组、用户、post 脚本等。
    4. 重新打包 ISO(示例使用 genisoimage):
      mkisofs -o custom-centos.iso \
        -b isolinux/isolinux.bin -c isolinux/boot.cat \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        -R -J -v -T /root/centos7_iso
      
    5. 使用 virt-install 创建虚拟机(示例):
      qemu-img create -f qcow2 /opt/image/centos_7_9_x64_minimal.qcow2 20G
      virt-install --name centos7-custom --ram 2048 --vcpus 2 \
        --os-variant centos7 --arch x86_64 \
        --network network=default,model=virtio \
        --disk path=/opt/image/centos_7_9_x64_minimal.qcow2,format=qcow2,size=20 \
        --cdrom /opt/image/custom-centos.iso \
        --graphics vnc,listen=0.0.0.0,port=8888 \
        --console pty,target_type=serial
      
  • 适用场景:批量装机、预置系统镜像、内网离线环境标准化交付。

四、主机层 OverlayFS 联合挂载(只读根 + 可写层)

  • 基本步骤
    1. 准备目录:/var/lib/overlayfs/{lower,upper,work,merged}(lower 为只读基础,upper 为可写层,work 为工作目录)。
    2. 挂载 OverlayFS:
      sudo mount -t overlay overlay \
        -o lowerdir=/var/lib/overlayfs/lower,\
            upperdir=/var/lib/overlayfs/upper,\
            workdir=/var/lib/overlayfs/work \
        /var/lib/overlayfs/merged
      
    3. 持久化:将挂载写入 /etc/fstab,例如:
      overlay /var/lib/overlayfs/merged overlay \
        lowerdir=/var/lib/overlayfs/lower,upperdir=/var/lib/overlayfs/upper,workdir=/var/lib/overlayfs/work 0 0
      
  • 提示:可用于 LiveCD/嵌入式/实验环境;确保 lower 为只读、避免在生产根分区误用导致数据不可控。

五、Docker 容器 Overlay 网络(多主机通信)

  • 基本步骤
    1. 创建覆盖网络:docker network create -d overlay my_overlay
    2. 启动容器加入网络:docker run -d --name app1 --network my_overlay nginx
    3. 验证:docker network lsdocker network inspect my_overlay
    4. 变更后重启相关服务(如 dockercontainerd)并再次验证网络连通性。
  • 适用场景:Swarm/多主机容器编排、服务发现与隔离。

0