ππ»
whoami
π¦
what is podman?
π€
why should I use podman?
βοΈ
autocompletion
π§ podman inspect --format ...
π€ podman --connection ...
π₯
podman auto-update
π podman auto-update
βͺ podman auto-update --rollback
π podman auto-update
Container must run inside a systemd unit
io.containers.autoupdate{/$container}
registry
local
AutoUpdate={registry,local}
π’ quadlets
π’ quadlets
~/.config/containers/systemd
my-awesome-application.container
data.volume
internal.network
systemctl --user daemon-reload
systemctl --user start my-awesome-application.service
π’ quadlets
podman run --name devconf-quadlet \
--rm -d \
-p 80:8080 \
quay.io/libpod/alpine:latest
[Container]
ContainerName=devconf-quadlet
Image=quay.io/libpod/alpine:latest
PublishPort=80:8080
[Service]
Restart=always
There might be the time for a demo at the end of the presentation
βͺ podman auto-update --rollback
Container must run inside a systemd unit
--sdnotify=container
io.containers.sdnotify{/$container}
conmon
container
Notify=true
π§ββοΈ
podman healthcheck
π podman run
π podman update
π podman healthcheck
π podman run
--health-cmd
--health-interval
--health-log-destination
--health-max-log-count
--health-max-log-size
--health-retries
...
π podman update
--health-cmd
--health-interval
--health-log-destination
--health-max-log-count
--health-max-log-size
--health-retries
...
π podman update
--health-log-destination
local
directory
events_logger
π podman healthcheck
run
π
Integrations
π« Cockpit
ποΈ Ansible
π More, if we have time...
π« Cockpit
$ sudo dnf install -y cockpit-podman
$ sudo systemctl start cockpit
Visit http://localhost:9090
ποΈ Ansible
$ sudo dnf install -y ansible
$ ansible-galaxy collection install containers.podman
---
- name: Setup some containers as a good example
hosts: localhost
gather_facts: false
vars:
container_name: "devconf-ansible"
container_image: "fedora:latest"
tasks:
- name: Create a container volume
containers.podman.podman_volume:
name: "{{ container_name }}-volume"
state: present
- name: Create a container network
containers.podman.podman_network:
name: "{{ container_name }}-network"
subnet: "172.0.0.0/24"
driver: bridge
state: present
- name: Create a container Pod
containers.podman.podman_pod:
name: "{{ container_name }}-pod"
network: "{{ container_name }}-network"
state: started
- name: Create the DevConf container
containers.podman.podman_container:
name: "{{ container_name }}"
image: "{{ container_image }}"
volumes:
- "{{ container_name }}-volume:/root:Z"
env:
YEAR: 2025
interactive: true
healthcheck: echo \"Thank you for being at DevConf $YEAR!\"
healthcheck_interval: "2s"
healthcheck_retries: 5
healthcheck_start_period: "2s"
state: started
π§©
all the other features
βΊοΈ Thank You
Thanks to the podman team for your amazing work.
podman.io
containers
containers/podman
#podman
on libera.chat
#podman:fedoraproject.org
Podman
Meet us in our community meetings
ποΈ
I am Nicola Sella, the source code of this is on codeberg/inknos/DevConf25, I go on Github as @inknos and I talk on Matrix as @nsella:fedora.im
podman auto-update
podman healthcheck
ansible
quadlets
podman kube play