先明确你的目标
容器场景 从 scratch 制作 CentOS 镜像
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 作为宿主编译 LFS
如何选择
| 目标 | 推荐做法 | 基础镜像/宿主 | 优点 | 注意点 |
|---|---|---|---|---|
| 容器化最小 CentOS 根文件系统 | FROM scratch + ADD centos- |
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
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 用户、下载源码、配置环境并编译
上述宿主目录与环境变量设置是 LFS 构建的标准起点。