开始使用 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 了吗?
塞维沙·杜德冈卡 编剧