Stewlab

Podman CLI Guide

This guide should assist when using Podman at the command line

the following is needed for rootless container access

NOTE: More info here

sudo touch /etc/subuid /etc/subgid
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 thom
podman system migrate

install various useful base images

# set up images for dev env
podman pull docker.io/library/httpd
podman pull docker.io/amazon/aws-cli
podman pull docker.io/amazon/dynamodb-local
podman pull docker.io/python
podman pull docker.io/alpine
podman pull docker.io/ruby
podman pull docker.io/openjdk
podman pull docker.io/ubuntu:20.04
podman pull docker.io/ubuntu:18.04
podman pull docker.io/debian
podman pull docker.io/busybox
podman pull docker.io/redis
podman pull docker.io/node
podman pull docker.io/postgres
podman pull docker.io/hello-world
podman pull docker.io/mongo
podman pull docker.io/httpd
podman pull docker.io/nginx

show installed images

podman images

create various containers

podman run --name puw-html-host -v $(pwd):/usr/share/nginx/html:ro -p 8080:80 -d nginx
podman run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -p 8080:80 -d nginx
podman run -dt -p 8080:80/tcp httpd
podman run -p 8000:8000 amazon/dynamodb-local
podman run --rm -it amazon/aws-cli --version

create workspace volume for persistent data

podman volume create workspace-vol
podman volume inspect workspace-vol
podman volume ls

backup volume

podman run --rm -v workspace-vol:/mnt/volume -v <host_backup_dir>:/backup alpine tar czf /backup/workspace-vol.tar.gz /mnt/volume

restore volume

podman run --rm -v workspace-vol:/volume -v <host_backup_dir>:/backup alpine tar -C /volume/ -xzf /backup/workspace-vol.tar.gz

run temp ubuntu machine to test stuff

podman run -it docker.io/library/ubuntu:18.04 /bin/bash

build workspace image

podman build -f Containerfile -t work-space .

create workspace container (can likely remove -it flag)

podman run -it work-space /bin/bash

create workspace container with graphical support

podman run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw"  work-space /bin/bash

create workspace container with graphical support and volume mount

podman run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw"  -v workspace-vol:/mnt/external  work-space /bin/bash

create workspace container with graphical support, volume mount, and ssh credentials from host

podman run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw"  -v workspace-vol:/mnt/external -v ~/.ssh:/root/.ssh:ro --name <container_name> work-space /bin/bash

create workspace container with graphical support, volume mount, ssh credentials from host, and audio support

podman run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw"  -v workspace-vol:/mnt/external -v ~/.ssh:/root/.ssh:ro --name <container_name> --device /dev/snd work-space /bin/bash

start workspace container

podman container ls
podman container start <container_name>
podman container exec -it <container_name> bash

attach to workspace container

podman container ls
podman attach <container_name>

stop workspace container

podman container ls
podman container stop <container_name>

check podman disk usage

podman system df