ππ» 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-updateContainer must run inside a systemd unit
io.containers.autoupdate{/$container}
registrylocalAutoUpdate={registry,local}π’ quadletsπ’ quadlets~/.config/containers/systemdmy-awesome-application.containerdata.volumeinternal.networksystemctl --user daemon-reloadsystemctl --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 --rollbackContainer must run inside a systemd unit
--sdnotify=containerio.containers.sdnotify{/$container}
conmoncontainerNotify=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-destinationlocaldirectoryevents_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 YouThanks to the podman team for your amazing work.
podman.iocontainerscontainers/podman#podman on libera.chat#podman:fedoraproject.orgPodmanMeet 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-updatepodman healthcheckansiblequadletspodman kube play