Commit Graph

2679 Commits

Author SHA1 Message Date
Danish Prakash
4f04d9e7c5 Merge pull request #29129 from jiwahn/fix-mount-idmaps-docs
docs: clarify idmap mount option syntax
2026-07-07 16:02:46 +05:30
Jiwoo Ahn
b768c1c2b5 docs: clarify idmap mount option syntax
Fixes: #24249

Signed-off-by: Jiwoo Ahn <ikwydls1314@gmail.com>
2026-07-05 23:39:18 +09:00
Paul Holzinger
4b5c1b67bf docs: update network create --route description
The netavark mention is not needed as we only support it now. Then
update it for the new route type syntax which was not documented in
commit daaf8b62ba.

Also add an example and a note that containers with CAP_NET_ADMIN can
alter routes still.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2026-07-03 16:57:21 +02:00
Paul Holzinger
adb2307e18 docs: fix network create no_default_route doc
With netavark v2 we require true not 1.

This was correctly changed in commit bb02e49080 but then reverted in
commit 7612af4c0e again as it did not properly rebase and solve the
conflicts.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2026-07-03 16:15:52 +02:00
Paul Holzinger
db8f8298dd fix podman machine os upgrade distro check
We renamed the variant in machine-os to podman-machine-os so it is not
coreos:
a5c8fbcfc6

Now the main issue with this is the code runs inside the VM, which means
updates from 6.0.0 to the next one still will be broken and needs the os
apply command until this can work again. Of course a new init will also
work with the new image.

Fixes: #29085

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2026-06-30 15:12:08 +02:00
Shuai Yuan
4586dc2c60 Honor label filters for volume prune when all is set
NormalizeVolumePruneFilters discarded every query filter when the "all"
pseudo-filter was set, deleting label/label!/until before they reached the
volume filter generator. As a result `podman volume prune --all --filter
label=foo` ignored the label and pruned every unused volume.

"all" only widens the prune scope from anonymous-only to all unused volumes;
it is orthogonal to the label filters, which must still select which of those
volumes are removed. Drop only the "all" key and keep the remaining filters so
they continue to apply.

NormalizeVolumePruneFilters is shared by the local (abi), remote (libpod API),
and Docker-compat prune paths, so all three were affected.

Signed-off-by: Shuai Yuan <shuaiyuanzju@gmail.com>
2026-06-29 17:51:27 +08:00
Brent Baude
1479c7d6b6 Merge pull request #29017 from Luap99/readthedocs
build the swagger.yml on readthedocs
2026-06-23 13:45:12 -05:00
Paul Holzinger
c2ffe88ce0 build the swagger.yml on readthedocs
One problem with the swagger upload is we need an extra bucket and then
we need our own custom version schema and selector on the website. If we
can just embed the swagger.yml as part of the official build we can get
rid of all of that and have a much simpler way as the regular
readthedocs version selector will work.

We also no longer need to maintain an extra bucket upload and no longer
need to update the version list which was forgotten all the time.

Fixes: #28827

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2026-06-23 19:10:34 +02:00
Paul Holzinger
50a7acb364 Revert "docs: introduce custom version selector in api.html"
This reverts commit f87c8b9cba.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2026-06-23 19:09:30 +02:00
Paul Holzinger
250c530055 Revert "docs: generate Reference version list from json file"
This reverts commit 858150288f.

In the next commit I add a custom build for the swagger yaml which adds
it as part of the main readthedocs build so we can use the default
version selector and drop our custom workarounds.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2026-06-23 19:09:30 +02:00
Lewis Denny
11f8197b3f [DOCS] Update save and load docs to make dir loading support clearer
Podman remote clients don't support loading images from directories,
this patch aims to make that clearer.

This patch also aims to make it clearer that podman-load can load from
URLs, directories and tar archives.

Drop incorrect claims that --input is required on remote clients
(stdin reading is supported) and avoid 'Linux only' wording since
podman has native FreeBSD support.

Fixes: https://github.com/containers/podman/issues/27952

Signed-off-by: Lewis Denny <lewisdenny@me.com>
2026-06-24 02:11:19 +10:00
Matt Heon
a2280a3e87 Merge pull request #28380 from simonbrauner/issue-26960
Handle uninstantiated template quadlets
2026-06-23 11:36:34 -04:00
Šimon Brauner
010e7ce556 Handle uninstantiated template quadlets
Fixes: https://github.com/containers/podman/issues/26960

Signed-off-by: Šimon Brauner <sbrauner@redhat.com>
2026-06-23 14:34:20 +02:00
Radostin Stoyanov
2c7aeab70b Freeze cgroup during live checkpoint
When checkpointing a container with --leave-running, libpod dumps the
container's memory via the OCI runtime (CRIU) first and only captures
the rootfs diff and named volumes afterwards. CRIU thaws the container
as soon as the memory dump finishes, so the processes inside the
container continue to run between the memory snapshot and the
file-system capture. As a result, the checkpoint can be inconsistent:
have CRIU images and a file system that reflect different points in time.

To fix this, we freeze the container's cgroup before invoking the OCI
runtime and thaw it again only after the checkpoint image/archive has
been written. The OCI runtime calls CRIU with the freezer cgroup and
restores it to its previous state once the dump completes, so a
container that was already frozen stays frozen across the dump and
the file system is captured at the same instant as the CRIU images.
This mirrors the approach other engines (e.g. CRI-O and containerd).

The default (stopping) checkpoint functionality is not affected by this
issue because CRIU leaves the tasks dead after the dump.

This patch also adds a regression test for the consistency of live
(--leave-running) checkpoints. The container runs a workload that
keeps an in-memory counter in sync with a value written to a file
on its root file system, maintaining the invariant that the on-disk
value never gets ahead of the in-memory counter.

Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
2026-06-23 13:30:32 +01:00
Paul Holzinger
4ae189843b Merge pull request #28637 from ValentinTorassa/manifest-push-retry-options
Add --retry support to manifest push
2026-06-23 12:00:03 +02:00
KyounghoonJang
9e38f86993 feat: add --ignore flag to network rm
Add `--ignore` to `podman network rm` so removing a missing
network returns success instead of exit code 1.

Keep existing error behavior for networks in use and other failures.

This commit message was translated from Korean to English using an LLM.

Fixes: #28363
Signed-off-by: KyounghoonJang <matkimchi_@naver.com>
2026-06-23 10:52:47 +09:00
Valen Torassa
72349937e3 Add --retry support to podman manifest push
This patch adds retry plumbing for podman manifest push.

CLI flags added: --retry and --retry-delay
Flags are read into ImagePushOptions and passed through the local ABI path
Remote clients and REST API now respect retry settings (retry / retryDelay)
retry-delay is parsed with time.ParseDuration
Defaults fall back to containers.conf when the flags are not set
Updated manpages, Swagger comments, and e2e tests to validate retry behavior

Fixes: #28590

Signed-off-by: Valen Torassa <valentintorassacolombero@gmail.com>
2026-06-22 15:49:27 -03:00
Ashley Cui
138f3c3a34 Merge pull request #28979 from stefan8/docs/save-load-vs-export-import
docs: clarify save/load vs export/import distinction
2026-06-22 09:42:42 -04:00
Kit Dallege
d86ee1500e docs: ignore generated quadlet install and rm manpages
Signed-off-by: Kit Dallege <xaum.io@gmail.com>
2026-06-20 12:57:10 +02:00
Kit Dallege
ceae6e85ec docs: share --reload-systemd option between quadlet install and rm
Extract the --reload-systemd option text into a shared option file
at docs/source/markdown/options/reload-systemd.md and reference it
with @@option in both podman-quadlet-install and podman-quadlet-rm
manpages, following the established pattern for shared options.

Rename the manpages from .md to .md.in to indicate preprocessing.

Fixes #28370

Signed-off-by: Kit Dallege <xaum.io@gmail.com>
2026-06-20 12:57:10 +02:00
Grzegorz Szczepanczyk
9cb516acb0 docs: explain save/load vs export/import
The four man pages cross-reference each other but never say how the two
workflows actually differ, which keeps confusing users. save/load work on
images and keep layers, history and tags; export/import work on a
container's filesystem, flattened into a single-layer tarball with no
history (import then builds a new image from it).

Add a short, matching note to each of the four pages pointing at the
complementary command. Kept to that distinction, nothing about pulling
from a registry.

Fixes: #22155

Signed-off-by: Grzegorz Szczepanczyk <g.szczepanczyk@getprintbox.com>
2026-06-19 13:25:06 +02:00
Matt Heon
df12c9806c Merge pull request #28214 from MayorFaj/feat/28189-volume-rename
feat: implement volume rename functionality
2026-06-18 14:47:35 -04:00
Matt Heon
20e3bf634b Merge pull request #28951 from MayorFaj/feat/quadlet-image-volume
add support for ImageVolume option in Podman Quadlet
2026-06-18 11:15:53 -04:00
Paul Holzinger
ea87414454 docs: fix incorrect statement in podman-quadlet-basic-usage
The services cannot be enables so we must not document this, instead
provide the proper pointer on what to do.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2026-06-17 19:55:34 +02:00
MayorFaj
c6e5eb5553 Add support for ImageVolume option in Podman Quadlet
Signed-off-by: MayorFaj <mayorfaj@gmail.com>
2026-06-17 07:19:07 +01:00
MayorFaj
d01b7ae534 libpod: add volume rename support
Add a podman volume rename command, REST API endpoint, and bindings for renaming volumes.

The rename updates both the VolumeConfig and VolumeState tables in a single transaction and moves the volume directory on disk, rolling back if the transaction fails. Renaming an anonymous volume converts it to a named volume. Volumes that are in use, mounted, or backed by a volume plugin or the image driver cannot be renamed.

Fixes: #28189
Signed-off-by: MayorFaj <mayorfaj@gmail.com>
2026-06-11 21:56:15 +01:00
Danish Prakash
337f104a30 Merge pull request #28822 from Honny1/host-vs-name
Document container name vs hostname and network DNS
2026-06-11 10:19:16 +05:30
Paul Holzinger
cefaa0ee44 Merge pull request #28712 from elezar/info-cdi-devices
info: report configured and discovered CDI devices
2026-06-10 14:34:35 +02:00
Jan Rodák
2aa54ee55f Document container name vs hostname and network DNS
Clarify that auto-generated names may use underscores, that DNS-enabled
networks resolve container names as given, and that container_name_as_hostname
changes the UTS hostname only.

Fixes: https://github.com/containers/podman/issues/28754

Signed-off-by: Jan Rodák <hony.com@seznam.cz>
2026-06-10 11:28:14 +02:00
Paul Holzinger
486bacd3e4 Merge pull request #28335 from axel7083/refactor/quadlet-applications
refactor: podman quadlet sub-command
2026-06-05 17:55:51 +02:00
Paul Holzinger
5e0df74d6d Merge pull request #28847 from pksadiq/docs-systemd-fix-typo
docs(podman-systemd.unit.5.md): fix a typo
2026-06-03 17:57:12 +02:00
Mohammed Sadiq
4af93ba05a docs(podman-systemd.unit.5.md): fix a typo
systemd container user path should be 'users'.  Not 'user'

Signed-off-by: Mohammed Sadiq <sadiq@sadiqpk.org>
2026-06-03 20:46:11 +05:30
Giuseppe Scrivano
1a76d464fd cmd, commit: change --pause default to true
Pause the container by default during commit.  It is safer as it
avoids conflicts, and potentially security issues, when another
process is accessing the container rootfs.

Originally this was not done because it was a breaking change and
rootless containers weren't able to use the freezer cgroup controller.
Now that we support only cgroup v2, there is no gap anymore with
root (exotic configurations can still use --pause=false).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2026-06-03 07:28:22 +02:00
axel7083
496646f0da feat: update podman quadlet sub-command
Fixes: #28118
Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com>
2026-06-02 09:52:49 +00:00
Evan Lezar
e740848eb9 info: report configured and discovered CDI devices
Add CDI information to podman info and podman system info.

The host info now includes the configured CDI spec directories and the
currently discovered CDI devices. The devices are resolved when the info
endpoint is called and there is no need to refresh these in the background.

Also map the same data into the Docker-compatible /info response as CDISpecDirs and DiscoveredDevices.

Signed-off-by: Evan Lezar <elezar@nvidia.com>
2026-06-01 21:45:41 +02:00
Tom Sweeney
e03516f6d4 Add compression-level/format and force-compression links in docs
Buildah v1.44.0 now uses --compression-format, --compression-level, and
--force-compression options.  Add these options to the build and farm
man pages.

Signed-off-by: Tom Sweeney <tsweeney@redhat.com>
2026-05-29 09:10:50 -04:00
Jan Rodák
5b98ee331f Merge pull request #28641 from jiwahn/feat/container-annotation-filter
Feat/container annotation filter
2026-05-26 12:00:40 +02:00
Jan Rodák
baf8fa6223 Document pasta forwarding mode for rootless bridge networks
Signed-off-by: Jan Rodák <hony.com@seznam.cz>
2026-05-20 14:24:48 +02:00
Jan Rodák
517070e750 Merge pull request #28673 from kyounghunJang/feat/add-volume-prune-dry-run
volume prune: add dry-run support
2026-05-18 19:26:18 +02:00
Byounguk Lee
b50b9c0dbc events: support artifact events with refactored event forwarding
- libpod/events.go & libpod/runtime.go: Added the `Artifact` event type.
  Refactored and deduplicated event forwarding logic by introducing
  `spawnEventForwarder[T any]`, replacing separate goroutine loops for
  images and artifacts. Implemented graceful shutdown and resolved eventer
  initialization race conditions.
- libpod/events: Implemented event filtering by name/ID, updated journald
  and logfile readers/writers for artifact events, and added `Artifact` to
  `ToHumanReadable` formatting.
- cmd/podman: Added shell auto-completion for `artifact=` and `type=artifact` filters.
- docs/test: Documented the `artifact` event type, statuses, and filters in
  `podman-events.1.md`. Added an end-to-end test in `events_test.go` to verify
  event emissions.

Signed-off-by: Byounguk Lee <nimdrak@gmail.com>
2026-05-18 00:05:10 +00:00
KyounghoonJang
3d899a8c25 volume prune: add dry-run support
Add a --dry-run option to show which volumes would be pruned without removing them.

Related: #27838
Signed-off-by: KyounghoonJang <matkimchi_@naver.com>
2026-05-16 19:03:34 +09:00
Paul Holzinger
e0b2e70e4f Merge pull request #28707 from MayorFaj/docs/28702-pod-ps-clarify
docs: clarify podman pod ps default output
2026-05-15 12:10:02 +02:00
Jan Rodák
fb75774a43 Document tmpcopyup default behavior for tmpfs mounts
Related to: https://github.com/containers/podman/issues/28684

Signed-off-by: Jan Rodák <hony.com@seznam.cz>
2026-05-15 09:22:44 +02:00
MayorFaj
8ae6f02b3f docs: clarify podman pod ps default output
Signed-off-by: MayorFaj <mayorfaj@gmail.com>
2026-05-15 07:46:47 +01:00
Jiwoo Ahn
ec583fa17f filters: add annotation filter for containers Fixes: #28562
Signed-off-by: Jiwoo Ahn <ikwydls1314@gmail.com>
2026-05-11 20:24:28 +09:00
Matt Heon
d420fbfde3 Add migration code for BoltDB to SQLite
This is gated behind a new option in `podman system migrate`,
`--migrate-db`, or by a system restart being performed.

BoltDB support was removed in Podman 6, so we are certain that,
when we start Podman, a SQLite state is in use. However, if we
also detect a valid BoltDB state, we will attempt a migration.

Migration is performed by retrieving all volumes, pods, and
containers (in that order, to ensure there are no dependency
conflicts) from the Bolt database, when adding them to the SQLite
database. If there is a conflict - IE, a container exists in both
SQLite and Bolt - we skip migration for that object. The old DB
is then renamed so we do not try to migrate it again.

Our ability to test complex migration scenarios is limited, but
this should handle simple migrations easily.

This is a heavily adapted version of #27660 rebuilt to work with
Podman 6.0. Substantial changes were required to throw errors
when a BoltDB database is detected and no migration is being
performed. Firstly, for automatic on-reboot migrations, we need
to have a deferred error returned by getDBState (very early in
runtime initialization) that is only acted on much later (once we
know for certain a state refresh is/is not being performed).
The `system migrate --migrate-db` command was much more
problematic. Conceptually, it's not terrible - add a flag to the
runtime to suppress errors, set that flag only when calling the
`system migrate` command with `--migrate-db` - but it unveiled a
serious problem with how we do runtime init (special flags to the
runtime were being ignored because the image runtime set the
Libpod runtime first and had none of the proper handling) which
took a genuinely annoying amount of time to identify and fix.

This cannot be tested automatically, as the ability to create Bolt
databases has been entirely removed with Podman 6.

This also includes 9b810aed3a from
the v5.8 branch by Luap99, which I have had to squash into this
commit to satisfy the build-each-commit check. It was just a
simplification of the SQLite path check.

Signed-off-by: Matt Heon <matthew.heon@pm.me>
2026-05-08 14:07:17 -04:00
Paul Holzinger
a267230118 docs: fix incorrect page name
The syntax used here was wrong, see all the other existing pages.

Like this the man page gets rendered as "podman-container.unit(5)()" and
the HTML web page title will just be "NAME — Podman documentation"
instead of the proper man page name.

Fix this by using the right syntax.

Fixes: 7612af4c0e ("Rewrite the Quadlet documentation")

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2026-05-05 13:00:53 +02:00
Jan Kaluza
7612af4c0e Rewrite the Quadlet documentation
This commit does the following:

- Splits the podman-systemd.unit.5.md into multiple files - one for each quadlet file type.
- Adds the podman-quadlet-basic-usage.7.md for quadlet examples.
- Majority of the text in the new files is copied from the podman-systemd.unit.5.md
- Adds support for very simple condditional in the markdown_preprocess.
- Uses new logic in markdown_preprocess in options/*.md to use a single .md file for both
  podman subcommands man-pages and quadlet man-pages. This deduplicates the Quadlet man-pages a lot.
- Adds new `@@option quadlet:source.md`` preprocess command to import such .md files from options directory.

Signed-off-by: Jan Kaluza <jkaluza@redhat.com>
2026-05-04 10:53:36 +02:00
Tom Sweeney
3ce0e3e17c Merge pull request #28624 from Honny1/labels
`ps`, `pod ps`, `volume ls`: format labels as comma-separated `key=value` for Docker compatibility
2026-04-30 13:37:14 -04:00
Matt Heon
99b2fe252e Merge pull request #28455 from simonbrauner/fix-filtering-with-negated-labels
Fix filtering with negated labels
2026-04-30 12:08:31 -04:00