docker build 的替代品 build ah

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情

什么是buildah

buildah工具是用来构建容器镜像,该容器镜像符合OCI规范(一帮大佬在docker出现后,定义的容器规范,按照这个规范搞事情,就能搞成事情),相比于docker buildbuildah不仅能够直接使用dockerfile,还可以从头直接使用命令行构建镜像,或则基于镜像或容器创建镜像。

docker现在是容器领域的扛把子,任何一个有关容器的工具出现后,都在对标docker甚至比docker“更好”,毕竟docker的市场份额在那里。

buildahdocker build差异

  • buildah无需守护进程运行

docker run一样,docker build需要docker server才能运行,言外之意为它的权限单一,安全性得不到保障,而buildah无需守护进程也能运行。

  • buildah 可以利用交互式构建镜像

buildah可以使用交互式命令来构建镜像,也可以通过文件来构建,而docker只能从dockerfile或则进入容器中生成内容,再利用docker commit生成镜像,相比之下,buildah显得更加灵活有效。

  • buildah可以将容器的根目录挂载到宿主机上

这玩意到底有啥用? 这可以将容器的根目录挂载到宿主机上,这可以使用宿主机工具,而不需要将这些工具打包进镜像中,从而减少了镜像的大小。

buildah安装

我们还是和之前分享的所有工具一样,我们分为源码安装 和 yum 安装

使用yum安装buildah

安装

直接使用yum安装即可

命令: yum install buildah -y

查看版本

使用源码安装buildah

我们还是依照惯例,从release中下载源码

安装依赖

 yum -y install \
    make \
    golang \
    bats \
    btrfs-progs-devel \
    device-mapper-devel \
    glib2-devel \
    gpgme-devel \
    libassuan-devel \
    libseccomp-devel \
    git \
    bzip2 \
    go-md2man \
    runc \
    skopeo-containers

下载源码

目前release版本为1.23.4,我们就checkout到该版本就可以了

git clone https://github.com/containers/buildah.git
git checkout v1.23.4

编译

make

查看版本

使用命令: buildah version查看版本

使用buildah构建镜像

前提

我们还是使用最早的那个阅读量的案例,go代码如下

该代码作用为: 访问reader路由,阅读量逐步叠加并返回给客户端

dockerfile构建镜像

我们查看当时dockerfile ,我们直接用dockerfile构建镜像

dockerfile如下

image.png

我们需要提前使用go build将上述案例代码编译为可执行文件

查看镜像

验证镜像正确性

感想

和之前podman一样,buildah几乎和docker build一致,甚至于,你可以为buildah建立别名,我们来想想,为什么会一样? 因为很简单,podman如果不和docker基本用法一样,可能它就“死”了,因为学习成本会很高,后面我们再看看buildah的特性。

还是想说,docker依然是容器界的扛把子,最近有小伙伴向我咨询容器相关技术,介于没有学过容器的,建议还是先去看看docker,完了再看podman之类的补充就行,不要一开始就上来玩podman,因为你会很吃力,原因是它很多对标产品就是docker,所以有些docker有了的东西,它会一带而过,所以基于上述原因,建议先看docker,然后再看其他相关的。各位前端大佬们,要加油呀。

posted @ 2022-04-09 22:03  pdudos  阅读(0)  评论(0)    收藏  举报  来源