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

体验 buildah

在这里插入图片描述

体验 buildah

  • 什么是 Buildah
  • 安装 Buildah
  • Buildah 使用 Dockerfiles
  • 参考资料

什么是 Buildah

Buildah 是一个便于构建开放容器倡议(OCI)容器镜像的工具。

Buildah软件包提供了一个命令行工具,可以用来:

  • 创建一个工作容器,可以从头开始,也可以使用一个镜像作为起点

  • 创建一个镜像,可以从一个工作容器中创建,也可以通过 Dockerfile 中的指令创建

  • 镜像可以以 OCI 镜像格式或传统的上游 docker 镜像格式构建

  • 挂载工作容器的根文件系统以进行操作

  • 解除对工作容器根文件系统的挂载

  • 使用容器根文件系统的更新内容作为文件系统层来创建一个新的镜像

  • 删除一个工作容器或一个镜像

  • 重命名一个本地容器

安装 Buildah

refer: https://github.com/containers/buildah/blob/main/install.md

运行下面命令安装 Buildah,

sudo dnf -y install buildah

安装 Buildah 后,我们可以看到没有安装任何镜像。buildah images 命令将列出所有的镜像,

buildah images

我们还可以看到,通过运行 buildah containers 也没有工作的容器,

buildah containers

Buildah 使用 Dockerfiles

Buildah 可以使用 Dockerfile 构建镜像。构建命令将 Dockerfile 作为输入,并生成一个 OCI 镜像。

创建一个 Dockerfile 文件,

cat << EOF > Dockerfile
# Base on the most recently released Fedora
FROM fedora:latest
MAINTAINER ipbabble email buildahboy@redhat.com # not a real email

# Install updates and httpd
RUN echo "Updating all fedora packages"; dnf -y update; dnf -y clean all
RUN echo "Installing httpd"; dnf -y install httpd && dnf -y clean all

# Expose the default httpd port 80
EXPOSE 80

# Run the httpd
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
EOF

运行 buildah build,输入 Dockerfile 的名称和创建的镜像的名称(例如,fedora-httpd),

buildah build -f Dockerfile -t fedora-httpd .
or
buildah build -t fedora-httpd

你会看到Dockerfile的所有步骤正在执行。之后,buildah images 会向你展示新的镜像。

buildah images

--- output
REPOSITORY                          TAG      IMAGE ID       CREATED              SIZE
localhost/fedora-httpd              latest   37b5e0609c3e   About a minute ago   295 MB
registry.fedoraproject.org/fedora   latest   c9bfca6d0ac2   4 days ago           196 MB
---

让我们把这个镜像从容器/存储的地方复制到 Docker 守护进程存储镜像的地方,这样我们就可以用 Docker 运行它。我们可以使用 buildah push 来实现这一目标。这将把镜像复制到 Docker 的存储区域,该区域位于 /var/lib/docker 下。Docker 的存储区是由 Docker 守护程序管理的。

buildah push fedora-httpd docker-daemon:fedora-httpd:latest

现在我们可以从镜像中创建一个容器,并用 docker run 来测试它:

docker run --rm -p 8123:80 fedora-httpd

当该容器运行时,在另一个 shell 中运行,你会看到标准的Apache网页。

curl localhost:8123

参考资料

  • https://github.com/containers/buildah

完结!


http://www.kler.cn/a/14686.html

相关文章:

  • ESP32设备驱动-LIS3MDL磁场传感器驱动
  • 2023年4月份上新的图像领域分割模型设计系列论文(一)
  • c语言如何通过修改文件的方式配置 Linux 网络参数
  • Ceph入门到精通-podman 入门实战
  • 面试 - 003
  • new Date 时间的常用方法,点赞收藏,很多你不知道
  • Ceph入门到精通- 选择硬件的一般原则
  • 摄影tips
  • 终端连接工具Tabby的下载、安装与配置
  • 网络:DPDK复习相关知识点
  • SpringMVC - REST风格介绍已经RESTful简化开发
  • 算法基础(三):链表知识点及题型讲解
  • MySQL高级篇——存储引擎和索引
  • Java线程详解
  • 【飞腾】遇到的问题与解决办法
  • SS524V100 RTL8152B(USB转网卡)驱动移植
  • 【Java基础】使用Java 8的Stream API来简化Map集合的操作
  • 【LeetCode: 5. 最长回文子串 | 暴力递归=>记忆化搜索=>动态规划 => 中心扩展法】
  • C/C++占位符,%x和%p的区别
  • 和chatgpt学习javascript,第一天,学习背景知识