centos fromscratch用什么好
导读:先明确你的目标 若你是想在容器里“从零”做一个只包含 CentOS 根文件系统的镜像,常用做法是:基于 Docker 的 scratch 空镜像,直接把 centos--docker.tar.xz 的根文件系统解压进去,再设置入口命令(如...
先明确你的目标
- 若你是想在容器里“从零”做一个只包含 CentOS 根文件系统的镜像,常用做法是:基于 Docker 的 scratch 空镜像,直接把 centos--docker.tar.xz 的根文件系统解压进去,再设置入口命令(如 /bin/bash)。这是官方与社区镜像的典型做法,镜像体积小、可控性强。示例 Dockerfile 与目录结构可参考下述实践。
- 若你是想真正“从源码构建”一套可用的 Linux 系统(即 Linux From Scratch,LFS),则不是用 CentOS 做最终系统,而是把 CentOS 作为宿主系统来编译 LFS 工具链与目标系统,最终得到你自己的发行版。LFS 官方提供宿主系统需求与逐步指引,适合深入学习与定制。
容器场景 从 scratch 制作 CentOS 镜像
- 核心思路
- 使用 FROM scratch,通过 ADD 把已准备好的 centos--docker.tar.xz 根文件系统解压到镜像根目录,再以 CMD [“/bin/bash”] 或所需命令作为入口。该方式是制作最小化 CentOS 基础镜像的通用路径。
- 最小可用示例
- Dockerfile
FROM scratch ADD centos-7-x86_64-docker.tar.xz / LABEL org.opencontainers.image.vendor="CentOS" \ org.opencontainers.image.licenses="GPL-2.0-only" \ org.opencontainers.image.created="2020-11-13T00:00:00Z" CMD ["/bin/bash"] - 构建与运行
docker build -t my-centos:7 . docker run -it --rm my-centos:7 - 说明
- 官方/上游的 centos:7 基础镜像非常精简,默认不包含 ifconfig、vim 等工具;如需常用命令,可在你的镜像中基于该基础层安装(例如在 FROM centos 的 Dockerfile 中 RUN yum 安装)。
- Dockerfile
- 适用场景
- 需要最小化、可控的根文件系统;CI/CD 中快速起干净环境;离线分发时携带所需依赖。
系统构建场景 用 CentOS 作为宿主编译 LFS
- 推荐宿主环境
- 选择稳定、长期支持的 CentOS 7/8 虚拟机或物理机;为编译过程准备充足资源。实践中常见配置为 8 核 CPU、8 GB 内存(在虚拟机中更易满足与稳定)。
- 关键准备
- 规划并挂载构建目录(如 /mnt/lfs),设置 $LFS 环境变量,创建 $LFS/sources 与 $LFS/tools 等工作目录;按 LFS 指引准备构建用户与工具链环境。
- 时间与耐心
- 完整构建通常耗时较长,常见为 数天级别(视硬件与网络而定),需严格按步骤与版本要求执行。
- 适用场景
- 教学与学习 Linux 构建原理;打造极简或高度定制化的发行版;对系统每一层进行审计与裁剪。
如何选择
| 目标 | 推荐做法 | 基础镜像/宿主 | 优点 | 注意点 |
|---|---|---|---|---|
| 容器化最小 CentOS 根文件系统 | FROM scratch + ADD centos--docker.tar.xz | scratch | 体积极小、可定制、易分发 | 需自行补充常用工具与配置 |
| 从源码构建自己的 Linux | 以 CentOS 为宿主,按 LFS 构建 | CentOS 7/8 虚拟机 | 深度可控、可学习系统原理 | 构建时间长、步骤严格、需充足资源 |
快速上手命令清单
- 容器方式(示例)
# 假设当前目录有 centos-7-x86_64-docker.tar.xz cat > Dockerfile < < 'EOF' FROM scratch ADD centos-7-x86_64-docker.tar.xz / CMD ["/bin/bash"] EOF docker build -t my-centos:7 . docker run -it --rm my-centos:7 - LFS 宿主准备(示例)
上述宿主目录与环境变量设置是 LFS 构建的标准起点。sudo mkdir -p /mnt/lfs sudo mount /dev/sdX /mnt/lfs # 替换为你的实际分区 echo 'export LFS=/mnt/lfs' | sudo tee -a /etc/profile source /etc/profile mkdir -pv $LFS/{ sources,tools} chmod -v a+wt $LFS/sources # 后续按 LFS 文档创建 lfs 用户、下载源码、配置环境并编译
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos fromscratch用什么好
本文地址: https://pptw.com/jishu/761241.html
