Features
- VMs created by `podman machine` on macOS with Apple silicon can now use Rosetta 2 (a.k.a Rosetta) for high-speed emulation of x86 code. This is enabled by default. If you wish to change this option, you can do so in `containers.conf`.
- Changes made by the `podman update` command are now persistent, and will survive container restart and be reflected in `podman inspect`.
- The `podman update` command now includes a new option, `--restart`, to update the restart policy of existing containers.
- Quadlet `.container` files now support a new key, `GroupAdd`, to add groups to the container.
- Container annotations are now printed by `podman inspect`.
- Image-based mounts using `podman run --mount type=image,...` now support a new option, `subpath`, to mount only part of the image into the container.
- A new field, `healthcheck_events`, has been added to `containers.conf` under the `[engine]` section to allow users to disable the generation of `health_status` events to avoid spamming logs on systems with many healthchecks.
- A list of images to automatically mount as volumes can now be specified in Kubernetes YAML via the `io.podman.annotations.kube.image.automount/$CTRNAME` annotation (where `$CTRNAME` is the name of the container they will be mounted into).
- The `podman info` command now includes the default rootless network command (`pasta` or `slirp4netns`).
- The `podman ps` command now shows ports from `--expose` that have not been published with `--publish-all` to improve Docker compatibility.
- The `podman runlabel` command now expands `$HOME` in the label being run to the user's home directory.
- A new alias, `podman network list`, has been added to the `podman network ls` command.
- The name and shell of containers created by `podmansh` can now be set in `containers.conf`.
- The `podman-setup.exe` Windows installer now provides 3 new CLI variables, `MachineProvider` (choose the provider for the machine, `windows` or `wsl`, the default), `HyperVCheckbox` (can be set to `1` to install HyperV if it is not already installed or `0`, the default, to not install HyperV), and `SkipConfigFileCreation` (can be set to `1` to disable the creation of configuration files, or `0`, the default).
Changes
- Podman now changes volume ownership every time an empty named volume is mounted into a container, not just the first time, matching Docker's behavior.
- When running Kubernetes YAML with `podman kube play` that does not include an `imagePullPolicy` and does not set a tag for the image, the image is now always pulled ([21211](https://github.com/containers/podman/issues/21211)).
- When running Kubernetes YAML with `podman kube play`, pod-level restart policies are now passed down to individual containers within the pod ([20903](https://github.com/containers/podman/issues/20903)).
- The `--runroot` global option can now accept paths with lengths longer than 50 characters ([22272](https://github.com/containers/podman/issues/22272)).
- Updating containers with the `podman update` command now emits an event.
Bugfixes
- Fixed a bug where the `--userns=keep-id:uid=0` option to `podman create` and `podman run` would generate incorrect UID mappings and cause the container to fail to start ([22078](https://github.com/containers/podman/issues/22078)).
- Fixed a bug where `podman stats` could report inaccurate percentages for very large or very small values ([22064](https://github.com/containers/podman/issues/22064)).
- Fixed a bug where bind-mount volumes defaulted to `rbind` instead of `bind`, meaning recursive mounts were allowed by default ([22107](https://github.com/containers/podman/issues/22107)).
- Fixed a bug where the `podman machine rm -f` command would fail to remove Hyper-V virtual machines if they were running.
- Fixed a bug where the `podman ps --sync` command could sometimes fail to properly update the status of containers.
- Fixed a bug where bind-mount volumes using the `:idmap` option would sometimes be inaccessible with rootless Podman ([22228](https://github.com/containers/podman/issues/22228)).
- Fixed a bug where bind-mount volumes using the `:U` option would have their ownership changed to the owner of the directory in the image being mounted over ([22224](https://github.com/containers/podman/issues/22224)).
- Fixed a bug where removing multiple containers, pods, or images with the `--force` option did not work when multiple arguments were given to the command and one of them did not exist ([21529](https://github.com/containers/podman/issues/21529)).
- Fixed a bug where Podman did not properly clean up old cached Machine images.
- Fixed a bug where rapidly-restarting containers with healthchecks could sometimes fail to start their healthchecks after restarting.
- Fixed a bug where nested Podman could create its `pause.pid` file in an incorrect directory ([22327](https://github.com/containers/podman/issues/22327)).
- Fixed a bug where Podman would panic if an OCI runtime was configured without associated paths in `containers.conf` ([22561](https://github.com/containers/podman/issues/22561)).
- Fixed a bug where the `podman kube down` command would not respect the `StopTimeout` and `StopSignal` of containers that it stopped ([22397](https://github.com/containers/podman/issues/22397)).
- Fixed a bug where Systemd-managed containers could be stuck in the Stopping state, unable to be restarted, if systemd killed the unit before `podman stop` finished stopping the container ([19629](https://github.com/containers/podman/issues/19629)).
- Fixed a bug where the remote Podman client's `podman farm build` command would not updating manifests on the registry that were already pushed ([22647](https://github.com/containers/podman/issues/22647)).
- Fixed a bug where rootless Podman could fail to re-exec itself when run with a custom `argv[0]` that is not a valid command path, as might happen when used in `podmansh` ([22672](https://github.com/containers/podman/issues/22672)).
- Fixed a bug where `podman machine` connection URIs could be incorrect after an SSH port conflict, rendering machines inaccessible.
- Fixed a bug where the `podman events` command would not print an error if incorrect values were passed to its `--since` and `--until` options.
- Fixed a bug where an incorrect `host.containers.internal` entry could be added when running rootless containers using the `bridge` network mode ([22653](https://github.com/containers/podman/issues/22653)).
API
- A new Docker-compatible endpoint, Update, has been added for containers.
- The Compat Create endpoint for Containers now supports setting container annotations.
- The Libpod List endpoint for Images now includes additional information in its responses (image architecture, OS, and whether the image is a manifest list) ([22184](https://github.com/containers/podman/issues/22184) and [#22185](https://github.com/containers/podman/issues/22185)).
- The Build endpoint for Images no longer saves the build context as a temporary file, substantially improving performance and reducing required filesystem space on the server.
- The Inspect API for Containers now returns results compatible with Podman v4.x when a request with version v4.0.0 is made. This allows Podman 4.X remote clients work with a Podman 5.X server ([22657](https://github.com/containers/podman/issues/22657)).
- Fixed a bug where the Build endpoint for Images would not clean up temporary files created by the build if an error occurred.
Misc
- Podman now detects unhandled system reboots and advises the user on proper mitigations.
- Improved debugging output for `podman machine` on Darwin systems when `--log-level=debug` is used.
- The Makefile now allows injecting extra build tags via the `EXTRA_BUILD_TAGS` environment variable.
- Updated Buildah to v1.36.0
- Updated the containers/common library to v0.59.0
- Updated the containers/image library to v5.31.0
- Updated the containers/storage library to v1.54.0