Features
- A new command,
podman generate spec, has been added, which creates a JSON struct based on a given container that can be used with the Podman REST API to create containers. - A new command,
podman update, has been added,which makes changes to the resource limits of existing containers. Please note that these changes do not persist if the container is restarted (#15067). - A new command,
podman kube down, has been added, which removes pods and containers created by the given Kubernetes YAML (functionality is identical topodman kube play --down, but it now has its own command). - The
podman kube playcommand now supports Kubernetes secrets using Podman's secrets backend. - Systemd-managed pods created by the
podman kube playcommand now integrate with sd-notify, using theio.containers.sdnotifyannotation (orio.containers.sdnotify/$namefor specific containers). - Systemd-managed pods created by
podman kube playcan now be auto-updated, using theio.containers.auto-updateannotation (orio.containers.auto-update/$namefor specific containers). - The
podman kube playcommand can now read YAML from URLs, e.g.podman kube play https://example.com/demo.yml(#14955). - The
podman kube playcommand now supports theemptyDirvolume type (#13309). - The
podman kube playcommand now supports theHostUsersfield in the pod spec. - The
podman play kubecommand now supportsbinaryDatain ConfigMaps. - The
podman pod createcommand can now set additional resource limits for pods using the new--memory-swap,--cpuset-mems,--device-read-bps,--device-write-bps,--blkio-weight,--blkio-weight-device, and--cpu-sharesoptions. - The
podman machine initcommand now supports a new option,--username, to set the username that will be used to connect to the VM as a non-root user (#15402). - The
podman volume createcommand's-o timeout=option can now set a timeout of 0, indicating volume plugin operations will never time out. - Added support for a new volume driver,
image, which allows volumes to be created that are backed by images. - The
podman runandpodman createcommands support a new option,--env-merge, allowing environment variables to be specified relative to other environment variables in the image (e.g.podman run --env-merge "PATH=$PATH:/my/app" ...) (#15288). - The
podman runandpodman createcommands support a new option,--on-failure, to allow action to be taken when a container fails health checks, with the following supported actions:none(take no action, the default),kill(kill the container),restart(restart the container), andstop(stop the container). - The
--keep-idoption topodman createandpodman runnow supports new options,uidandgid, to set the UID and GID of the user in the container that will be mapped to the user running Podman (e.g.--userns=keep-id:uid=11will made the user running Podman to UID 11 in the container) (#15294). - The
podman generate systemdcommand now supports a new option,--env/-e, to set environment variables in the generated unit file (#15523). - The
podman pauseandpodman unpausecommands now support the--latest,--cidfile, and--filteroptions. - The
podman restartcommand now supports the--cidfileand--filteroptions. - The
podman rmcommand now supports the--filteroption to select which containers will be removed. - The
podman rmicommand now supports a new option,--no-prune, to prevent the removal of dangling parents of removed images. - The
--dns-optoption topodman create,podman run, andpodman pod createhas received a new alias,--dns-option, to improve Docker compatibility. - The
podmancommand now features a new global flag,--debug/-D, which enables debug-level logging (identical to--log-level=debug), improving Docker compatibility. - The
podmancommand now features a new global flag,--config. This flag is ignored, and is only included for Docker compatibility (#14767). - The
podman manifest createcommand now accepts a new option,--amend/-a. - The
podman manifest create,podman manifest addandpodman manifest pushcommands now accept a new option,--insecure(identical to--tls-verify=false), improving Docker compatibility. - The
podman secret createcommand's--driverand--formatoptions now have new aliases,-dfor--driverand-ffor--format. - The
podman secret createcommand now supports a new option,--label/-l, to add labels to created secrets. - The
podman secret lscommand now accepts the--quiet/-qoption. - The
podman secret inspectcommand now accepts a new option,--pretty, to print output in human-readable format. - The
podman statscommand now accepts the--no-truncoption. - The
podman savecommand now accepts the--signature-policyoption (#15869). - The
podman pod inspectcommand now allows multiple arguments to be passed. If so, it will return a JSON array of the inspected pods (#15674). - A series of new hidden commands have been added under
podman contextas aliases to existingpodman system connectioncommands, to improve Docker compatibility. - The remote Podman client now supports proxying signals for attach sessions when the
--sig-proxyoption is set (#14707).
Changes
- Duplicate volume mounts are now allowed with the
-voption topodman run,podman create, andpodman pod create, so long as source, destination, and options all match (#4217). - The
podman generate kubeandpodman play kubecommands have been renamed topodman kube generateandpodman kube playto group Kubernetes-related commands. Aliases have been added to ensure the old command names still function. - A number of Podman commands (
podman init,podman container checkpoint,podman container restore,podman container cleanup) now print the user-inputted name of the container, instead of its full ID, on success. - When an unsupported option (e.g. resource limit) is specified for a rootless container on a cgroups v1 system, a warning message is now printed that the limit will not be honored.
- The installer for the Windows Podman client has been improved.
- The
--cpu-rt-periodand--cpu-rt-runtimeoptions topodman runandpodman createnow print a warning and are ignored on cgroups v2 systems (cgroups v2 having dropped support for these controllers) (#15666). - Privileged containers running systemd will no longer mount
/dev/tty*devices other than/dev/ttyitself into the container (#15878). - Events for containers that are part of a pod now include the ID of the pod in the event.
- SSH functionality for
podman machinecommands has seen a thorough rework, addressing many issues about authentication. - The
--networkoption topodman kube playnow allows passinghostto set the pod to use host networking, even if the YAML does not request this. - The
podman inspectcommand on containers now includes the digest of the image used to create the container. - Pods created by
podman play kubeare now, by default, placed into a network namedpodman-kube. If thepodman-kubenetwork does not exist, it will be created. This ensures pods can connect to each other by their names, as the network has DNS enabled.
Bugfixes
- Fixed a bug where the
podman network pruneandpodman container prunecommands did not properly support the--filter label!=option (#14182). - Fixed a bug where the
podman kube generatecommand added an unnecessarySecret: nullline to generated YAML (#15156). - Fixed a bug where the
podman kube generatecommand did not setenableServiceLinksandautomountServiceAccountTokento false in generated YAML (#15478 and #15243). - Fixed a bug where the
podman kube playcommand did not properly handle CPU limits (#15726). - Fixed a bug where the
podman kube playcommand did not respect default values for liveness probes (#15855). - Fixed a bug where the
podman kube playcommand did not bind ports ifhostPortwas not specified butcontainerPortwas (#15942). - Fixed a bug where the
podman kube playcommand sometimes did not create directories on the host forhostPathvolumes. - Fixed a bug where the remote Podman client's
podman manifest pushcommand did not display progress. - Fixed a bug where the
--filter "{{.Config.Healthcheck}}"option topodman image inspectdid not print the image's configured healthcheck (#14661). - Fixed a bug where the
podman volume create -o timeout=option could be specified even when no volume plugin was in use. - Fixed a bug where the
podman rmicommand did not emituntagevents when removing tagged images (#15485). - Fixed a bug where API forwarding with
podman machineVMs on windows could sometimes fail because the pipe was not created in time (#14811). - Fixed a bug where the
podman pod rmcommand could error if removal of a container in the pod was interrupted by a reboot. - Fixed a bug where the
exitedandexec diedevents for containers did not include the container's labels (#15617). - Fixed a bug where running Systemd containers on a system not using Systemd as PID 1 could fail (#15647).
- Fixed a bug where Podman did not pass all necessary environment variables (including
$PATH) to Conmon when starting containers (#15707). - Fixed a bug where the
podman eventscommand could function improperly when no events were present (#15688). - Fixed a bug where the
--formatflag to various Podman commands did not properly handle template strings including a newline (\n) (#13446). - Fixed a bug where Systemd-managed pods would kill every container in a pod when a single container exited (#14546).
- Fixed a bug where the
podman generate systemdcommand would generate incorrect YAML for pods created without the--nameoption. - Fixed a bug where the
podman generate systemd --newcommand did not properly set stop timeout (#16149). - Fixed a bug where a broken OCI spec resulting from the system rebooting while a container is being started could cause the
podman inspectcommand to be unable to inspect the container until it was restarted. - Fixed a bug where creating a container with a working directory on an overlay volume would result in the container being unable to start (#15789).
- Fixed a bug where attempting to remove a pod with running containers without
--forcewould not error and instead would result in the pod, and its remaining containers, being placed in an unusable state (#15526). - Fixed a bug where memory limits reported by
podman statscould exceed the maximum memory available on the system (#15765). - Fixed a bug where the
podman container clonecommand did not properly handle environment variables whose value contained an=character (#15836). - Fixed a bug where the remote Podman client would not print the container ID when running the
podman-remote run --attach stdincommand. - Fixed a bug where the
podman machine list --format jsoncommand did not properly show machine starting status. - Fixed a bug where automatic updates would not error when attempting to update a container with a non-fully qualified image name (#15879).
- Fixed a bug where the
podman pod logs --latestcommand could panic (#15556). - Fixed a bug where Podman could leave lingering network namespace mounts on the system if cleaning up the network failed.
- Fixed a bug where specifying an unsupported URI scheme for
podman system serviceto listen at would result in a panic. - Fixed a bug where the
podman killcommand would sometimes not transition containers to the exited state (#16142).
API
- Fixed a bug where the Compat DF endpoint reported incorrect reference counts for volumes (#15720).
- Fixed a bug in the Compat Inspect endpoint for Networks where an incorrect network option was displayed, causing issues with
docker-compose(#15580). - The Libpod Restore endpoint for Containers now features a new query parameter,
pod, to set the pod that the container will be restored into (#15018). - Fixed a bug where the REST API could panic while retrieving images.
- Fixed a bug where a cancelled connection to several endpoints could induce a memory leak.
Misc
- Error messages when attempting to remove an image used by a non-Podman container have been improved (#15006).
- Podman will no longer print a warning that
/is not a shared mount when run inside a container (#15295). - Work is ongoing to port Podman to FreeBSD.
- The output of
podman generate systemdhas been adjusted to improve readability. - A number of performance improvements have been made to
podman createandpodman run. - A major reworking of the manpages to ensure duplicated options between commands have the same description text has been performed.
- Updated Buildah to v1.28.0
- Updated the containers/image library to v5.23.0
- Updated the containers/storage library to v1.43.0
- Updated the containers/common library to v0.50.1