Features
- Pods now support init containers! Init containers are containers which run before the rest of the pod starts. There are two types of init containers: "always", which always run before the pod is started, and "once", which only run the first time the pod starts and are subsequently removed. They can be added using the
podman createcommand's--init-ctroption. - Support for init containers has also been added to
podman play kubeandpodman generate kube- init containers contained in Kubernetes YAML will be created as Podman init containers, and YAML generated by Podman will include any init containers created. - The
podman play kubecommand now supports building images. If the--buildoption is given and a directory with the name of the specified image exists in the current working directory and contains a valid Containerfile or Dockerfile, the image will be built and used for the container. - The
podman play kubecommand now supports a new option,--teardown, which removes any pods and containers created by the given Kubernetes YAML. - A new command has been added,
podman pod logs, to return logs for all containers in a pod at the same time. - Two new commands have been added,
podman volume export(to export a volume to a tar file) andpodman volume import) (to populate a volume from a given tar file). - The
podman auto-updatecommand now supports simple rollbacks. If a container fails to start after an automatic update, it will be rolled back to the previous image and restarted again. - Pods now share their user namespace by default, and the
podman pod createcommand now supports the--usernsoption. This allows rootless pods to be created with the--userns=keep-idoption. - The
podman pod pscommand now supports a new filter with its--filteroption,until, which returns pods created before a given timestamp. - The
podman image scpcommand has been added. This command allows images to be transferred between different hosts. - The
podman statscommand supports a new option,--interval, to specify the amount of time before the information is refreshed. - The
podman inspectcommand now includes ports exposed (but not published) by containers (e.g. ports from--exposewhen--publish-allis not specified). - The
podman inspectcommand now has a new boolean value,Checkpointed, which indicates that a container was stopped as a result of apodman container checkpointoperation. - Volumes created by
podman volume createnow support setting quotas when run atop XFS. Thesizeandinodeoptions allow the maximum size and maximum number of inodes consumed by a volume to be limited. - The
podman infocommand now outputs information on what log drivers, network drivers, and volume plugins are available for use (#11265). - The
podman infocommand now outputs the current log driver in use, and the variant and codename of the distribution in use.
Changes
- The
podman buildcommand has a new alias,podman buildx, to improve compatibility with Docker. We have already added support for manydocker buildxflags topodman buildand aim to continue to do so. - Podman commands run as root now ignore
XDG_RUNTIME_DIRwhen determining where to place temporary files, which should resolve a number of issues including #10745 and #10806. - Cases where Podman is run without a user session or a writable temporary files directory will now produce better error messages.
- The default log driver has been changed from
filetojournald. Thefiledriver did not properly support log rotation, so this should lead to a better experience. If journald is not available on the system, Podman will automatically revert to thefile. - Podman no longer depends on
ipfor removing networks (#11403). - The deprecated
--macvlanflag topodman network createnow warns when it is used. It will be removed entirely in the Podman 4.0 release. - The
podman machine startcommand now prints a message when the VM is successfully started. - The
podman statscommand can now be used on containers that are paused. - The
podman unsharecommand will now return the exit code of the command that was run in the user namespace (assuming the command was successfully run). - Successful healthchecks will no longer add a
healthyline to the system log to reduce log spam. - As a temporary workaround for a lack of shortname prompts in the Podman remote client, VMs created by
podman machinenow default to only using thedocker.ioregistry.
Bugfixes
- Fixed a bug where whitespace in the definition of sysctls (particularly default sysctls specified in
containers.conf) would cause them to be parsed incorrectly. - Fixed a bug where the Windows remote client improperly validated volume paths (#10900).
- Fixed a bug where the first line of logs from a container run with the
journaldlog driver could be skipped. - Fixed a bug where images created by
podman commitdid not include ports exposed by the container. - Fixed a bug where the
podman auto-updatecommand would ignore theio.containers.autoupdate.authfilelabel when pulling images (#11171). - Fixed a bug where the
--workdiroption topodman createandpodman runcould not be set to a directory where a volume was mounted (#11352). - Fixed a bug where systemd socket-activation did not properly work with systemd-managed Podman containers (#10443).
- Fixed a bug where environment variable secrets added to a container were not available to exec sessions launched in the container.
- Fixed a bug where rootless containers could fail to start the
rootlessportport-forwarding service whenXDG_RUNTIME_DIRwas set to a long path. - Fixed a bug where arguments to the
--systemdoption topodman createandpodman runwere case-sensitive (#11387). - Fixed a bug where the
podman manifest rmcommand would also remove images referenced by the manifest, not just the manifest itself (#11344). - Fixed a bug where the Podman remote client on OS X would not function properly if the
TMPDIRenvironment variable was not set (#11418). - Fixed a bug where the
/etc/hostsfile was not guaranteed to contain an entry forlocalhost(this is still not guaranteed if--net=hostis used; such containers will exactly match the host's/etc/hosts) (#11411). - Fixed a bug where the
podman machine startcommand could print warnings about unsupported CPU features (#11421). - Fixed a bug where the
podman infocommand could segfault when accessing cgroup information. - Fixed a bug where the
podman logs -fcommand could hang when a container exited (#11461). - Fixed a bug where the
podman generate systemdcommand could not be used on containers that specified a restart policy (#11438). - Fixed a bug where the remote Podman client's
podman buildcommand would fail to build containers if the UID and GID on the client were higher than 65536 (#11474). - Fixed a bug where the
--networkflag topodman play kubewas not properly parsed when a non-bridge network configuration was specified. - Fixed a bug where the
podman inspectcommand could error when the container being inspected was removed as it was being inspected (#11392). - Fixed a bug where the
podman play kubecommand ignored the default pod infra image specified incontainers.conf. - Fixed a bug where the
--formatoption topodman inspectwas nonfunctional under some circumstances (#8785). - Fixed a bug where the remote Podman client's
podman runandpodman execcommands could skip a byte of output every 8192 bytes (#11496). - Fixed a bug where the
podman statscommand would print nonsensical results if the container restarted while it was running (#11469). - Fixed a bug where the remote Podman client would error when STDOUT was redirected on a Windows client (#11444).
- Fixed a bug where the
podman runcommand could return 0 when the application in the container exited with 125 (#11540). - Fixed a bug where containers with
--restart=alwaysset using the rootlessport port-forwarding service could not be restarted automatically. - Fixed a bug where the
--cgroups=splitoption topodman createandpodman runwas silently discarded if the container was part of a pod.
API
- The Libpod Pull endpoint for Images now has a new query parameter,
quiet, which (when set to true) suppresses image pull progress reports (#10612). - The Compat Events endpoint now includes several deprecated fields from the Docker v1.21 API for improved compatibility with older clients.
- The Compat Create endpoint for Containers now properly sets defaults for healthcheck-related fields (#11225).
- The Compat Create endpoint for Containers now supports volume options provided by the
Mountsfield (#10831). - The Compat List endpoint for Secrets now supports a new query parameter,
filter, which allows returned results to be filtered. - The Version endpoint now includes information about the OCI runtime and Conmon in use (#11227).
- Fixed a bug where the X-Registry-Config header was not properly handled, leading to errors when pulling images (#11235).
- Fixed a bug where invalid query parameters could cause a null pointer dereference when creating error messages.
- Logging of API requests and responses at trace level has been greatly improved, including the addition of an X-Reference-Id header to correlate requests and responses (#10053).
Misc
- Updated Buildah to v1.23.0
- Updated the containers/storage library to v1.36.0
- Updated the containers/image library to v5.16.0
- Updated the containers/common library to v0.44.0