Files
podman/docs/tutorials/podman_tutorial.md
TomSweeneyRedHat 0aa2459b2d Slim down README.md and make tutorials page
Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>
2018-01-17 15:49:06 -05:00

5.4 KiB

PODMAN logo

Basic Setup and Use of Podman

Podman is a utility provided as part of the libpod library. It can be used to create and maintain containers. The following tutorial will teach you how to set up Podman and perform some basic commands with Podman.

Install Podman on Fedora

Many of the basic components to run Podman are readily available from the Fedora RPM repositories; the only exception is Podman itself. In this section, we will help you install all the runtime and build dependencies for Podman until an RPM becomes available.

Installing build and runtime dependencies

# sudo dnf install -y git runc libassuan-devel golang golang-github-cpuguy83-go-md2man glibc-static \
                                    gpgme-devel glib2-devel device-mapper-devel libseccomp-devel \
                                    atomic-registries iptables skopeo-containers containernetworking-cni

Building and installing podman

# git clone https://github.com/projectatomic/libpod/ ~/src/github.com/projectatomic/libpod
# cd !$
# make
# sudo make install PREFIX=/usr

Familiarizing yourself with Podman

Running a sample container

This sample container will run a very basic httpd server that serves only its index page.

# sudo podman run -dt -e HTTPD_VAR_RUN=/var/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \
                    -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \
                    -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \
                    registry.fedoraproject.org/f26/httpd /usr/bin/run-httpd

Because the container is being run in detached mode, represented by the -d in the podman run command, podman will print the container ID after it has run.

Listing running containers

The Podman ps command is used to list creating and running containers.

# sudo podman ps

Note: If you add -a to the ps command, Podman will show all containers.

Executing a command in a running container

You can use the exec subcommand to execute a command in a running container. Eventually you will be able to obtain the IP address of the container through inspection, but that is not enabled yet. Therefore, we will install iproute in the container. Notice here that we use the switch --latest as a shortcut for the latest created container. You could also use the container's ID listed during podman ps in the previous step or when you ran the container.

# sudo podman exec --latest -t dnf -y install iproute
# sudo podman exec --latest -t ip a

Note the IP address of the ethernet device.

Testing the httpd server

Now that we have the IP address of the container, we can test the network communication between the host operating system and the container using curl. The following command should display the index page of our containerized httpd server.

# curl http://<IP_address>:8080

Viewing the container's logs

You can view the container's logs with Podman as well:

# sudo podman logs --latest

Stopping the container

To stop the httpd container:

# sudo podman stop --latest

You can also check the status of one or more containers using the ps subcommand. In this case, we should use the -a argument to list all containers.

# sudo podman ps -a

Removing the container

To remove the httpd container:

# sudo podman rm --latest

You can verify the deletion of the container by running podman ps -a.

More information

For more information on Podman and its subcommands, checkout the asciiart demos on the README page.