diff --git a/docs/source/markdown/podman-systemd.unit.5.md b/docs/source/markdown/podman-systemd.unit.5.md index 269c7ffd3b..9364fcc6b9 100644 --- a/docs/source/markdown/podman-systemd.unit.5.md +++ b/docs/source/markdown/podman-systemd.unit.5.md @@ -659,6 +659,8 @@ This key can be listed multiple times. Ulimit options. Sets the ulimits values inside of the container. +This key can be listed multiple times. + ### `Unmask=` Specify the paths to unmask separated by a colon. unmask=ALL or /path/1:/path/2, or shell expanded paths (/proc/*): diff --git a/pkg/systemd/quadlet/quadlet.go b/pkg/systemd/quadlet/quadlet.go index c484ec66d0..7d38516e98 100644 --- a/pkg/systemd/quadlet/quadlet.go +++ b/pkg/systemd/quadlet/quadlet.go @@ -574,8 +574,8 @@ func ConvertContainer(container *parser.UnitFile, names map[string]string, isUse podman.add("--security-opt", fmt.Sprintf("label=level:%s", securityLabelLevel)) } - ulimit, ok := container.Lookup(ContainerGroup, KeyUlimit) - if ok && len(ulimit) > 0 { + ulimits := container.LookupAll(ContainerGroup, KeyUlimit) + for _, ulimit := range ulimits { podman.add("--ulimit", ulimit) } diff --git a/test/e2e/quadlet/ulimit.container b/test/e2e/quadlet/ulimit.container index 7b19cb002d..8e92c73223 100644 --- a/test/e2e/quadlet/ulimit.container +++ b/test/e2e/quadlet/ulimit.container @@ -1,6 +1,8 @@ ## assert-podman-final-args localhost/imagename -## assert-podman-args "--ulimit nproc:1234:5678" +## assert-podman-args --ulimit nproc=1234:5678 +## assert-podman-args --ulimit cpu=1234:5678 [Container] Image=localhost/imagename -Ulimit=nproc:1234:5678 +Ulimit=nproc=1234:5678 +Ulimit=cpu=1234:5678 diff --git a/test/e2e/quadlet_test.go b/test/e2e/quadlet_test.go index a4e76edccb..436d7813db 100644 --- a/test/e2e/quadlet_test.go +++ b/test/e2e/quadlet_test.go @@ -815,6 +815,7 @@ BOGUS=foo Entry("subidmapping-with-remap.container", "subidmapping-with-remap.container", 1, "converting \"subidmapping-with-remap.container\": deprecated Remap keys are set along with explicit mapping keys"), Entry("sysctl.container", "sysctl.container", 0, ""), Entry("timezone.container", "timezone.container", 0, ""), + Entry("ulimit.container", "ulimit.container", 0, ""), Entry("unmask.container", "unmask.container", 0, ""), Entry("user.container", "user.container", 0, ""), Entry("userns.container", "userns.container", 0, ""),