Table of Contents
Deploy Containers
need to ensure you have everything installed
dnf install container-tools
use command podman to interface with runc (the container engine)
some podman commands
podman info | gives configuration details for containers |
---|---|
podman ps | shows containers that are currently running for your user account use -a to see even stopped containers |
podman image inspect | used ti inspect an image tarfile |
podman build | Build a container image with a container file |
podman run | Run a command in a new container |
podman images | List images in local storage |
podman inspect | Display configuration of a container, image, volume, network, or pod |
podman pull | Download an image from a registry |
podman cp | Copy files or directories between a container and the local file system |
podman exec | Execute a command in a running container |
podman rm | Remove one or more containers |
podman rmi | Remove one or more locally stored images |
podman search | Search a registry for an image |
Download a container Image from Registry
First check that the podman utility is configured to search and downlaod containers from the Registry needed
podman info
use
podman search image-wanted
to display a list of images on the configured registry
You can use the skopeo inspect command to examine different container image formats from a local directory or a remote registry without downloading the image
once you have the image you want you need to download it
podman pull registry.access.redhat.com/ubi8/python-38
use podman images to verify
Create container image from a container file
you can use cat to see the containert file
one you are ok with it use
podman build -t NAME:TAG DIR
NAME | Name for the new image |
---|---|
TAG | Tag for the new image. If the tag is not specified, then the image is automatically tagged as latest |
DIR | Path to the working directory. The container file must be in the working directory. If the working directory is the current directory, then you designate it by a dot (.). Use the -f flag to specify a different directory from the current one. |
once you have the container image you can then use it to run containers
Running Containers
a container can be in several states:
Created | A container that is created but is not started. |
---|---|
Running | A container that is running with its processes. |
Stopped | A container with its processes stopped. |
Paused | A container with its processes paused. Not supported for rootless containers. |
Deleted | A container with its processes in a dead state. |
NOTE podman ps only shows the the running containers
To see all containers use
podman ps -a
You can create containers to run later for example
[user@host ~]$ podman create --name python36 dd6ca291f097 c54c7ee281581c198cb96b07d78a0f94be083ae94dacbae69c05bd8cd354bbec [user@host ~]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [user@host ~]$ podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c54c7ee28158 localhost/python36:1.0 /bin/bash -c slee... 5 seconds ago Created python36
you can also start a container and reference the image if image is not there it will download it
podman run -d quay.io/rdacosta/my_httpd:lattest </code? the **-d** staand for detached otherwise it binds container to the foreground Once container is created you can start it example <code> [user@host ~]$ podman start python36 python36 [user@host ~]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c54c7ee28158 localhost/python36:1.0 /bin/bash -c slee... 6 minutes ago Up 3 seconds ago python36
you can also interface with your container once it is running podman exec -it name-container process for example
podman exec -it romantic_aryavhata bash
this will open a bash prompt
Troubleshooting
You can check if a container is running or not with
podman ps -a
if the container is listed as exited with code 1 then need to investigate a bit more
use
podman container logs container_name
you may need to pass extra variables for the container to start. Before you can do this you NEED to remove the failed container
podman rm container_name <c/code> then restart it with the -e option for example <code> [student@servera ~]$ podman run -d --name db_01 \ --network frontend \ -e MYSQL_USER=dev1 \ -e MYSQL_PASSWORD=devpass \ -e MYSQL_DATABASE=devdb \ -e MYSQL_ROOT_PASSWORD=redhat \ registry.lab.example.com/rhel8/mariadb-105