What is Buildah? Is it a better Docker alternate?
Used to build container images as per OCI(Open Container Initiative) standard which provides API to build Images in docker format using golang.
The
Buildah
project provides a command line tool that be used to create an OCI or traditional Docker image format image and to then build a working container from the image. The container can be mounted and modified and then an image can be saved based on the updated container.
Podman
– Used to manage the pulling, tagging the images similar to Docker based on OCI standard.
To be used for Production grade deployments. It also allows you to create, run, and maintain containers created from those images.
Buildah Concepts:
- Buildah’s commands replicate all of the commands that are found in a Dockerfile.
- Also has the feasibility to build docker images with Dockerfile while not requiring root privileges while providing lowerlevel coreutils interface to build images
- Buildah uses simple fork-exec model and does not run as a daemon but it is based on a comprehensive API in golang.
- Buildah uses
runc
run commands whenbuildah run
used, or whenbuildah build-using-dockerfile
encounters aRUN
instruction. And it is namespace dependent on the Host System
- Buildah relies on the CNI library and plugins to set up interfaces and routing for network namespaces
- Buildah on Red Hat Enterprise Linux or CentOS, version 7.4 or higher is required. On other Linux distributions Buildah requires a kernel version of 4.0 or higher in order to support the OverlayFS filesystem – https://github.com/containers/buildah/blob/master/install.md
- The dependencies required as btree filesystem,
containernetworking-cni
,golang
andbz2
and other common-container tools.
Buildah Configuration Files and its Directory Structure:
# /usr/share/containers/
# registries.conf
# mounts.conf
# seccomp.json
# policy.json