Commit graph

2740 commits

Author SHA1 Message Date
Jan Rodák
fda861989d
Merge pull request #29395 from scallaway/image-scp-compression
image scp: add --compression-format and --compression-level
2026-09-17 17:09:06 +02:00
Paul Holzinger
91238111ba
Merge pull request #27857 from arsenalzp/podman60_27724
Fix startup health check command behavior
2026-09-17 16:32:42 +02:00
seonghun lee
655b8cee14 Hide --cpu-rt-period/--cpu-rt-runtime and mark them as NOP
Podman 6 dropped cgroups v1 support, and the kernel real-time
scheduler cgroup settings only exist on cgroups v1. That means the
--cpu-rt-period and --cpu-rt-runtime options can never take effect
anymore: on cgroups v2 the values only produce a warning and are
discarded.

As agreed in the linked issue, the full removal of the options is
deferred to the next major release (7.0) to avoid a breaking change
for anyone still setting them. For 6.x this commit implements the
agreed interim step:

- remove the option documentation (docs/source/markdown/options/
  cpu-rt-period.md and cpu-rt-runtime.md) and drop the @@option
  references from the podman-create, podman-run, podman-update and
  podman-container-clone man pages
- hide both flags from --help output
- change the existing warning to state that the option is a NOP,
  that the value is ignored, and that the option will be removed in
  the next major release

The e2e tests are updated to match the new warning text. Actual
removal of the flags and the spec fields is left for Podman 7.0.

Part of #29750

Signed-off-by: seonghun lee <harrisleesh@gmail.com>
2026-09-17 01:15:52 +09:00
i-OmSharma
552b636939
docs: clarify that --ulimit size limits are in bytes
The value given to --ulimit is passed to the container unchanged and is
interpreted by setrlimit(2), so size limits such as memlock are in bytes.
The ulimit shell builtin scales most of those values when printing them
(kbytes for -d, -l, -m, -s, 512-byte blocks for -c, -f), which makes the
value reported inside the container look wrong.

Document the unit used by each limit type, add an example, and note that
unit suffixes are not accepted. No behavior change.

Fixes: #25236

Signed-off-by: i-OmSharma <sharmaom1201@gmail.com>
2026-09-16 15:24:58 +05:30
Oleksandr Krutko
91c3d1d8ec Fix health-startup-cmd behaviour when the value is not set
Fixes: #27724

Signed-off-by: Oleksandr Krutko <alexander.krutko@gmail.com>
2026-09-15 22:09:57 +03:00
Matt Heon
6e10d5ac76
Merge pull request #29375 from Mahajan-Sachin/quadlet-volume-remainafterexit
quadlet: do not set RemainAfterExit=yes for volume units by default
2026-09-14 08:52:48 -04:00
Danish Prakash
7417ed0613
Merge pull request #29388 from AftAb-25/fix/events-network-filter
events: add missing support for NETWORK filter
2026-09-11 16:39:41 +05:30
Aftab Ali
ff12dabebb events: add missing NETWORK filter to generateEventFilter
podman events --filter network=<name> was unconditionally returning
'NETWORK is an invalid filter' because the NETWORK case was absent
from the generateEventFilter switch statement in filters.go.

All other first-class event types (container, image, pod, volume)
had corresponding filter cases, but the Network type - despite being
fully defined in config.go along with NetworkConnect/NetworkDisconnect
statuses and the Event.Network field - had no handler.

Add the NETWORK case to filter by network name (e.Network), consistent
with Docker's --filter network= behaviour.  ID-prefix matching is
intentionally omitted: for network connect/disconnect events e.ID
holds the container ID, not the network ID, so prefix matching would
only work for create/remove events and silently miss join/leave events.

Also add unit tests (filters_test.go), integration tests
(test/e2e/events_test.go, test/system/090-events.bats), shell
completion support for --filter network= (completion.go), and
document the new filter key in the man page.

Fixes: https://github.com/podman-container-tools/podman/issues/29387
Signed-off-by: Aftab Ali <aftab123215@gmail.com>
2026-09-11 14:31:30 +05:30
Scott Callaway
79b35ad0d9
image scp: accept --compression-format=none
Until now the default could only be expressed by leaving the option off, which
reads as an omission rather than a choice and gives a script no way to say it
wants the archive transferred as podman save wrote it.

Accept none as a format meaning exactly that. It is taken on the API path too,
so both interfaces share one vocabulary, and it is treated as the absence of a
format throughout: nothing is compressed, a level attached to it is rejected the
same way a level with no format is, and the local user to user transfer has
nothing to warn about ignoring.

The remote client still leaves it off the request, so naming the default does
not make a transfer fail against a service that predates these options.

Signed-off-by: Scott Callaway <github@scottcallaway.co.uk>
2026-09-10 16:45:30 +01:00
Jason Frey
fba5515103
Add a tutorial for adding additional architectures to the bootc image
Built as a general podman machine custom OS tutorial but using the
architectures use case as an example.

Related to #29688

Signed-off-by: Jason Frey <fryguy9@gmail.com>
2026-09-09 15:54:43 -04:00
Scott Callaway
8cec428401
image scp: add --compression-format and --compression-level
Expose the compression the transfer already knows how to do, and document what
each option means on each path.

--compression-format takes gzip or zstd, matching the vocabulary
--compression-format already uses on podman push, minus the algorithms this
cannot produce or detect. --compression-level takes the level, and is rejected
without a format to apply it to rather than being silently ignored.

The level needs one caveat spelling out in the man page. A remote source passes
it to the command line compressor, where every value is distinct. A local source
compresses through c/image, which groups zstd levels into four bands, so 10 and
above are the same there. The accepted zstd range also stops at 19 rather than
podman push's 20, because the command line compressor needs --ultra past that.

The flags are validated before the engine is reached, so podman --remote reports
a bad combination without a round trip; the transfer validates again for callers
arriving over the API.

Fixes: #23192
Signed-off-by: Scott Callaway <github@scottcallaway.co.uk>
2026-09-07 16:03:54 +01:00
Sachin Mahajan
e822e89e5d quadlet: do not set RemainAfterExit=yes for volume units by default
Do not set RemainAfterExit=yes by default when converting Quadlet
.volume files to systemd oneshot services.

Setting RemainAfterExit=yes causes systemd to consider the volume
service active even after the volume is deleted manually, preventing
systemd from re-executing volume creation when dependent container
services restart.

Fixes #27862

Signed-off-by: Sachin Mahajan <sachinmahajan903@gmail.com>
2026-09-07 16:26:10 +05:30
Xiaowen-Yang
830c672adf docs: clarify that container prune excludes containers associated with pods
Fixes: #29213
Signed-off-by: Xiaowen-Yang <xiaowenyang52@gmail.com>
2026-09-03 20:58:57 +02:00
Ashley Cui
af579ec299 Add --platform to podman push
When pushing a manifest list, --platform=OS[/Arch[/Variant]] selects and pushes a single platform-specific manifest instead of the entire list.
Also, update compat POST /images/{name}/push to support the platform param (Compat v1.46)

Signed-off-by: Ashley Cui <acui@redhat.com>
2026-09-01 11:30:48 -04:00
Raniere Gaia Costa da Silva
50f9b00636 Fix list markup in Markdown
Signed-off-by: Raniere Gaia Costa da Silva <Raniere.CostadaSilva@gesis.org>
2026-08-31 10:13:34 +02:00
Matt Heon
f542424eab
Merge pull request #29603 from gerryd/feature/create-passwd
Add support for --passwd to the create command
2026-08-27 22:03:01 -04:00
Gerry Demaret
bd8de9f7aa Add support for --passwd to the create command
Give create the same --passwd flag as run currently has.

Signed-off-by: Gerry Demaret <gerry@x-net.be>
2026-08-27 15:46:30 +02:00
Matt Heon
610c31d0d0
Merge pull request #29602 from jmtd/patch-2
Update podman-manifest-add.1.md.in to correct `manifest add` examples
2026-08-25 10:31:39 -04:00
Matt Heon
8efac905d6
Merge pull request #29530 from umar11b/artifact-ls-quiet
Some checks failed
ci / sys local root fedora-prior (push) Has been cancelled
ci / int local rootless fedora-prior (push) Has been cancelled
ci / sys local rootless fedora-prior (push) Has been cancelled
ci / int remote root fedora-prior (push) Has been cancelled
ci / sys remote root fedora-prior (push) Has been cancelled
ci / int local root fedora-rawhide (push) Has been cancelled
ci / sys local root fedora-rawhide (push) Has been cancelled
ci / int local rootless fedora-rawhide (push) Has been cancelled
ci / sys local rootless fedora-rawhide (push) Has been cancelled
ci / int remote root fedora-rawhide (push) Has been cancelled
ci / sys remote root fedora-rawhide (push) Has been cancelled
ci / apiv2 root fedora-current (push) Has been cancelled
ci / bindings root fedora-current (push) Has been cancelled
ci / compose_v2 root fedora-current (push) Has been cancelled
ci / docker_py root fedora-current (push) Has been cancelled
ci / unit root fedora-current (push) Has been cancelled
ci / apiv2 rootless fedora-current (push) Has been cancelled
ci / compose_v2 rootless fedora-current (push) Has been cancelled
ci / farm rootless fedora-current (push) Has been cancelled
ci / unit rootless fedora-current (push) Has been cancelled
ci / upgrade v5.3.1 root fedora-current (push) Has been cancelled
ci / upgrade v5.6.2 root fedora-current (push) Has been cancelled
ci / machine linux amd64 (push) Has been cancelled
ci / windows unit (push) Has been cancelled
ci / windows e2e (push) Has been cancelled
ci / windows machine hyperv (push) Has been cancelled
ci / windows machine wsl (push) Has been cancelled
ci / macos machine applehv (push) Has been cancelled
ci / macos machine libkrun (push) Has been cancelled
ci / Total Success (push) Has been cancelled
Add --quiet to podman artifact ls
2026-08-21 18:35:20 -04:00
Matt Heon
fbb90e15b0
Merge pull request #29541 from The-indigo/no-heading
Added implementation for --noheading option for podman farm list
2026-08-21 17:35:21 -04:00
Anisha Khairnar
0f9920fdb1 docs: fix the documented --detach-keys character list
Signed-off-by: Anisha Khairnar <anishakhairnar284@gmail.com>
2026-08-21 14:45:58 +05:30
umar11b
a46392e486 Add --quiet to podman artifact ls
Problem: podman artifact ls has no way to print just artifact
identifiers. Scripts that want to act on artifacts (e.g. remove them)
have to parse table output or use --format {{.Digest}}. Every other
listing command in podman (images, ps, artifact push/pull) already
supports -q/--quiet for this.

Impact: users can now run `podman artifact ls --quiet` to get one
digest per line, no header, suitable for piping into other podman
commands.

Change: adds a --quiet/-q bool flag to the list command. When set (and
--format is not also given), output.Digest is printed for each
artifact instead of the table.

Signed-off-by: umar11b <uzaman2018@gmail.com>
2026-08-20 16:31:13 -04:00
Adeyemi Adepoju
c7f04d0692 Added implementation for --noheading option for podman farm list
Signed-off-by: Adeyemi Adepoju <adepojuadeyemi11@gmail.com>
2026-08-20 13:02:58 -04:00
Jonathan Dowland
309bc57322 Update podman-manifest-add.1.md.in to correct manifest add examples
Several of the examples given for `podman manifest add` were missing the manifest name argument and one had a `sudo` prefix.

Signed-off-by: Jonathan Dowland <jdowland@redhat.com>
2026-08-20 14:05:44 +01:00
Paul Holzinger
f02df3e081
docs: document hostIP for --publish better
Document the default_host_ips option here to make it more visible. And
clarify the default v4/v6 bind behavior.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2026-08-20 12:38:11 +02:00
Jan Rodák
4edc8d68e3
Merge pull request #29484 from ellieayla/artifact-list-json-output
feat: Add output format: podman artifact ls --format=json
2026-08-19 17:41:01 +02:00
ellieayla
f596bb7a73 feat: Add output format: podman artifact ls --format=json
The 'podman artifact ls' command supports a --format flag accepting a go template string. Some commands (eg 'podman image ls') accept a --format=json parameter, and export pure json object to stdout.

This change adds a --format=json output mode to artifact lists too.

Includes simple documentation mention of --format=json option alongside go template description.

Signed-off-by: ellieayla <1447600+me@users.noreply.github.com>
2026-08-19 10:18:10 -04:00
Jan Rodák
c21fb45ac8
Merge pull request #29378 from danishprakash/fix-farm-build-tag
farm: handle tagged --tag references on build
2026-08-19 09:55:37 +02:00
Danish Prakash
5745ac69e0
farm: handle tagged --tag references on build
podman farm build pushes each per-arch image to the registry by
appending `UnknownDigestSuffix` to the image specified using --tag. This
fails because a tag is not expected when UnknownDigestSuffix is used.
Parse the image reference and pass only the untagged image
reference when podman does this suffixed push to the registry.

Fixes #25039

Co-authored-by: Kevin Crocombe <kevin.crocombe@pegortech.co.uk>
Signed-off-by: Danish Prakash <contact@danishpraka.sh>
2026-08-19 12:44:54 +05:30
Matt Heon
4c253a899e
Merge pull request #29540 from hihry/fix/updateDocs
docs: remove hardcoded config paths in favor of man page references (#29187)
2026-08-18 15:01:23 -04:00
hihry
65a33be7ed docs: remove hardcoded config paths in favor of man page references
Remove hardcoded configuration file directory paths from podman.1.md and podman-image-trust.1.md.in. Instead of hardcoding paths that become outdated, direct readers to their respective man pages (such as containers.conf(5) and containers-policy.json(5)) for complete path resolution details.

Fixes: #29187

Signed-off-by: hihry <work.himanshu.r.v@gmail.com>
Signed-off-by: Himanshu Ravindra Iwanati <work.himanshu.r.v@gmail.com>
2026-08-18 19:50:32 +05:30
umar11b
db6edf74c8 farm: add --quiet/-q flag to podman farm list
The farm command is helpful when it comes to building
multi-architecture container images, with a build out on various
different CPU architecture machines (e.g. amd64, arm64 etc). This
produces a multi-architecture image usable on many different kinds
of machines. Once those farms are built, we can list them out (ls)
in a human readable format.

Currently, podman farm list prints out every field (name,
connections, default, etc). The --quiet/-q flags cut the noise by
only printing the names of the farms, rather than all the other
farm list metadata.

The benefit of having this feature is for automation and scripts to
pull just the farm names from the list, which is mostly important
for CI pipelines to loop over.

Signed-off-by: umar11b <uzaman2018@gmail.com>
2026-08-15 20:52:18 -04:00
Matt Heon
3f62b3cf46
Merge pull request #29503 from Luap99/rm-locale
docs: remove locale translations
2026-08-14 09:20:59 -04:00
Paul Holzinger
ac43fe8091
docs: remove locale translations
They are currently not shown anywhere so they provide no real value to
end users. They also have not been updated since they were added three
years ago.

Most users never update markdown.po but some did so that creates
unnecessary diffs on PRs for things that add no value.

To avoid that lets just remove them, as discussed at the community
meeting on Aug 13 2026. We are not against having translations again in
the future but it would need to have a proper process in place with
active people maintaining them and so that it shows up somewhere useful.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2026-08-13 18:39:18 +02:00
David Meech
628687787c docs/quadlet-list-output: reflect ls alias addition in subcoommand tables
Signed-off-by: David Meech <davemeech@proton.me>
2026-08-12 17:07:02 -04:00
David Meech
3658a91070 docs/quadlet-list-output: add alias list to secret ls manpage
Signed-off-by: David Meech <davemeech@proton.me>
2026-08-12 17:07:02 -04:00
David Meech
49d4d75bf1 docs/quadlet-list-output: remove runc reference from runtime-flag in postman.1.md
Signed-off-by: David Meech <davemeech@proton.me>
2026-08-12 17:07:02 -04:00
David Meech
037abbe870 docs/quadlet-list-output: add default outputs in quadlet-list manpage
Signed-off-by: David Meech <davemeech@proton.me>
2026-08-12 17:07:01 -04:00
David Meech
88856d9577 docs/quadlet-list-output: add alias list to artifact and network ls manpages
Signed-off-by: David Meech <davemeech@proton.me>
2026-08-12 17:07:01 -04:00
David Meech
cff7f8fdaa docs/quadlet-list-output: remove help entry from postman-artifact-pull manpage
Signed-off-by: David Meech <davemeech@proton.me>
2026-08-12 17:07:01 -04:00
David Meech
6de99de4cb docs/quadlet-list-output: add default outputs in artifact-ls manpage
Signed-off-by: David Meech <davemeech@proton.me>
2026-08-12 17:07:01 -04:00
Paul Holzinger
5207886178
Merge pull request #29285 from satwiksps/keep-groups-limitation
docs: document keep-groups limitation with systemd services
2026-08-11 17:20:10 +02:00
Jan Rodák
6394caebcd
Merge pull request #29417 from sahilnyk/quadlet-umask
quadlet: add Umask= key to set container umask without PodmanArgs
2026-08-11 14:05:30 +02:00
Salih Muhammed
aec2f54ec6 quadlet: expand %N specifier in the Pod key
Some checks are pending
ci / sys local root fedora-prior (push) Blocked by required conditions
ci / int local rootless fedora-prior (push) Blocked by required conditions
ci / sys local rootless fedora-prior (push) Blocked by required conditions
ci / int remote root fedora-prior (push) Blocked by required conditions
ci / sys remote root fedora-prior (push) Blocked by required conditions
ci / int local root fedora-rawhide (push) Blocked by required conditions
ci / sys local root fedora-rawhide (push) Blocked by required conditions
ci / int local rootless fedora-rawhide (push) Blocked by required conditions
ci / sys local rootless fedora-rawhide (push) Blocked by required conditions
ci / int remote root fedora-rawhide (push) Blocked by required conditions
ci / sys remote root fedora-rawhide (push) Blocked by required conditions
ci / apiv2 root fedora-current (push) Blocked by required conditions
ci / bindings root fedora-current (push) Blocked by required conditions
ci / compose_v2 root fedora-current (push) Blocked by required conditions
ci / docker_py root fedora-current (push) Blocked by required conditions
ci / unit root fedora-current (push) Blocked by required conditions
ci / apiv2 rootless fedora-current (push) Blocked by required conditions
ci / compose_v2 rootless fedora-current (push) Blocked by required conditions
ci / unit rootless fedora-current (push) Blocked by required conditions
ci / upgrade v5.3.1 root fedora-current (push) Blocked by required conditions
ci / upgrade v5.6.2 root fedora-current (push) Blocked by required conditions
ci / machine linux amd64 (push) Blocked by required conditions
ci / windows unit (push) Blocked by required conditions
ci / windows e2e (push) Blocked by required conditions
ci / windows machine hyperv (push) Blocked by required conditions
ci / windows machine wsl (push) Blocked by required conditions
ci / macos machine applehv (push) Blocked by required conditions
ci / macos machine libkrun (push) Blocked by required conditions
ci / Total Success (push) Blocked by required conditions
zizmor: GitHub Actions Security Analysis / Zizmor (push) Waiting to run
The Pod key of a .container unit accepts systemd specifiers, but handlePod
looked the referenced pod up in the units map using the raw value, so
"Pod=%N.pod" failed with "quadlet pod unit %N.pod does not exist" instead
of resolving to the pod named after the container's service.

Expand %N to the container's service name before the lookup, matching the
existing handling in GetContainerResourceName. Since %N is the service
name, setting ServiceName= lets the container and pod unit files use
different names.

Add e2e cases for both combinations: a pod named after the container
file, and a pod named after a ServiceName that differs from the file
name.

Fixes: #29108
Signed-off-by: Salih Muhammed <root@lr0.org>
2026-08-09 04:23:53 -04:00
Sahil Nayak
bda5521804 quadlet: add Umask= key to set container umask without PodmanArgs
Fixes: #25278

Co-authored-by: Tom Sweeney <tsweeney@redhat.com>
Signed-off-by: Sahil Nayak <contactsahilpnayak@gmail.com>
2026-08-07 16:17:35 +05:30
Matt Heon
0ad5459fab
Merge pull request #29145 from ROKUMATE/feat-playkube-warn-unknown-keys
Some checks are pending
ci / sys local root fedora-prior (push) Blocked by required conditions
ci / int local rootless fedora-prior (push) Blocked by required conditions
ci / sys local rootless fedora-prior (push) Blocked by required conditions
ci / int remote root fedora-prior (push) Blocked by required conditions
ci / sys remote root fedora-prior (push) Blocked by required conditions
ci / int local root fedora-rawhide (push) Blocked by required conditions
ci / sys local root fedora-rawhide (push) Blocked by required conditions
ci / int local rootless fedora-rawhide (push) Blocked by required conditions
ci / sys local rootless fedora-rawhide (push) Blocked by required conditions
ci / int remote root fedora-rawhide (push) Blocked by required conditions
ci / sys remote root fedora-rawhide (push) Blocked by required conditions
ci / apiv2 root fedora-current (push) Blocked by required conditions
ci / bindings root fedora-current (push) Blocked by required conditions
ci / compose_v2 root fedora-current (push) Blocked by required conditions
ci / docker_py root fedora-current (push) Blocked by required conditions
ci / unit root fedora-current (push) Blocked by required conditions
ci / apiv2 rootless fedora-current (push) Blocked by required conditions
ci / compose_v2 rootless fedora-current (push) Blocked by required conditions
ci / unit rootless fedora-current (push) Blocked by required conditions
ci / upgrade v5.3.1 root fedora-current (push) Blocked by required conditions
ci / upgrade v5.6.2 root fedora-current (push) Blocked by required conditions
ci / machine linux amd64 (push) Blocked by required conditions
ci / windows unit (push) Blocked by required conditions
ci / windows e2e (push) Blocked by required conditions
ci / windows machine hyperv (push) Blocked by required conditions
ci / windows machine wsl (push) Blocked by required conditions
ci / macos machine applehv (push) Blocked by required conditions
ci / macos machine libkrun (push) Blocked by required conditions
ci / Total Success (push) Blocked by required conditions
zizmor: GitHub Actions Security Analysis / Zizmor (push) Waiting to run
podman kube play: add --validate=ignore|warn|strict flag
2026-08-06 18:21:03 -04:00
ROKUMATE
0d09e609e4 add validate flag to podman kube play
ignore warn and strict modes for unknown yaml fields and kinds
ignore is the default and skips them warn reports them strict fails
warnings are returned in the play report so they show up in the cli and over the api for tools like podman desktop

Closes #18332

Signed-off-by: ROKUMATE <rohitkumawat0110@gmail.com>
2026-08-05 17:42:40 +05:30
Satwik Sai Prakash Sahoo
02f0ee0de0
docs: document keep-groups limitation with systemd services
When --group-add keep-groups (or GroupAdd=keep-groups in Quadlet) is
used, supplementary groups are inherited from the calling process. When
Podman is launched via a systemd user service, the calling process is
the systemd --user manager, which only has the groups assigned to the
user at the time the manager was started.

If the user was added to new groups after the systemd user session
started (e.g. via usermod), those groups will not be visible to the
container. This is expected Linux process credential behavior, but was
undocumented, causing confusion for Quadlet users.

Add notes to both option and Quadlet docs explaining this behavior and
the workaround (restarting the user's systemd manager).

Fixes: #27876
Signed-off-by: Satwik Sai Prakash Sahoo <sahoospsatwik@gmail.com>
2026-08-04 01:35:18 +05:30
Paul Holzinger
67aa9604b5
Merge pull request #28980 from stefan8/fix/image-volume-default-anonymous
docs: fix --image-volume default and accepted values
2026-08-03 18:56:39 +02:00
Matt Heon
48a6ef9cdf
Merge pull request #29298 from satwiksps/docs-transient-store-volumes
docs: clarify --transient-store behavior with volumes
2026-07-29 12:12:15 -04:00