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

Ubuntu Buildah构建镜像(零基础入门:在Ubuntu上使用Buildah无Docker构建容器镜像)

在现代容器化开发中,Ubuntu Buildah构建镜像 已成为一种轻量、安全且无需守护进程的替代方案。与传统依赖 Docker 的方式不同,Buildah 允许你在没有运行 Docker 守护进程的情况下构建符合 OCI(Open Container Initiative)标准的镜像。本教程将手把手教你如何在 Ubuntu 系统上安装并使用 Buildah 构建自己的第一个容器镜像。

什么是 Buildah?

Buildah 是由 Red Hat 主导开发的开源工具,专为构建 OCI 镜像而设计。它支持从 Dockerfile 构建镜像,也支持通过命令行交互式地创建和修改容器。最关键的是,Buildah 不需要 root 权限(支持 rootless 模式),也不依赖后台守护进程,因此更加安全、灵活。

Ubuntu Buildah构建镜像(零基础入门:在Ubuntu上使用Buildah无Docker构建容器镜像) Buildah构建镜像 容器镜像构建工具 Buildah教程 Linux无Docker构建镜像 第1张

为什么选择 Buildah?

  • 无需 Docker 守护进程,减少系统资源占用
  • 支持 rootless(非 root 用户)操作,提升安全性
  • 完全兼容 OCI 镜像格式,可与 Podman、Skopeo 等工具无缝协作
  • 适合 CI/CD 流水线中的轻量级镜像构建场景

在 Ubuntu 上安装 Buildah

以下步骤适用于 Ubuntu 20.04、22.04 及更新版本。

  1. 更新系统包:
sudo apt updatesudo apt upgrade -y
  1. 安装必要的依赖:
sudo apt install -y software-properties-common uidmap
  1. 添加官方仓库并安装 Buildah:
sudo add-apt-repository -y ppa:projectatomic/ppasudo apt updatesudo apt install -y buildah
注意:如果你使用的是较新的 Ubuntu 版本(如 22.04+),也可以直接通过 sudo apt install buildah 安装,因为官方仓库已包含 Buildah。

验证 Buildah 安装

运行以下命令检查版本:

buildah version

如果看到类似输出,说明安装成功:

Version:         1.28.0Go Version:      go1.19.2Image Spec:      1.0.2-devRuntime Spec:    1.0.2-devCNI Spec:        1.0.0libcni Version:  v1.1.2...

使用 Buildah 从 Dockerfile 构建镜像

我们以一个简单的 Python Flask 应用为例。

  1. 创建项目目录:
mkdir my-flask-appcd my-flask-app
  1. 创建 app.py:
echo 'from flask import Flaskapp = Flask(__name__)@app.route("/")def hello():    return "Hello from Buildah!"if __name__ == "__main__":    app.run(host="0.0.0.0", port=5000)' > app.py
  1. 创建 requirements.txt:
echo 'Flask==2.3.2' > requirements.txt
  1. 编写 Dockerfile:
FROM python:3.11-slimWORKDIR /appCOPY requirements.txt .RUN pip install --no-cache-dir -r requirements.txtCOPY app.py .EXPOSE 5000CMD ["python", "app.py"]
  1. 使用 Buildah 构建镜像:
buildah bud -t my-flask-app:latest .

命令解释:bud 是 “build using dockerfile” 的缩写,-t 指定镜像名称和标签。

查看和导出镜像

构建完成后,你可以列出本地镜像:

buildah images

如果需要将镜像保存为 tar 文件(例如用于离线部署),可以执行:

buildah push my-flask-app:latest oci:my-flask-app.tar

或者导出为 Docker 兼容格式:

buildah push my-flask-app:latest docker-archive:my-flask-app.tar

常见问题与最佳实践

  • 权限问题: 如果你以普通用户运行 Buildah,确保已配置好 user namespace(通常首次运行会自动提示)。
  • 网络问题: Buildah 默认使用主机网络,若在企业代理环境下,需配置环境变量如 HTTP_PROXY
  • 缓存优化: 使用 --layers 参数可启用层缓存,加快重复构建速度。

结语

通过本教程,你已经掌握了如何在 Ubuntu 上使用 Buildah教程 中的核心技能:安装、构建、查看和导出容器镜像。作为一款强大的 Linux无Docker构建镜像 工具,Buildah 不仅简化了 CI/CD 流程,还提升了系统的安全性和灵活性。无论你是 DevOps 工程师还是初学者,掌握 Buildah 都将为你打开容器技术的新大门。

赶快动手试试吧!你也可以将 Buildah 与 Podman 结合使用,打造完整的无 Docker 容器生态。