# Podman
Daemonless container engine for Linux.
Intended to be a drop-in replacement for [Docker].
1. [TL;DR](#tldr)
1. [Further readings](#further-readings)
1. [Sources](#sources)
## TL;DR
> [!important]
> Podman in rootless mode (the default) leverages [subordinate user and group IDs][subordinate ids] to map containers'
> UID and GID to much higher numbers and avoid conflicts.
> This means the IDs used _inside_ containers will **not** be the same as the ones of the user running them, and it
> will probably raise permissions issues when trying to write or read from volumes.
Setup
```sh
# Install.
apt install 'podman' 'podman-compose'
dnf install 'podman'
pacman -S 'podman'
zypper install 'podman'
# Add container registries to use.
echo 'unqualified-search-registries = ["docker.io"]' > "$HOME/.config/containers/registries.conf"
echo 'unqualified-search-registries = ["docker.io"]' | tee -a '/etc/containers/registries.conf.d/docker.io'
# Set aliases for container registries.
cat <
Usage
```sh
# Get the version.
podman --version
# Get help.
man podman
man 'containers-registries.conf'
# List local images.
podman image list
podman images
# Search for images.
podman search 'fedora'
podman search --format "{{.Name}}\t{{.Stars}}\t{{.Official}}" --limit 3 'alpine'
podman search --list-tags 'registry.access.redhat.com/ubi8' --limit 4
# Pull images.
podman pull 'docker.io/library/postgres'
podman pull 'docker.io/library/python:3.10'
podman-compose pull
# List volumes.
podman volume ls
podman volume list
# Get a shell in containers.
podman run --rm --name 'syncthing' --tty --interactive --entrypoint 'sh' 'syncthing/syncthing'
podman-compose run --rm --entrypoint 'sh' 'syncthing'
# Check running containers.
podman ps
podman ps --all
# Manage compositions.
podman-compose up
podman-compose up --detach
podman-compose ps
podman-compose down
# Execute commands in containers.
podman-compose exec 'syncthing' whoami
# Clean up.
podman system prune
podman system prune --all
```
## Further readings
- [Website]
- [Documentation]
- [Docker]
- [Containerd]
- [Kaniko]
- [Volumes and rootless Podman]
- [Subordinate IDs]
### Sources
- [Pull Official Images From Docker Hub Using Podman]
- [User IDs and (rootless) containers with Podman]
[Containerd]: containerd.md
[Docker]: docker.md
[Kaniko]: kaniko.md
[Subordinate IDs]: linux/subordinate%20ids.md
[Documentation]: https://docs.podman.io/en/stable/
[Website]: https://podman.io/
[Pull Official Images From Docker Hub Using Podman]: https://www.baeldung.com/ops/podman-pull-image-docker-hub
[User IDs and (rootless) containers with Podman]: https://blog.christophersmart.com/2021/01/26/user-ids-and-rootless-containers-with-podman/
[Volumes and rootless Podman]: https://blog.christophersmart.com/2021/01/31/volumes-and-rootless-podman/