开始使用 Buildah 管理 Linux 中的容器开始使用 Buildah 管理 Linux 中的容器开始使用 Buildah 管理 Linux 中的容器开始使用 Buildah 管理 Linux 中的容器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

开始使用 Buildah 管理 Linux 中的容器

Buildah 用于创建、构建、管理、运行容器映像以及容器。它可以与 Docker、Podman、Kubernetes 一起使用!让我们开始使用 Buildah。

“Docker,Docker,Docker”这是我们直到最近才使用的。

毫无疑问,Docker 仍然很受欢迎。但正如我们所知,IT 行业的演变速度非常快。现在我们将听到Buildah、Podman、CRI-O、Skopeo。

如果你想打个比方——我们有各种类型的浆果,如黑浆果、蓝莓、覆盆子,但有一天有人决定选择蓝莓。因此,在 Buildah、Podman、CRI-O 中,我决定选择 buildah。为什么?因为它和其他容器平台一样有趣。

让我们深入了解 Buildah!

什么是Buildah?

Buildah 是一个用于构建开放容器计划 (OCI) 映像的命令行工具。它可以与 Docker、Podman、Kubernetes 一起使用 - 无论是您最喜欢的容器工具!

Buildah 用于创建、构建、管理、运行容器映像以及容器。

使用 Buildah,您可以从映像或从头开始创建工作容器,您还可以从工作容器或使用 Dockerfile 创建映像。您可以以 OCI 格式或上游 Docker 格式构建映像。您可以修改和删除容器和镜像。

Buildah 最有趣的一点是,它不需要守护进程即可工作。所以对#bigfatdaemons说不。当涉及到构建容器的持续集成和持续交付时,没有专门的守护进程会产生火花。

无守护进程还意味着您可以通过 Buildah 消除 Docker 的守护进程来构建容器镜像。但这并不意味着 Buildah 不能与 Docker 结合。因为使用 Dockerfile,您可以通过 Buildah 构建、管理和运行容器映像。令人印象深刻吧?

在 Linux 上安装 Buildah

让我们看看如何亲自使用 Buildah。 Buildah 软件包适用于 Fedora 和 CentOS。您可以使用 Linux 发行版的包管理器轻松安装它们。我将在这里列出一些常见的:

要在 Fedora 上安装 Buildah,请使用

dnf install buildah -y

要在 CentOS 或 RedHat 上安装 Buildah:

yum install buildah -y

要在 Ubuntu 和 Debian 上安装 Buildah,您可以使用 Project Atomic 提供的官方 PPA。

sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:projectatomic/ppa
sudo apt install buildah

一旦安装了 Buildah,就可以使用它了。

使用 Buildah 的基本命令

以下是启动 buildah 的一些基本命令。

了解 Buildah 的版本。

buildah --version

最初的任务是从公共或私有存储库中提取容器映像。要拉取镜像 buildah 使用“from”变量。 “from”变量与 Dockerfile 中使用的相同。不同之处在于,在 Docker 中,我们在 Dockerfile 中指定变量“from”,而在 Buildah 中,我们通过命令行传递变量。

buildah from ubuntu

在上面的命令中,Ubuntu 是我的容器镜像。在输出末尾成功拉取基于 Ubuntu 的映像后,您将看到 – “ubuntu-working-container”。

在您知道已成功拉取映像后,现在您可能想查看已拉取的映像列表。但在此之前,您可能想知道“这些图像存储在哪里? ”。拉取的映像存储在主机本身上。

buildah images 
 IMAGE NAME                                               IMAGE TAG            IMAGE ID             CREATED AT             SIZE
 docker.io/library/ubuntu                                 latest               94e814e2efa8         Mar 12, 2019 00:20     91.4 MB
 docker.io/library/fedora                                 latest               d09302f77cfc         Mar 12, 2019 00:20     283 MB

如果您已经熟悉 Docker 命令,那么您可能已经注意到 Docker 和 Buildah 命令的相似之处。例如,在 Docker 中要查看已拉取镜像的列表,我们使用“docker images”命令。

这是查看正在运行的容器列表的命令。在 Buildah 中,一旦容器镜像拉取完成,该容器就会开始运行。如果与 Docker 相比,拉取镜像后,我们需要使用 docker run 来运行镜像,然后只有容器开始运行。

CONTAINER ID  BUILDER  IMAGE ID     IMAGE NAME                       CONTAINER NAME
 1063320d2dc0     *     94e814e2efa8 docker.io/library/ubuntu:latest  ubuntu-working-container
 978a399e0aa7     *     d09302f77cfc docker.io/library/fedora:latest  fedora-working-container

如果您想清理并删除所有正在运行的容器,请谨慎执行以下命令。因为一旦执行该命令,您的容器就会被删除。相对于 Docker,我们在 buildah 中获得的特权是,Docker 不允许我们删除正在运行的容器,但 Buildah 可以。在使用 Docker 时,我们必须先停止容器,然后才能删除镜像。

buildah rm --all

如果您对某些命令感到困惑,可以使用 –help 选项。

buildah --help

让我们看看 Buildah 的一些用例,为了开始实际实施,我们将从简单开始。一旦您找到了 Buildah 的节奏,您就可以发挥您的创造力并做一些有趣的事情。

构建 Apache Web 服务器容器映像 [动手实践]

让我们通过示例 Buildah 项目来尝试一下您刚刚学到的内容。

您认为要在容器内运行 Apache Web 服务器需要什么?

当然,一个镜像、一个正在运行的容器还有什么?好吧,我们需要的主要事情是——我们需要在容器内安装一个 httpd 包。哦!我们该怎么做?不用担心。我会告诉你的。

我们首先拉取一个 Linux 发行版镜像。选择您最喜欢的。我已经拉取了 CentOS 基础镜像。

buildah from centos

现在在 CentOS 容器中安装 httpd。您可以使用以下命令来执行此操作:

buildah run centos-working-container yum install httpd -y

你会看到这样的输出。

我们所做的是,我们安装了 httpd 包,甚至没有进入容器内部。这就像甚至不用进入车库就可以安装自行车零件一样。您可以在上面命令的输出中看到,该软件包已安装在我们前面。 Buildah 不作弊 ?

现在,让我们创建自定义 index.html 文件。

echo "Linux Handbook is interesting !" > index.html

将自定义文件index.html复制到目录路径/var/www/html

buildah copy centos-working-container index.html /var/www/html/index.html
4e955fea0268518cbaa500409dfbec88f0ecebad28d84ecbe250baed97dba889

您一定想知道 /var/www/html 从哪里来?为什么我们要复制该目录路径下的index.html 文件?

当我们安装 httpd 包时,会创建 /var/www/html 目录。 /var/www/html 只是 Web 服务器的默认根文件夹。

为了启动容器,我们需要为容器配置入口点。

buildah config --entrypoint "/usr/sbin/httpd -DFOREGROUND" centos-working-container

“-DFOREGROUND”选项与“/usr/sbin/httpd”一起使用来启动httpd。 “-DFOREGROUND”的作用是,它使 httpd/apache 进程在前台运行,而不是在后台运行。 httpd 进程不在后台运行的好处是您可以在控制台上看到调试日志。如果我们不使用“-DFOREGROUND”选项,apache 服务器将启动,然后立即停止。

现在,我们需要保存我们在容器内所做的一切。 提交将为我们做这件事。

buildah commit centos-working-container  Linux-Handbook

Linux-Handbook 映像已可用,您可以将此映像推送到注册表来使用它。

buildah images
IMAGE ID IMAGE NAME CREATED 
AT SIZE
9110ae7f579f docker.io/library/centos:latest 
Mar 31, 2019 14:36 234.7 MB
49bd5ec5be71 docker.io/library/Linux-Handbook:latest 
Apr 4, 2019 17:28 427.7 MB

那么,准备好使用 Buildah 了吗?

塞维沙·杜德冈卡 编剧

©2015-2025 艾丽卡 support@alaica.com