2017-10-26 02:28:51 +08:00
|
|
|

|
|
|
|
|
|
|
|
# [Buildah](https://www.youtube.com/embed/YVk5NgSiUw8) - a tool which facilitates building OCI container images
|
2017-05-31 20:11:09 +08:00
|
|
|
================================================================
|
2017-02-07 02:54:27 +08:00
|
|
|
|
2017-03-16 22:43:50 +08:00
|
|
|
[](https://goreportcard.com/report/github.com/projectatomic/buildah)
|
|
|
|
[](https://travis-ci.org/projectatomic/buildah)
|
2017-02-07 02:54:27 +08:00
|
|
|
|
2017-06-14 21:55:20 +08:00
|
|
|
Note: this package is in alpha, but is close to being feature-complete.
|
2017-02-07 02:54:27 +08:00
|
|
|
|
2017-10-26 02:28:51 +08:00
|
|
|
The Buildah package provides a command line tool which can be used to
|
2017-02-07 02:54:27 +08:00
|
|
|
* create a working container, either from scratch or using an image as a starting point
|
2017-05-30 03:09:56 +08:00
|
|
|
* 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
|
2017-04-14 03:42:04 +08:00
|
|
|
* 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
|
2017-02-07 02:54:27 +08:00
|
|
|
|
2017-09-28 19:55:19 +08:00
|
|
|
**[Changelog](CHANGELOG.md)**
|
|
|
|
|
2017-03-29 03:37:24 +08:00
|
|
|
**Installation notes**
|
|
|
|
|
2017-10-26 02:28:51 +08:00
|
|
|
Prior to installing Buildah, install the following packages on your linux distro:
|
2017-03-29 03:37:24 +08:00
|
|
|
* make
|
2017-05-23 01:41:37 +08:00
|
|
|
* golang (Requires version 1.8.1 or higher.)
|
2017-03-29 03:37:24 +08:00
|
|
|
* bats
|
2017-06-28 22:51:30 +08:00
|
|
|
* btrfs-progs-devel
|
2017-03-29 03:37:24 +08:00
|
|
|
* bzip2
|
2017-06-28 22:51:30 +08:00
|
|
|
* device-mapper-devel
|
|
|
|
* git
|
2017-05-06 07:20:09 +08:00
|
|
|
* go-md2man
|
2017-06-28 22:51:30 +08:00
|
|
|
* gpgme-devel
|
|
|
|
* glib2-devel
|
|
|
|
* libassuan-devel
|
|
|
|
* ostree-devel
|
2017-10-22 02:41:49 +08:00
|
|
|
* runc (Requires version 1.0 RC4 or higher.)
|
2017-05-06 07:20:09 +08:00
|
|
|
* skopeo-containers
|
2017-03-29 03:37:24 +08:00
|
|
|
|
|
|
|
In Fedora, you can use this command:
|
|
|
|
|
|
|
|
```
|
2017-05-31 03:57:52 +08:00
|
|
|
dnf -y install \
|
|
|
|
make \
|
|
|
|
golang \
|
|
|
|
bats \
|
|
|
|
btrfs-progs-devel \
|
|
|
|
device-mapper-devel \
|
2017-06-28 22:51:30 +08:00
|
|
|
glib2-devel \
|
2017-05-31 03:57:52 +08:00
|
|
|
gpgme-devel \
|
|
|
|
libassuan-devel \
|
2017-06-28 22:51:30 +08:00
|
|
|
ostree-devel \
|
2017-05-31 03:57:52 +08:00
|
|
|
git \
|
2017-05-06 07:31:32 +08:00
|
|
|
bzip2 \
|
2017-05-06 07:20:09 +08:00
|
|
|
go-md2man \
|
2017-06-21 00:10:29 +08:00
|
|
|
runc \
|
2017-05-06 07:20:09 +08:00
|
|
|
skopeo-containers
|
2017-03-29 03:37:24 +08:00
|
|
|
```
|
|
|
|
|
2017-10-26 02:28:51 +08:00
|
|
|
Then to install Buildah on Fedora follow the steps in this example:
|
2017-08-15 23:38:46 +08:00
|
|
|
|
2017-03-29 03:37:24 +08:00
|
|
|
|
|
|
|
```
|
|
|
|
mkdir ~/buildah
|
|
|
|
cd ~/buildah
|
2017-06-28 22:51:30 +08:00
|
|
|
export GOPATH=`pwd`
|
|
|
|
git clone https://github.com/projectatomic/buildah ./src/github.com/projectatomic/buildah
|
|
|
|
cd ./src/github.com/projectatomic/buildah
|
|
|
|
make
|
2017-05-06 07:31:32 +08:00
|
|
|
make install
|
2017-05-06 07:20:09 +08:00
|
|
|
buildah --help
|
2017-03-29 03:37:24 +08:00
|
|
|
```
|
|
|
|
|
2017-09-20 14:47:36 +08:00
|
|
|
In Ubuntu zesty and xenial, you can use this command:
|
2017-08-15 23:38:46 +08:00
|
|
|
|
|
|
|
```
|
|
|
|
apt-get -y install software-properties-common
|
|
|
|
add-apt-repository -y ppa:alexlarsson/flatpak
|
|
|
|
add-apt-repository -y ppa:gophers/archive
|
|
|
|
apt-add-repository -y ppa:projectatomic/ppa
|
|
|
|
apt-get -y -qq update
|
|
|
|
apt-get -y install bats btrfs-tools git libapparmor-dev libdevmapper-dev libglib2.0-dev libgpgme11-dev libostree-dev libseccomp-dev libselinux1-dev skopeo-containers go-md2man
|
|
|
|
apt-get -y install golang-1.8
|
|
|
|
```
|
2017-10-26 02:28:51 +08:00
|
|
|
Then to install Buildah on Ubuntu follow the steps in this example:
|
2017-08-15 23:38:46 +08:00
|
|
|
|
|
|
|
```
|
|
|
|
mkdir ~/buildah
|
|
|
|
cd ~/buildah
|
|
|
|
export GOPATH=`pwd`
|
|
|
|
git clone https://github.com/projectatomic/buildah ./src/github.com/projectatomic/buildah
|
|
|
|
cd ./src/github.com/projectatomic/buildah
|
|
|
|
PATH=/usr/lib/go-1.8/bin:$PATH make runc all TAGS="apparmor seccomp"
|
|
|
|
make install
|
|
|
|
buildah --help
|
|
|
|
```
|
2017-10-26 02:28:51 +08:00
|
|
|
Buildah uses `runc` to run commands when `buildah run` is used, or when `buildah build-using-dockerfile`
|
2017-06-02 22:57:19 +08:00
|
|
|
encounters a `RUN` instruction, so you'll also need to build and install a compatible version of
|
2017-10-26 02:28:51 +08:00
|
|
|
[runc](https://github.com/opencontainers/runc) for Buildah to call for those cases.
|
2017-06-02 22:57:19 +08:00
|
|
|
|
2017-04-21 21:10:11 +08:00
|
|
|
## Commands
|
2017-06-27 14:07:11 +08:00
|
|
|
| Command | Description |
|
|
|
|
| ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
|
|
|
|
| [buildah-add(1)](/docs/buildah-add.md) | Add the contents of a file, URL, or a directory to the container. |
|
|
|
|
| [buildah-bud(1)](/docs/buildah-bud.md) | Build an image using instructions from Dockerfiles. |
|
|
|
|
| [buildah-commit(1)](/docs/buildah-commit.md) | Create an image from a working container. |
|
|
|
|
| [buildah-config(1)](/docs/buildah-config.md) | Update image configuration settings. |
|
|
|
|
| [buildah-containers(1)](/docs/buildah-containers.md) | List the working containers and their base images. |
|
|
|
|
| [buildah-copy(1)](/docs/buildah-copy.md) | Copies the contents of a file, URL, or directory into a container's working directory. |
|
|
|
|
| [buildah-from(1)](/docs/buildah-from.md) | Creates a new working container, either from scratch or using a specified image as a starting point. |
|
|
|
|
| [buildah-images(1)](/docs/buildah-images.md) | List images in local storage. |
|
|
|
|
| [buildah-inspect(1)](/docs/buildah-inspect.md) | Inspects the configuration of a container or image. |
|
|
|
|
| [buildah-mount(1)](/docs/buildah-mount.md) | Mount the working container's root filesystem. |
|
|
|
|
| [buildah-push(1)](/docs/buildah-push.md) | Copies an image from local storage. |
|
|
|
|
| [buildah-rm(1)](/docs/buildah-rm.md) | Removes one or more working containers. |
|
|
|
|
| [buildah-rmi(1)](/docs/buildah-rmi.md) | Removes one or more images. |
|
|
|
|
| [buildah-run(1)](/docs/buildah-run.md) | Run a command inside of the container. |
|
|
|
|
| [buildah-tag(1)](/docs/buildah-tag.md) | Add an additional name to a local image. |
|
|
|
|
| [buildah-umount(1)](/docs/buildah-umount.md) | Unmount a working container's root file system. |
|
2017-06-28 23:04:35 +08:00
|
|
|
| [buildah-version(1)](/docs/buildah-version.md) | Display the Buildah Version Information |
|
2017-04-21 21:10:11 +08:00
|
|
|
|
2017-03-29 03:37:24 +08:00
|
|
|
**Future goals include:**
|
2017-03-16 01:55:26 +08:00
|
|
|
* more CI tests
|
2017-03-28 15:06:13 +08:00
|
|
|
* additional CLI commands (?)
|