# README
Buildah - a tool that facilitates building OCI container images
Note: this package is in alpha, but is close to being feature-complete.
The Buildah package provides a command line tool that can be used to
- create a working container, either from scratch or using an image as a starting point
- create an image, either from a working container or via the instructions in a Dockerfile
- images can be built in either the OCI image format or the traditional upstream docker image format
- mount a working container's root filesystem for manipulation
- unmount a working container's root filesystem
- use the updated contents of a container's root filesystem as a filesystem layer to create a new image
- delete a working container or an image
Example
From ./examples/lighttpd.sh
:
$ cat > lighttpd.sh <<EOF
#!/bin/bash -x
ctr1=`buildah from ${1:-fedora}`
## Get all updates and install our minimal httpd server
buildah run $ctr1 -- dnf update -y
buildah run $ctr1 -- dnf install -y lighttpd
## Include some buildtime annotations
buildah config --annotation "com.example.build.host=$(uname -n)" $ctr1
## Run our server and expose the port
buildah config $ctr1 --cmd "/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf"
buildah config $ctr1 --port 80
## Commit this container to an image name
buildah commit $ctr1 ${2:-$USER/lighttpd}
EOF
$ chmod +x lighttpd.sh
$ sudo ./lighttpd.sh
Commands
Command | Description |
---|---|
buildah-add(1) | Add the contents of a file, URL, or a directory to the container. |
buildah-bud(1) | Build an image using instructions from Dockerfiles. |
buildah-commit(1) | Create an image from a working container. |
buildah-config(1) | Update image configuration settings. |
buildah-containers(1) | List the working containers and their base images. |
buildah-copy(1) | Copies the contents of a file, URL, or directory into a container's working directory. |
buildah-from(1) | Creates a new working container, either from scratch or using a specified image as a starting point. |
buildah-images(1) | List images in local storage. |
buildah-inspect(1) | Inspects the configuration of a container or image. |
buildah-mount(1) | Mount the working container's root filesystem. |
buildah-push(1) | Push an image from local storage to elsewhere. |
buildah-rm(1) | Removes one or more working containers. |
buildah-rmi(1) | Removes one or more images. |
buildah-run(1) | Run a command inside of the container. |
buildah-tag(1) | Add an additional name to a local image. |
buildah-umount(1) | Unmount a working container's root file system. |
buildah-version(1) | Display the Buildah Version Information |
Future goals include:
- more CI tests
- additional CLI commands (?)
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Functions
GetBuildInfo gets a pointer to a Builder object and returns a BuilderInfo object from it.
ImportBuilder creates a new build configuration using an already-present container.
ImportBuilderFromImage creates a new builder configuration using an image.
InitReexec is a wrapper for reexec.Init().
NewBuilder creates a new build container.
OpenAllBuilders loads all containers which have a state file that we use in their data directory, typically so that they can be listed.
OpenBuilder loads information about a build container given its name or ID.
OpenBuilderByPath loads information about a build container given a path to the container's root filesystem.
Push copies the contents of the image to a new location.
# Constants
BaseImageFakeName is the "name" of a source image which we interpret as "no image".
DefaultRuntime is the default command to use to run the container.
DefaultTerminal indicates that this Run invocation should be connected to a pseudoterminal if we're connected to a terminal.
DefaultTransport is a prefix that we apply to an image name if we can't find one in the local Store, in order to generate a source reference for the image that we can then copy to the local Store.
DefaultWorkingDir is used if none was specified.
Dockerv2ImageManifest is the MIME type of a Docker v2s2 image manifest, suitable for specifying as a value of the PreferredManifestType member of a CommitOptions structure.
OCIv1ImageManifest is the MIME type of an OCIv1 image manifest, suitable for specifying as a value of the PreferredManifestType member of a CommitOptions structure.
Package is the name of this package, used in help output and to identify working containers.
PullAlways is one of the values that BuilderOptions.PullPolicy can take, signalling that a fresh, possibly updated, copy of the image should be pulled from a registry before the build proceeds.
PullIfMissing is one of the values that BuilderOptions.PullPolicy can take, signalling that the source image should be pulled from a registry if a local copy of it is not already present.
PullNever is one of the values that BuilderOptions.PullPolicy can take, signalling that the source image should not be pulled from a registry if a local copy of it is not already present.
Version for the Package.
WithoutTerminal indicates that this Run invocation should NOT be connected to a pseudoterminal.
WithTerminal indicates that this Run invocation should be connected to a pseudoterminal.
# Variables
DefaultMountsFile holds the default mount paths in the form "host_path:container_path".
OverrideMountsFile holds the default mount paths in the form "host_path:container_path" overriden by the user.
# Structs
AddAndCopyOptions holds options for add and copy commands.
Builder objects are used to represent containers which are being used to build images.
BuilderInfo are used as objects to display container information.
BuilderOptions are used to initialize a new Builder.
CommitOptions can be used to alter how an image is committed.
CommonBuildOptions are reseources that can be defined by flags for both buildah from and bud.
ImportFromImageOptions are used to initialize a Builder from an image.
ImportOptions are used to initialize a Builder from an existing container which was created elsewhere.
PushOptions can be used to alter how an image is copied somewhere.
RunOptions can be used to alter how a command is run in the container.