2018-09-18 03:20:16 +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 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-18 03:20:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								[](https://goreportcard.com/report/github.com/containers/buildah)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								[](https://travis-ci.org/containers/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-09-11 20:14:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								## Buildah Information for Developers
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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-09-11 20:14:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								## Buildah and Podman relationship
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Buildah and Podman are two complementary Open-source projects that are available on
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								most Linux platforms and both projects reside at [GitHub.com ](https://github.com )
							 
						 
					
						
							
								
									
										
										
										
											2018-09-18 03:20:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								with Buildah [here ](https://github.com/containers/buildah ) and
							 
						 
					
						
							
								
									
										
										
										
											2018-09-11 20:14:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Podman [here ](https://github.com/containers/libpod ).  Both Buildah and Podman are
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								command line tools that work on OCI images and containers.  The two projects
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								differentiate in their specialization.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Buildah specializes in building OCI images.  Buildah's commands replicate all
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								of the commands that are found in a Dockerfile. Buildah’ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								provide a lower level coreutils interface to build images, allowing people to build
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								containers without requiring a Dockerfile.  The intent with Buildah is to allow other
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								scripting languages to build container images, without requiring a daemon.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Podman specializes in all of the commands and functions that help you to maintain and modify
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								OCI images, such as pulling and tagging.  It also allows you to create, run, and maintain those containers
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								created from those images.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								A major difference between Podman and Buildah is their concept of a container.  Podman
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								allows users to create "traditional containers" where the intent of these containers is
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								to be long lived.  While Buildah containers are really just created to allow content
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								to be added back to the container image.   An easy way to think of it is the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								`buildah run`  command emulates the RUN command in a Dockerfile while the `podman run`  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								command emulates the `docker run`  command in functionality.  Because of this and their underlying
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								storage differences, you can not see Podman containers from within Buildah or vice versa.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								In short Buildah is an efficient way to create OCI images  while Podman allows
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								you to manage and maintain those images and containers in a production environment using
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								familiar container cli commands.  For more details, see the 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-18 03:20:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								[Container Tools Guide ](https://github.com/containers/buildah/tree/master/docs/containertools ).
							 
						 
					
						
							
								
									
										
										
										
											2018-09-11 20:14:41 +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 (?)