User Tools

Site Tools


linux:classnotes:rh134:containers:deploy

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 
linux/classnotes/rh134/containers/deploy.txt · Last modified: by 127.0.0.1