Releases: containers/podman
Releases · containers/podman
v4.7.2
v4.7.1
Bugfixes
- Fixed a bug involving non-English locales of Windows where machine installs using user-mode networking were rejected due to erroneous version detection (#20209).
- Fixed a regression in --env-file handling (#19565).
- Fixed a bug where podman inspect would fail when stat'ing a device failed.
API
- The network list compat API endpoint is now much faster (#20035).
v4.7.0
Security
- Now the io.containers.capabilities LABEL in an image can be an empty string.
Features
- New command set:
podman farm [create,list,remove,update]
has been created to "farm" out builds to machines running Podman for different architectures. - New command:
podman compose
as a thin wrapper around an external compose provider such as docker-compose or podman-compose. - FreeBSD:
podman run --device
is now supported. - Linux: Add a new
--module
flag for Podman. - Podmansh: Timeout is now configurable using the
podmansh_timeout
option in containers.conf. - SELinux: Add support for confined users to create containers but restrict them from creating privileged containers.
- WSL: Registers shared socket bindings on Windows, to allow other WSL distributions easy remote access (#15190).
- WSL: Enabling user-mode-networking on older WSL2 generations will now detect an error with upgrade guidance.
- The
podman build
command now supports two new options:--layer-label
and--cw
. - The
podman kube generate
command now supports generation of k8s DaemonSet kind (#18899). - The
podman kube generate
andpodman kube play
commands now support the k8sTerminationGracePeriodSeconds
field (RH BZ#2218061). - The
podman kube generate
andpodman kube play
commands now supportsecurityContext.procMount: Unmasked
(#19881). - The
podman generate kube
command now supports a--podman-only
flag to allow podman-only reserved annotations to be used in the generated YAML file. These annotations cannot be used by Kubernetes. - The
podman kube generate
now supports a--no-trunc
flag that supports YAML files with annotations longer than 63 characters. Warning: if an annotation is longer than 63 chars, then the generated yaml file is not Kubernetes compatible. - An infra name annotation
io.podman.annotations.infra.name
is added in the generated yaml when thepod create
command has--infra-name
set. This annotation can also be used withkube play
when wanting to customize the infra container name (#18312). - The syntax of
--uidmap
and--gidmap
has been extended to lookup the parent user namespace and to extend default mappings (#18333). - The
podman kube
commands now support theList
kind (#19052). - The
podman kube play
command now supports environment variables in kube.yaml (#15983). - The
podman push
andpodman manifest push
commands now support the--force-compression
optionto prevent reusing other blobs (#18860). - The
podman manifest push
command now supports--add-compression
to push with compressed variants. - The
podman manifest push
command now honors theadd_compression
field from containers.conf if--add-compression
is not set. - The
podman run
andpodman create --mount
commands now support theramfs
type (#19659). - When running under systemd (e.g., via Quadlet), Podman will extend the start timeout in 30 second steps up to a maximum of 5 minutes when pulling an image.
- The
--add-host
option now accepts the special stringhost-gateway
instead of an IP Address, which will be mapped to the host IP address. - The
podman generate systemd
command is deprecated. Use Quadlet for running containers and pods under systemd. - The
podman secret rm
command now supports an--ignore
option. - The
--env-file
option now supports multiline variables (#18724). - The
--read-only-tmpfs
flag now affects /dev and /dev/shm as well as /run, /tmp, /var/tmp (#12937). - The Podman
--mount
option now supports bind mounts passed as globs. - The
--mount
option can now be specified in containers.conf using themounts
field. - The
podman stats
now has an--all
option to get all containers stats (#19252). - There is now a new
--sdnotify=healthy
policy where Podman sends the READY message once the container turns healthy (#6160). - Temporary files created when dealing with images in
/var/tmp
will automatically be cleaned up on reboot. - There is now a new filter option
since
forpodman volume ls
andpodman volume prune
(#19228). - The
podman inspect
command now has tab-completion support (#18672). - The
podman kube play
command now has support for the use of reserved annotations in the generated YAML. - The progress bar is now displayed when decompressing a Podman machine image (#19240).
- The
podman secret inspect
command supports a new option--showsecret
which will output the actual secret. - The
podman secret create
now supports a--replace
option, which allows you to modify secrets without replacing containers. - The
podman login
command can now read the secret for a registry from its secret database created withpodman secret create
(#18667). - The remote Podman client’s
podman play kube
command now works with the--userns
option (#17392).
Changes
- The
/tmp
and/var/tmp
inside of apodman kube play
will no longer benoexec
. - The limit of inotify instances has been bumped from 128 to 524288 for podman machine (#19848).
- The
podman kube play
has been improved to only pull a newer image for the "latest" tag (#19801). - Pulling from an
oci
transport will use the optional name for naming the image. - The
podman info
command will always display the existence of the Podman socket. - The echo server example in socket_activation.md has been rewritten to use quadlet instead of
podman generate systemd
. - Kubernetes support table documentation correctly show volumes support.
- The
podman auto-update
manpage and documentation has been updated and now includes references to Quadlet.
Quadlet
- Quadlet now supports setting Ulimit values.
- Quadlet now supports setting the PidsLimit option in a container.
- Quadlet unit files allow DNS field in Network group and DNS, DNSSearch, and DNSOption field in Container group (#19884).
- Quadlet now supports ShmSize option in unit files.
- Quadlet now recursively calls in user directories for unit files.
- Quadlet now allows the user to set the service working directory relative to the YAML or Unit files (17177).
- Quadlet now allows setting user-defined names for
Volume
andNetwork
units via theVolumeName
andNetworkName
directives, respectively. - Kube quadlets can now support autoupdate.
Bugfixes
- Fixed an issue where containers were being restarted after a
podman kill
. - Fixed a bug where events could report incorrect healthcheck results (#19237).
- Fixed a bug where running a container in a pod didn't fail if volumes or mounts were specified in the containers.conf file.
- Fixed a bug where pod cgroup limits were not being honored after a reboot (#19175).
- Fixed a bug where
podman rm -af
could fail to remove containers under some circumstances (#18874). - Fixed a bug in rootless to clamp oom_score_adj to current value if it is too low (#19829).
- Fixed a bug where
--hostuser
was being parsed in base 8 instead of base 10 (#19800). - Fixed a bug where
kube down
would error when an object did not exist (#19711). - Fixed a bug where containers created via DOCKER API without specifying StopTimeout had StopTimeout defaulting to 0 seconds (#19139).
- Fixed a bug in
podman exec
to set umask to match the container it's execing into (#19713). - Fixed a bug where
podman kube play
failed to set a container's Umask to the default0022
. - Fixed a bug to automatically reassign Podman's machine ssh port on Windows when it conflicts with in-use system ports (#19554).
- Fixed a bug where locales weren't passed to conmon correctly, resulting in a crash if some characters were specified over CLI (containers/common/#272).
- Fixed a bug where
podman top
would sometimes not print the full output (#19504). - Fixed a bug were
podman logs --tail
could return incorrect lines when the k8s-file logger is used (#19545). - Fixed a bug where
podman stop
did not ignore cidfile not existing when user specified --ignore flag (#19546). - Fixed a bug where a container with an image volume and an inheri...
v4.7.0-rc1
Security
- Now the io.containers.capabilities LABEL in an image can be an empty string.
Features
- New command set:
podman farm [create,list,remove,update]
has been created to "farm" out builds to machines running Podman for different architectures. - New command:
podman compose
as a thin wrapper around an external compose provider such as docker-compose or podman-compose. - FreeBSD:
podman run --device
is now supported. - Linux: Add a new
--module
flag for Podman. - Podmansh: Timeout is now configurable using the
podmansh_timeout
option in containers.conf. - SELinux: Add support for confined users to create containers but restrict them from creating privileged containers.
- WSL: Registers shared socket bindings on Windows, to allow other WSL distributions easy remote access (#15190).
- WSL: Enabling user-mode-networking on older WSL2 generations will now detect an error with upgrade guidance.
- The
podman build
command now supports two new options:--layer-label
and--cw
. - The
podman kube generate
command now supports generation of k8s DaemonSet kind (#18899). - The
podman kube generate
andpodman kube play
commands now support the k8sTerminationGracePeriodSeconds
field (RH BZ#2218061). - The
podman kube generate
andpodman kube play
commands now supportsecurityContext.procMount: Unmasked
(#19881). - The
podman generate kube
command now supports a--podman-only
flag to allow podman-only reserved annotations to be used in the generated YAML file. These annotations cannot be used by Kubernetes. - The
podman kube generate
now supports a--no-trunc
flag that supports YAML files with annotations longer than 63 characters. Warning: if an annotation is longer than 63 chars, then the generated yaml file is not Kubernetes compatible. - An infra name annotation
io.podman.annotations.infra.name
is added in the generated yaml when thepod create
command has--infra-name
set. This annotation can also be used withkube play
when wanting to customize the infra container name (#18312). - The syntax of
--uidmap
and--gidmap
has been extended to lookup the parent user namespace and to extend default mappings (#18333). - The
podman kube
commands now support theList
kind (#19052). - The
podman kube play
command now supports environment variables in kube.yaml (#15983). - The
podman push
andpodman manifest push
commands now support the--force-compression
optionto prevent reusing other blobs (#18860). - The
podman manifest push
command now supports--add-compression
to push with compressed variants. - The
podman manifest push
command now honors theadd_compression
field from containers.conf if--add-compression
is not set. - The
podman run
andpodman create --mount
commands now support theramfs
type (#19659). - When running under systemd (e.g., via Quadlet), Podman will extend the start timeout in 30 second steps up to a maximum of 5 minutes when pulling an image.
- The
--add-host
option now accepts the special stringhost-gateway
instead of an IP Address, which will be mapped to the host IP address. - The
podman generate systemd
command is deprecated. Use Quadlet for running containers and pods under systemd. - The
podman secret rm
command now supports an--ignore
option. - The
--env-file
option now supports multiline variables (#18724). - The
--read-only-tmpfs
flag now affects /dev and /dev/shm as well as /run, /tmp, /var/tmp (#12937). - The Podman
--mount
option now supports bind mounts passed as globs. - The
--mount
option can now be specified in containers.conf using themounts
field. - The
podman stats
now has an--all
option to get all containers stats (#19252). - There is now a new
--sdnotify=healthy
policy where Podman sends the READY message once the container turns healthy (#6160). - Temporary files created when dealing with images in
/var/tmp
will automatically be cleaned up on reboot. - There is now a new filter option
since
forpodman volume ls
andpodman volume prune
(#19228). - The
podman inspect
command now has tab-completion support (#18672). - The
podman kube play
command now has support for the use of reserved annotations in the generated YAML. - The progress bar is now displayed when decompressing a Podman machine image (#19240).
- The
podman secret inspect
command supports a new option--showsecret
which will output the actual secret. - The
podman secret create
now supports a--replace
option, which allows you to modify secrets without replacing containers. - The
podman login
command can now read the secret for a registry from its secret database created withpodman secret create
(#18667). - The remote Podman client’s
podman play kube
command now works with the--userns
option (#17392).
Changes
- The
/tmp
and/var/tmp
inside of apodman kube play
will no longer benoexec
. - The limit of inotify instances has been bumped from 128 to 524288 for podman machine (#19848).
- The
podman kube play
has been improved to only pull a newer image for the "latest" tag (#19801). - Pulling from an
oci
transport will use the optional name for naming the image. - The
podman info
command will always display the existence of the Podman socket. - The echo server example in socket_activation.md has been rewritten to use quadlet instead of
podman generate systemd
. - Kubernetes support table documentation correctly show volumes support.
- The
podman auto-update
manpage and documentation has been updated and now includes references to Quadlet.
Quadlet
- Quadlet now supports setting Ulimit values.
- Quadlet now supports setting the PidsLimit option in a container.
- Quadlet unit files allow DNS field in Network group and DNS, DNSSearch, and DNSOption field in Container group (#19884).
- Quadlet now supports ShmSize option in unit files.
- Quadlet now recursively calls in user directories for unit files.
- Quadlet now allows the user to set the service working directory relative to the YAML or Unit files (17177).
- Quadlet now allows setting user-defined names for
Volume
andNetwork
units via theVolumeName
andNetworkName
directives, respectively. - Kube quadlets can now support autoupdate.
Bugfixes
- Fixed an issue where containers were being restarted after a
podman kill
. - Fixed a bug where events could report incorrect healthcheck results (#19237.
- Fixed a bug where running a container in a pod didn't fail if volumes or mounts were specified in the containers.conf file.
- Fixed a bug where pod cgroup limits were not being honored after a reboot (#19175).
- Fixed a bug where
podman rm -af
could fail to remove containers under some circumstances (#18874). - Fixed a bug in rootless to clamp oom_score_adj to current value if it is too low (#19829).
- Fixed a bug where
--hostuser
was being parsed in base 8 instead of base 10 (#19800). - Fixed a bug where
kube down
would error when an object did not exist (#19711). - Fixed a bug where containers created via DOCKER API without specifying StopTimeout had StopTimeout defaulting to 0 seconds (#19139).
- Fixed a bug in
podman exec
to set umask to match the container it's execing into (#19713). - Fixed a bug where
podman kube play
failed to set a container's Umask to the default0022
. - Fixed a bug to automatically reassign Podman's machine ssh port on Windows when it conflicts with in-use system ports (#19554).
- Fixed a bug where locales weren't passed to conmon correctly, resulting in a crash if some characters were specified over CLI (containers/common/#272).
- Fixed a bug where
podman top
would sometimes not print the full output (#19504). - Fixed a bug were
podman logs --tail
could return incorrect lines when the k8s-file logger is used (#19545). - Fixed a bug where
podman stop
did not ignore cidfile not existing when user specified --ignore flag (#19546). - Fixed a bug where a container with an image volume and an inherit...
v4.6.2
Changes
- Fixed a performance issue when calculating diff sizes in overlay. The
podman system df
command should see a significant performance improvement (#19467).
Bugfixes
- Fixed a bug where containers in a pod would use the pod restart policy over the set container restart policy (#19671).
API
- Fixed a bug in the Compat Build endpoint where the pull query parameter did not parse 0/1 as a boolean (#17778).
Misc
- Updated the containers/storage library to v1.48.1
v4.6.1
Quadlet
- Quadlet now selects the first Quadlet file found when multiple Quadlets exist with the same name.
API
- Fixed a bug in the container kill endpoint to correctly return 409 when a container is not running (#19368).
Misc
- Updated Buildah to v1.31.2
- Updated the containers/common library to v0.55.3
v4.6.0
Features
- The
podman manifest inspect
command now supports the--authfile
option, for authentication purposes. - The
podman wait
command now supports--condition={healthy,unhealthy}
, allowing waits on successful health checks. - The
podman push
command now supports a new option,--compression-level
, which specifies the compression level to use (#18939). - The
podman machine start
command, when run with--log-level=debug
, now creates a console window to display the virtual machine while booting. - Podman now supports a new option,
--imagestore
, which allows images to be stored in a different directory than the graphroot. - The
--ip-range
option to thepodman network create
command now accepts a new syntax,<startIP>-<endIP>
, which allows more flexibility when limiting the ip range that Podman assigns. - [Tech Preview] A new command,
podmansh
, has been added, which executes a user shell within a container when the user logs into the system. The container that the users get added to can be defined via a Podman Quadlet file. This feature is currently aTech Preview
which means it's ready for users to try out but changes can be expected in upcoming versions. - The
podman network create
command supports a new--option
,bclim
, for themacvlan
driver. - The
podman network create
command now supports adding static routes using the--route
option. - The
podman network create
command supports a new--option
,no_default_route
for all drivers. - The
podman info
command now prints network information about the binary path, package version, program version and DNS information (#18443). - The
podman info
command now displays the number of free locks available, helping to debug lock exhaustion scenarios. - The
podman info
command now outputs information about pasta, if it exists in helper_binaries_dir or $PATH. - The remote Podman client’s
podman build
command now accepts Containerfiles that are not in the context directory (#18239). - The remote Podman client’s
podman play kube
command now supports the--configmap
option (#17513). - The
podman kube play
command now supports multi-doc YAML files for configmap arguments. (#18537). - The
podman pod create
command now supports a new flag,--restart
, which sets the restart policy for all the containers in a pod. - The
--format={{.Restarts}}
option to thepodman ps
command now shows the number of times a container has been restarted based on its restart policy. - The
--format={{.Restarts}}
option to thepodman pod ps
command now shows the total number of container restarts in a pod. - The podman machine provider can now be specified via the
CONTAINERS_MACHINE_PROVIDER
environment variable, as well as via theprovider
field incontainers.conf
(#17116). - A default list of pasta arguments can now be set in
containers.conf
viapasta_options
. - The
podman machine init
andpodman machine set
commands now support a new option,--user-mode-networking
, which improves interops with VPN configs that drop traffic from WSL networking, on Windows. - The remote Podman client’s
podman push
command now supports the--digestfile
option (#18216). - Podman now supports a new option,
--out
, that allows redirection or suppression of STDOUT (#18120).
Changes
- When looking up an image by digest, the entire repository of the specified value is now considered. This aligns with Docker's behavior since v20.10.20. Previously, both the repository and the tag was ignored and Podman looked for an image with only a matching digest. Ignoring the name, repository, and tag of the specified value can lead to security issues and is considered harmful.
- The
podman system service
command now emits a warning when binding to a TCP socket. This is not a secure configuration and the Podman team recommends against using it. - The
podman top
command no longer depends on ps(1) being present in the container image and now uses the one from the host (#19001). - The
--filter id=xxx
option will now treatxxx
as a CID prefix, and not as a regular expression (#18471). - The
--filter
option now requires multiple--filter
flags to specify multiple filters. It will no longer support the comma syntax (--filter label=a,label=b
). - The
slirp4netns
binary for will now be searched for in paths specified by thehelper_binaries_dir
option incontainers.conf
(#18239). - Podman machine now updates
/run/docker.sock
within the guest to be consistent with its rootless/rootful setting (#18480). - The
podman system df
command now counts files which podman generates for use with specific containers as part of the disk space used by those containers, and which can be reclaimed by removing those containers. It also counts space used by files it associates with specific images and volumes as being used by those images and volumes. - The
podman build
command now returns a clearer error message when the Containerfile cannot be found. (#16354). - Containers created with
--pid=host
will no longer print errors on podman stop (#18460). - The
podman manifest push
command no longer requires a destination to be specified. If a destination is not provided, the source is used as the destination (#18360). - The
podman system reset
command now warns the user that the graphroot and runroot directories will be deleted (#18349), (#18295). - The
package
andpackage-install
targets in Makefile have now been fixed and also renamed torpm
andrpm-install
respectively for clarity (#18817).
Quadlet
- Quadlet now exits with a non-zero exit code when errors are found (#18778).
- Rootless podman quadlet files can now be installed in
/etc/containers/systemd/users
directory. - Quadlet now supports the
AutoUpdate
option. - Quadlet now supports the
Mask
andUnmask
options. - Quadlet now supports the
WorkingDir
option, which specifies the default working dir in a container. - Quadlet now supports the
Sysctl
option, which sets namespaced kernel parameters for containers (#18727). - Quadlet now supports the
SecurityLabelNetsted=true
option, which allows nested SELinux containers. - Quadlet now supports the
Pull
option in.container
files (#18779). - Quadlet now supports the
ExitCode
field in.kube
files, which reflects the exit codes of failed containers. - Quadlet now supports
PodmanArgs
field. - Quadlet now supports the
HostName
field, which sets the container's host name, in.container
files (#18486).
Bugfixes
- Fixed a bug where the
podman machine start
command would fail with a 255 exit code. It now waits for systemd-user sessions to be up, and for SSH to be ready, addressing the flaky machine starts (#17403). - Fixed a bug where the
podman auto update
command did not correctly use authentication files when contacting container registries. - Fixed a bug where
--label
option to thepodman volume ls
command would return volumes that matched any of the filters, not all of them (#19219). - Fixed a bug where the
podman kube play
command did not recognize containerPort names inside Kubernetes liveness probes. Now, liveness probes support both containerPort names as well as port numbers (#18645). - Fixed a bug where the
--dns
option to thepodman run
command was ignored for macvlan networks (#19169). - Fixed a bug in the
podman system service
command where setting LISTEN_FDS when listening on TCP would misbehave. - Fixed a bug where hostnames were not recognized as a network alias. Containers can now resolve other hostnames, in addition to their names (#17370).
- Fixed a bug where the
podman pod run
command would error after a reboot on a non-systemd system (#19175). - Fixed a bug where the
--syslog
option returned a fatal error when no syslog server was found (#19075). - Fixed a bug where the
--mount
option would parse thereadonly
option incorrectly (#18995). - Fixed a bug where hook executables invoked by the
podman run
command set an incorrect working directory. It now sets the correct working directory pointing to the container bundle directory (#18907). - Fixed a bug where the
-device-cgroup-rule
option was silently ignored in rootless mode ([#18698](https://github.com/containers/podman/issu...
v4.6.0-RC2
Features
- The
podman manifest inspect
command now supports the--authfile
option, for authentication purposes. - The
podman wait
command now supports--condition={healthy,unhealthy}
, allowing waits on successful health checks. - The
podman push
command now supports a new option,--compression-level
, which specifies the compression level to use (#18939). - The
podman machine start
command, when run with--log-level=debug
, now creates a console window to display the virtual machine while booting. - Podman now supports a new option,
--imagestore
, which allows images to be stored in a different directory than the graphroot. - The
--ip-range
option to thepodman network create
command now accepts a new syntax,<startIP>-<endIP>
, which allows more flexibility when limiting the ip range that Podman assigns. - [Tech Preview] A new command,
podmansh
, has been added, which executes a user shell within a container when the user logs into the system. The container that the users get added to can be defined via a Podman Quadlet file. This feature is currently aTech Preview
which means it's ready for users to try out but changes can be expected in upcoming versions. - The
podman network create
command supports a new--option
,bclim
, for themacvlan
driver. - The
podman network create
command now supports adding static routes using the--route
option. - The
podman network create
command supports a new--option
,no_default_route
for all drivers. - The
podman info
command now prints network information about the binary path, package version, program version and DNS information (#18443). - The
podman info
command now displays the number of free locks available, helping to debug lock exhaustion scenarios. - The
podman info
command now outputs information about pasta, if it exists in helper_binaries_dir or $PATH. - The remote Podman client’s
podman build
command now accepts Containerfiles that are not in the context directory (#18239). - The remote Podman client’s
podman play kube
command now supports the--configmap
option (#17513). - The
podman kube play
command now supports multi-doc YAML files for configmap arguments. (#18537). - The
podman pod create
command now supports a new flag,--restart
, which sets the restart policy for all the containers in a pod. - The
--format={{.Restarts}}
option to thepodman ps
command now shows the number of times a container has been restarted based on its restart policy. - The
--format={{.Restarts}}
option to thepodman pod ps
command now shows the total number of container restarts in a pod. - The podman machine provider can now be specified via the
CONTAINERS_MACHINE_PROVIDER
environment variable, as well as via theprovider
field incontainers.conf
(#17116). - A default list of pasta arguments can now be set in
containers.conf
viapasta_options
. - The
podman machine init
andpodman machine set
commands now support a new option,--user-mode-networking
, which improves interops with VPN configs that drop traffic from WSL networking, on Windows. - The remote Podman client’s
podman push
command now supports the--digestfile
option (#18216). - Podman now supports a new option,
--out
, that allows redirection or suppression of STDOUT (#18120).
Changes
- The
--filter id=xxx
option will now treatxxx
as a CID prefix, and not as a regular expression (#18471). - The
--filter
option now requires multiple--filter
flags to specify multiple filters. It will no longer support the comma syntax (--filter label=a,label=b
). - The
slirp4netns
binary for will now be searched for in paths specified by thehelper_binaries_dir
option incontainers.conf
(#18239). - Podman machine now updates
/run/docker.sock
within the guest to be consistent with its rootless/rootful setting (#18480). - The
podman system df
command now counts files which podman generates for use with specific containers as part of the disk space used by those containers, and which can be reclaimed by removing those containers. It also counts space used by files it associates with specific images and volumes as being used by those images and volumes. - The
podman build
command now returns a clearer error message when the Containerfile cannot be found. (#16354). - Containers created with
--pid=host
will no longer print errors on podman stop (#18460). - The
podman manifest push
command no longer requires a destination to be specified. If a destination is not provided, the source is used as the destination (#18360). - The
podman system reset
command now warns the user that the graphroot and runroot directories will be deleted (#18349), (#18295).
Quadlet
- Quadlet now exits with a non-zero exit code when errors are found (#18778).
- Rootless podman quadlet files can now be installed in
/etc/containers/systemd/users
directory. - Quadlet now supports the
AutoUpdate
option. - Quadlet now supports the
Mask
andUnmask
options. - Quadlet now supports the
WorkingDir
option, which specifies the default working dir in a container. - Quadlet now supports the
Sysctl
option, which sets namespaced kernel parameters for containers (#18727). - Quadlet now supports the
SecurityLabelNetsted=true
option, which allows nested SELinux containers. - Quadlet now supports the
Pull
option in.container
files (#18779). - Quadlet now supports the
ExitCode
field in.kube
files, which reflects the exit codes of failed containers. - Quadlet now supports
PodmanArgs
field. - Quadlet now supports the
HostName
field, which sets the container's host name, in.container
files (#18486).
Bugfixes
- Fixed a bug where the
podman machine start
command would fail with a 255 exit code. It now waits for systemd-user sessions to be up, and for SSH to be ready, addressing the flaky machine starts (#17403). - Fixed a bug where the
podman auto update
command did not correctly use authentication files when contacting container registries. - Fixed a bug where the
--dns
option to thepodman run
command was ignored for macvlan networks (#19169). - Fixed a bug in the
podman system service
command where setting LISTEN_FDS when listening on TCP would misbehave. - Fixed a bug where hostnames were not recognized as a network alias. Containers can now resolve other hostnames, in addition to their names (#17370).
- Fixed a bug where the
podman pod run
command would error after a reboot on a non-systemd system (#19175). - Fixed a bug where the
--syslog
option returned a fatal error when no syslog server was found (#19075). - Fixed a bug where the
--mount
option would parse thereadonly
option incorrectly (#18995). - Fixed a bug where hook executables invoked by the
podman run
command set an incorrect working directory. It now sets the correct working directory pointing to the container bundle directory (#18907). - Fixed a bug where the
-device-cgroup-rule
option was silently ignored in rootless mode (#18698). - Listing images is now more resilient towards concurrently running image removals.
- Fixed a bug where the
--force
option to thepodman kube down
command would not remove volumes (#18797). - Fixed a bug where setting the
--list-tags
option in thepodman search
command would cause the command to ignore the--format
option (#18939). - Fixed a bug where the
podman machine start
command did not properly translate the proxy IP. - Fixed a bug where the
podman auto-update
command would not restart dependent units (specified viaRequires=
) on auto update (#18926). - Fixed a bug where the
podman pull
command would print ids multiple times when using additional stores (#18647). - Fixed a bug where creating a container while setting unmask option to an empty array would cause the create to fail (#18848).
- Fixed a bug where the propagation of proxy settings for QEMU VMs was broken.
- Fixed a bug where the
podman rm -fa
command could fail to remove dependency containers such as pod infra containers (#18180). - Fixed a bug where
--tz
option to thepodman create
...
v4.6.0-rc1
Features
- The
podman wait
command now supports--condition={healthy,unhealthy}
, allowing waits on successful health checks. - The
podman push
command now supports a new option,--compression-level
, which specifies the compression level to use (#18939). - The
podman machine start
command, when run with--log-level=debug
, now creates a console window to display the virtual machine while booting. - Podman now supports a new option,
--imagestore
, which allows images to be stored in a different directory than the graphroot. - The
--ip-range
option to thepodman network create
command now accepts a new syntax,<startIP>-<endIP>
, which allows more flexibility when limiting the ip range that Podman assigns. - [Tech Preview] A new command,
podmansh
, has been added, which executes a user shell within a container when the user logs into the system. The container that the users get added to can be defined via a Podman Quadlet file. - The
podman network create
command supports a new--option
,bclim
, for themacvlan
driver. - The
podman info
command now prints network information about the binary path, package version, program version and DNS information (#18443). - The
podman info
command now displays the number of free locks available, helping to debug lock exhaustion scenarios. - The
podman info
command now outputs information about pasta, if it exists in helper_binaries_dir or $PATH. - The remote Podman client’s
podman build
command now accepts Containerfiles that are not in the context directory (#18239). - The remote Podman client’s
podman play kube
command now supports the--configmap
option (#17513). - The
podman kube play
command now supports multi-doc YAML files for configmap arguments. (#18537). - The
podman pod create
command now supports a new flag,--restart
, which sets the restart policy for all the containers in a pod. - The
--format={{.Restarts}}
option to thepodman ps
command now shows the number of times a container has been restarted based on its restart policy. - The
--format={{.Restarts}}
option to thepodman pod ps
command now shows the total number of container restarts in a pod. - The podman machine provider can now be specified via the
CONTAINERS_MACHINE_PROVIDER
environment variable, as well as via theprovider
field incontainers.conf
(#17116). - A default list of pasta arguments can now be set in
containers.conf
viapasta_options
. - The
podman machine init
andpodman machine set
commands now support a new option,--user-mode-networking
, which improves interops with VPN configs that drop traffic from WSL networking, on Windows. - The remote Podman client’s
podman push
command now supports the--digestfile
option (#18216). - Podman now supports a new option,
--out
, that allows redirection or suppression of STDOUT (#18120).
Changes
- The
--filter id=xxx
option will now treatxxx
as a CID prefix, and not as a regular expression (#18471). - The
--filter
option now requires multiple--filter
flags to specify multiple filters. It will no longer support the comma syntax (--filter label=a,label=b
). - The
slirp4netns
binary for will now be searched for in paths specified by thehelper_binaries_dir
option incontainers.conf
(#18239). - Podman machine now updates
/run/docker.sock
within the guest to be consistent with its rootless/rootful setting (#18480). - The
podman system df
command now counts files which podman generates for use with specific containers as part of the disk space used by those containers, and which can be reclaimed by removing those containers. It also counts space used by files it associates with specific images and volumes as being used by those images and volumes. - The
podman build
command now returns a clearer error message when the Containerfile cannot be found. (#16354). - Containers created with
--pid=host
will no longer print errors on podman stop (#18460). - The
podman manifest push
command no longer requires a destination to be specified. If a destination is not provided, the source is used as the destination (#18360). - The
podman system reset
command now warns the user that the graphroot and runroot directories will be deleted (#18349), (#18295).
Quadlet
- Quadlet now exits with a non-zero exit code when errors are found (#18778).
- Rootless podman quadlet files can now be installed in
/etc/containers/systemd/users
directory. - Quadlet now supports the
AutoUpdate
option. - Quadlet now supports the
Mask
andUnmask
options. - Quadlet now supports the
WorkingDir
option, which specifies the default working dir in a container. - Quadlet now supports the
Sysctl
option, which sets namespaced kernel parameters for containers (#18727). - Quadlet now supports the
SecurityLabelNetsted=true
option, which allows nested SELinux containers. - Quadlet now supports the
Pull
option in.container
files (#18779). - Quadlet now supports the
ExitCode
field in.kube
files, which reflects the exit codes of failed containers. - Quadlet now supports
PodmanArgs
field. - Quadlet now supports the
HostName
field, which sets the container's host name, in.container
files (#18486).
Bugfixes
- The
podman machine start
command now waits for systemd-user sessions to be up, addressing flaky machine starts (##17403). - Fixed a bug where setting the
--list-tags
option in thepodman search
command would cause the command to ignore the--format
option (#18939). - Fixed a bug where the
podman machine start
command did not properly translate the proxy IP. - Fixed a bug where the
podman auto-update
command would not restart dependent units (specified viaRequires=
) on auto update (#18926). - Fixed a bug where the
podman pull
command would print ids multiple times when using additional stores (#18647). - Fixed a bug where creating a container while setting unmask option to an empty array would cause the create to fail (#18848).
- Fixed a bug where the propagation of proxy settings for QEMU VMs was broken.
- Fixed a bug where the
podman rm -fa
command could fail to remove dependency containers such as pod infra containers (#18180). - Fixed a bug where
--tz
option to thepodman create
andpodman run
commands would not create a proper localtime symlink to the zoneinfo file, which was causing some applications (e.g. java) to not read the timezone correctly. - Fixed a bug where lowering the ulimit after container creation would cause the container to fail (#18714).
- Fixed a bug where signals were not forwarded correctly in rootless containers (#16091).
- Fixed a bug where the
--filter volume=
option to thepodman events
command would not display the relevant events (#18618). - Fixed a bug in the
podman wait
command where containers created with the--restart=always
option would result in the container staying in a stopped state. - Fixed a bug where the
podman stats
command returned an incorrect memory limit after acontainer update
. (#18621). - Fixed a bug in the
podman run
command where thePODMAN_USERNS
environment variable was not ignored when the--pod
option was set, resulting in a container created in a different user namespace than its pod (#18580). - Fixed a bug where the
podman run
command would not create the/run/.containerenv
when the tmpfs is mounted on/run
(#18531). - Fixed a bug where the
$HOME
environment variable would be configured inconsistently between container starts if a new passwd entry had to be created for the container. - Fixed a bug where the
podman play kube
command would restart initContainers based on the restart policy of the pod. initContainers should never be restarted. - Fixed a bug in the remote Podman client’s
build
command where an invalid platform would be set. - Fixed a bug where the
podman history
command did not display tags (#17763). - Fixed a bug where the
podman machine init
command would create invalid machines when run with certain UIDs (#17893). - Fixed a bug in the remote Podman client’s
podman manifest push
command w...
v4.5.1
Security
- Do not include image annotations when building spec. These annotations can have security implications - crun, for example, allows rootless containers to preserve the user's groups through an annotation.
Quadlet
- Fixed a bug in quadlet to recognize the systemd optional prefix '-'.
Bugfixes
- Fixed a bug where fully resolving symlink paths included the version number, breaking the path to homebrew-installed qemu files (#18111).
- Fixed a bug where Podman was splitting the filter map slightly differently compared to Docker (#18092).
- Fixed a bug where running
make package
did not work on RHEL 8 environments (#18421). - Fixed a bug to allow comma separated dns server IP addresses in
podman network create --dns
andpodman network update --dns-add/--dns-drop
(#18663). - Fixed a bug to correctly stop containers created with --restart=always in all cases (#18259).
- Fixed a bug in podman-remote logs to correctly display errors reported by the server.
- Fixed a bug to correctly tear down the network stack again when an error happened during the setup.
- Fixed a bug in the remote API exec inspect call to correctly display updated information, e.g. when the exec process died (#18424).
- Fixed a bug so that podman save on windows can now write to stdout by default (#18147).
- Fixed a bug where podman machine rm with the qemu backend now correctly removes the machine connection after the confirmation message not before (#18330).
- Fixed a problem where podman machine connections would try to connect to the ipv6 localhost ipv6 (::1) (#16470).