当前位置:首页 > Centos > 正文

Centos Buildah构建镜像(零基础入门:无需Docker也能轻松构建容器镜像)

在现代容器化开发中,很多人习惯使用 Docker 来构建镜像。但你是否知道,其实还有更轻量、更安全的替代方案?今天我们就来学习如何在 CentOS 系统上使用 Buildah 构建容器镜像——无需运行 Docker 守护进程,也能高效完成镜像构建任务!

Centos Buildah构建镜像(零基础入门:无需Docker也能轻松构建容器镜像) Buildah构建镜像  Buildah教程 容器镜像构建 无Docker构建镜像 第1张

什么是 Buildah?

Buildah 是由 Red Hat 主导开发的一款开源工具,专为构建 OCI(Open Container Initiative)标准镜像而设计。它不依赖 Docker 守护进程,可以直接在宿主机上操作,更加轻量、安全,特别适合 CI/CD 流水线和无 root 权限环境。

本文将手把手教你如何在 CentOS 7 或 CentOS 8 上安装并使用 Buildah 构建你的第一个容器镜像。无论你是运维新手还是开发小白,都能轻松上手!

第一步:准备工作——安装 Buildah

首先,确保你的 CentOS 系统已更新:

sudo yum update -y

接着,启用必要的仓库(以 CentOS 8 为例):

sudo dnf install -y yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

但实际上,Buildah 属于 container-tools 模块,在 CentOS 8 中可直接通过以下方式安装:

# CentOS 8sudo dnf module enable -y container-toolssudo dnf install -y buildah# CentOS 7(需先安装 EPEL 和 containers-common)sudo yum install -y epel-releasesudo yum install -y containers-commonsudo yum install -y buildah

安装完成后,验证版本:

buildah version

第二步:创建一个简单的 Buildah 镜像

我们将从一个基础镜像(如 alpine)开始,添加一个简单的 HTML 文件,最终构建出一个静态网页服务镜像。

1. 创建工作目录

mkdir ~/my-web-appcd ~/my-web-appecho "<h2>Hello from Buildah!</h2>" > index.html

2. 使用 Buildah 创建容器

使用 buildah from 命令基于 alpine 镜像创建一个新容器:

ctr=$(buildah from alpine)

这会返回一个容器 ID,我们将其存入变量 ctr 以便后续使用。

3. 向容器中复制文件并安装 Nginx

# 更新包并安装 nginxbuildah run $ctr -- apk updatebuildah run $ctr -- apk add nginx# 创建 Web 目录并复制文件buildah run $ctr -- mkdir -p /usr/share/nginx/htmlbuildah copy $ctr index.html /usr/share/nginx/html/# 设置启动命令buildah config --cmd "nginx -g 'daemon off;'" $ctrbuildah config --port 80 $ctr

4. 提交镜像

现在将容器提交为一个新的镜像,命名为 my-web-app:v1

buildah commit $ctr my-web-app:v1

5. 查看本地镜像

buildah images

你应该能看到类似如下的输出:

REPOSITORY                 TAG      IMAGE ID       CREATED        SIZElocalhost/my-web-app       v1       a1b2c3d4e5f6   2 minutes ago  12 MB

第三步:运行你的镜像(可选)

虽然 Buildah 本身不负责运行容器,但你可以配合 Podman(与 Buildah 同源)来运行:

# 安装 Podman(如果尚未安装)sudo dnf install -y podman# 运行容器podman run -d -p 8080:80 my-web-app:v1

然后在浏览器中访问 http://你的服务器IP:8080,就能看到 “Hello from Buildah!” 页面了!

为什么选择 Buildah?

  • 无守护进程:无需运行后台服务,减少攻击面。
  • 支持 rootless:普通用户也能构建镜像,提升安全性。
  • 兼容 OCI 标准:生成的镜像可在 Docker、Podman、Kubernetes 等平台无缝使用。
  • 脚本友好:所有操作均可通过 Shell 脚本自动化,非常适合 无Docker构建镜像 场景。

总结

通过本教程,你已经掌握了在 CentOS 上使用 Buildah 构建容器镜像的基本流程。无论是用于学习、开发还是生产环境,Buildah教程 所展示的方法都为你提供了一种更现代、更安全的镜像构建方式。

记住,Centos Buildah构建镜像 不仅是技术趋势,更是 DevOps 最佳实践的一部分。快去试试吧!

如果你喜欢这种轻量级容器工具,不妨也了解一下 Podman、Skopeo 等配套工具,它们共同构成了 Red Hat 的下一代容器生态。