2018-03-27 05:50:56 +08:00

2017-10-26 02:28:51 +08:00
2018-08-18 04:57:52 +08:00
# [Buildah](https://www.youtube.com/embed/YVk5NgSiUw8) - a tool that facilitates building [Open Container Initiative (OCI)](https://www.opencontainers.org/) container images
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
2018-03-18 02:16:33 +08:00
The Buildah package provides a command line tool that 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
2018-07-09 14:06:47 +08:00
* rename a local container
2017-02-07 02:54:27 +08:00
2018-07-01 03:48:53 +08:00
**[Buildah Demos](demos)**
2017-09-28 19:55:19 +08:00
**[Changelog](CHANGELOG.md)**
2018-07-05 18:55:53 +08:00
**[Contributing](CONTRIBUTING.md)**
2018-07-01 03:48:53 +08:00
**[Development Plan](developmentplan.md)**
2017-12-05 05:31:23 +08:00
**[Installation notes](install.md)**
2017-03-29 03:37:24 +08:00
2018-03-30 08:25:12 +08:00
**[Troubleshooting Guide](troubleshooting.md)**
2018-07-01 03:48:53 +08:00
**[Tutorials](docs/tutorials)**
2017-12-16 03:53:10 +08:00
2018-03-27 01:10:47 +08:00
## Example
2017-08-15 23:38:46 +08:00
2017-12-05 05:31:23 +08:00
From [`./examples/lighttpd.sh` ](examples/lighttpd.sh ):
2017-03-29 03:37:24 +08:00
2017-12-05 05:31:23 +08:00
```bash
2018-04-13 19:50:50 +08:00
$ cat > lighttpd.sh < < "EOF"
2017-12-05 05:31:23 +08:00
#!/bin/bash -x
2017-03-29 03:37:24 +08:00
2017-12-05 05:31:23 +08:00
ctr1=`buildah from ${1:-fedora}`
2017-11-10 19:25:51 +08:00
2017-12-05 05:31:23 +08:00
## Get all updates and install our minimal httpd server
buildah run $ctr1 -- dnf update -y
buildah run $ctr1 -- dnf install -y lighttpd
2017-11-10 19:25:51 +08:00
2017-12-05 05:31:23 +08:00
## Include some buildtime annotations
buildah config --annotation "com.example.build.host=$(uname -n)" $ctr1
2017-11-10 19:25:51 +08:00
2017-12-05 05:31:23 +08:00
## Run our server and expose the port
2018-04-20 09:00:35 +08:00
buildah config --cmd "/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf" $ctr1
buildah config --port 80 $ctr1
2017-08-15 23:38:46 +08:00
2017-12-05 05:31:23 +08:00
## Commit this container to an image name
buildah commit $ctr1 ${2:-$USER/lighttpd}
EOF
2017-08-15 23:38:46 +08:00
2018-02-09 22:18:43 +08:00
$ chmod +x lighttpd.sh
$ sudo ./lighttpd.sh
2017-08-15 23:38:46 +08:00
```
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. |
2018-01-10 01:33:05 +08:00
| [buildah-push(1) ](/docs/buildah-push.md ) | Push an image from local storage to elsewhere. |
2018-07-09 14:06:47 +08:00
| [buildah-rename(1) ](/docs/buildah-rename.md ) | Rename a local container. |
2017-06-27 14:07:11 +08:00
| [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. |
2018-07-18 09:26:34 +08:00
| [buildah-unshare(1) ](/docs/buildah-unshare.md ) | Launch a command in a user namespace with modified ID mappings. |
| [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 (?)