Project Atomic 通过他们在 Open Container Initiative(OCI)上的努力创造了一个名为 Buildah 的伟大工具。Buildah 能帮助创建、构建和更新,它支持 Docker 容器镜像以及 OCI 兼容镜像。

Buildah 处理构建容器镜像时无需安装完整的容器运行时或守护进程。这对建立容器的持续集成和持续交付管道尤其有用。

Buildah 使容器的文件系统可以直接供构建主机使用。这意味着构建工具在主机上可用就行,而不需要在容器镜像中可用,从而使构建更快速,镜像更小,更安全。Buildah 有 CentOS、Fedora 和 Debian 的软件包。

安装 Buildah

从 Fedora 26 开始 Buildah 可以使用 dnf 进行安装。

  1. $ sudo dnf install buildah -y

buildah 的当前版本为 0.16,可以通过以下命令显示。

  1. $ buildah --version

基本命令

构建容器镜像的第一步是获取基础镜像,这是通过 Dockerfile 中的 FROM 语句完成的。Buildah 以类似的方式处理这个。

  1. $ sudo buildah from fedora

该命令将拉取 Fedora 的基础镜像并存储在主机上。通过执行以下操作可以检查主机上可用的镜像。

  1. $ sudo buildah images
  2. IMAGE ID IMAGE NAME CREATED AT SIZE
  3. 9110ae7f579f docker.io/library/fedora:latest Mar 7, 2018 20:51 234.7 MB

在拉取基础镜像后,有一个该镜像的运行容器实例,这是一个“工作容器”。

以下命令显示正在运行的容器。

  1. $ sudo buildah containers
  2. CONTAINER ID BUILDER IMAGE ID IMAGE NAME
  3. CONTAINER NAME
  4. 6112db586ab9 * 9110ae7f579f docker.io/library/fedora:latest fedora-working-container

Buildah 还提供了一个非常有用的命令来停止和删除当前正在运行的所有容器。

  1. $ sudo buildah rm --all

完整的命令列表可以使用 --help 选项。

  1. $ buildah --help

构建一个 Apache Web 服务器容器镜像

让我们看看如何使用 Buildah 在 Fedora 基础镜像上安装 Apache Web 服务器,然后复制一个可供服务的自定义 index.html

首先让我们创建自定义的 index.html

  1. $ echo "Hello Fedora Magazine !!!" > index.html

然后在正在运行的容器中安装 httpd 包。

  1. $ sudo buildah from fedora
  2. $ sudo buildah run fedora-working-container dnf install httpd -y

让我们将 index.html 复制到 /var/www/html/

  1. $ sudo buildah copy fedora-working-container index.html /var/www/html/index.html

然后配置容器入口点以启动 httpd。

  1. $ sudo buildah config --entrypoint "/usr/sbin/httpd -DFOREGROUND" fedora-working-container

现在为了使“工作容器”可用,commit 命令将容器保存到镜像。

  1. $ sudo buildah commit fedora-working-container hello-fedora-magazine

hello-fedora-magazine 镜像现在可用,并且可以推送到仓库以供使用。

  1. $ sudo buildah images
  2. IMAGE ID IMAGE NAME CREATED
  3. AT SIZE
  4. 9110ae7f579f docker.io/library/fedora:latest
  5. Mar 7, 2018 22:51 234.7 MB
  6. 49bd5ec5be71 docker.io/library/hello-fedora-magazine:latest
  7. Apr 27, 2018 11:01 427.7 MB

通过运行以下步骤,还可以使用 Buildah 来测试此镜像。

  1. $ sudo buildah from --name=hello-magazine docker.io/library/hello-fedora-magazine
  2. $ sudo buildah run hello-magazine

访问 http://localhost 将显示 “Hello Fedora Magazine !!!”

原文发布时间为:2018-05-21

本文来自云栖社区合作伙伴“Linux中国开源社区”,了解相关信息可以关注“Linux中国开源社区”。

如何使用 Buildah 构建容器镜像相关推荐

  1. 利用Podman和Buildah构建容器镜像

    这是有关构建容器镜像的一系列博客文章中的第二篇.该系列从<未来我们如何构建容器镜像?>开始.该文章探讨了自Docker首次发布以来构建镜像的变化以及如何克服使用Dockerfile的诸多限 ...

  2. 利用Img构建容器镜像

    本系列文章一共6篇,本文是该系列的第3篇文章,前2篇文章如下: <未来我们如何构建容器镜像?> <利用Podman和Buildah构建容器镜像> Img[1]是一个开源项目,由 ...

  3. GCP发布Kaniko:在非特权容器和Kubernetes中构建容器镜像的工具

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ Google发布了"Kaniko",一种用于在未授权容器或Kuberne ...

  4. 利用Serverless Kubernetes和Kaniko快速自动化构建容器镜像

    前言: 在云原生时代中,容器镜像是一切应用分发的基础载体,除了dockerhub作为流行的镜像仓库外,各大公有云厂商也都提供了功能丰富镜像仓库服务,如ACR(Aliyun Container Regi ...

  5. 容器学习Day11-docker commit构建容器镜像

    目录 前言 一.docker commit 构建镜像 1.基于OS基础镜像构建 2.基于厂商提供的基础镜像构建 二.docker commit 构建镜像的缺点 总结 前言 前面了解了镜像仓库的搭建,那 ...

  6. kaniko-在k8s集群中构建容器镜像

    微信公众号搜索 DevOps和k8s全栈技术 ,即可关注公众号,也可扫描文章最后的二维码关注公众号,每天会分享技术文章供大家阅读参考哈~ 前言 通常情况下,我们在使用dockerfile构建镜像的时候 ...

  7. 流水线中使用 docker in pod 方式构建容器镜像

    上个月参加了 Rancher 社区举办的 <Dockershim 即将被移除,你准备好了么?[1]>直播分享后,得知自 1.24 版本之后,Kubernetes 社区将正式放弃对 dock ...

  8. Dockerfile构建容器镜像 - 运维笔记

    在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其 ...

  9. 基于nerdctl + buildkitd构建容器镜像,运行tomcat后端服务和nginx前端服务

    目录 简介: 一.部署buildkitd 1.下载二进制包 2. 解压二进制包,并移到全局变量中 3.创建socket文件,service文件 4.启动服务 二.使用nerdctl命令测试镜像构建 1 ...

最新文章

  1. 匿名内部类,就是内部类的简写格式。
  2. Tool之Adobe:解决Adobe acrobat pro将PDF文件进行批量保存单页PDF文件(图文教程)
  3. Github 2020 年度报告:你以为新冠击溃了开发者?不!他们创造了更多代码...
  4. 疾风之刃的最新服务器,疾风之刃6月16日数据互通公告 数据互通服务器查询介绍...
  5. Linux的md64进程,在Linux上安装Elasticsearch Kibaba.md(示例代码)
  6. ajaxsubmit php上传文件,使用ajaxSubmit方法实现多文件上传(异步)
  7. 单片机需要数电模电基础吗?单片机要多少模电数电知识 ?
  8. python num函数,python函数
  9. Dropshipping在Facebook广告语怎么写?
  10. 小程序Progress组件介绍
  11. SpringBoot——检索
  12. 欢迎各位小伙伴来领取免费的安卓教程
  13. Django rest framework --- Routers
  14. 启用群晖 Drive 的团队文件夹
  15. 监测DNS服务器状态手动修复,电脑管家修复不了DNS配置_修复DNS技巧-高达阁杀毒软件站...
  16. CSS3: The missing manual 《css3秘笈》笔记+布局、设计优秀资源整理
  17. 2D横版游戏角色素材可商用
  18. mysql—自增长和索引
  19. 疯狂的母牛,对方程的求解,不要62(不吉利数字),回文串,进制转换以及空心三角形
  20. 计算机系统:程序Hello

热门文章

  1. hdu-5645 DZY Loves Balls(水题)
  2. apache+php+mysq环境详细l配置
  3. Spring Bean懒加载与非懒加载
  4. 什么是IEC 61508?
  5. Mapped Statements collection already contains value for*
  6. 大白话讲解Promise(三)搞懂jquery中的Promise
  7. java——关于数组的定义 和 访问修饰符的修饰内容
  8. Spring的ID增长器使用示例(MySql数据库)
  9. expat 处理xml常用函数名
  10. [导入]CodeRushNET(Eval)-2.1.3.exe