Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions cmd/podman/common/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,12 @@ func buildFlagsWrapperToOptions(c *cobra.Command, contextDir string, flags *Buil
for _, arg := range podmanConfig.RuntimeFlags {
runtimeFlags = append(runtimeFlags, "--"+arg)
}
configIndex := filepath.Base(podmanConfig.RuntimePath)
if len(runtimeFlags) == 0 {
for _, arg := range podmanConfig.ContainersConfDefaultsRO.Engine.OCIRuntimesFlags[configIndex] {
runtimeFlags = append(runtimeFlags, "--"+arg)
}
}
if podmanConfig.ContainersConf.Engine.CgroupManager == config.SystemdCgroupsManager {
runtimeFlags = append(runtimeFlags, "--systemd-cgroup")
}
Expand Down
2 changes: 2 additions & 0 deletions docs/source/markdown/options/runtime-flag.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@

Adds global flags for the container runtime. To list the supported flags, please consult the manpages of the selected container runtime.

Default runtime flags can be added in containers.conf.

Note: Do not pass the leading -- to the flag. To pass the runc flag --log-format json to buildah build, the option given is --runtime-flag log-format=json.
2 changes: 2 additions & 0 deletions docs/source/markdown/podman.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ consult the manpages of the selected container runtime (`runc` is the default
runtime, the manpage to consult is `runc(8)`. When the machine is configured
for cgroup V2, the default runtime is `crun`, the manpage to consult is `crun(8)`.).

Default runtime flags can be added in containers.conf.

Note: Do not pass the leading `--` to the flag. To pass the runc flag `--log-format json`
to podman build, the option given can be `--runtime-flag log-format=json`.

Expand Down
15 changes: 11 additions & 4 deletions libpod/oci_conmon_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,14 @@ func newConmonOCIRuntime(name string, paths []string, conmonPath string, runtime
supportsKVM[r] = true
}

configIndex := filepath.Base(name)

if len(runtimeFlags) == 0 {
for _, arg := range runtimeCfg.Engine.OCIRuntimesFlags[configIndex] {
runtimeFlags = append(runtimeFlags, "--"+arg)
}
}

runtime := new(ConmonOCIRuntime)
runtime.name = name
runtime.conmonPath = conmonPath
Expand All @@ -108,10 +116,9 @@ func newConmonOCIRuntime(name string, paths []string, conmonPath string, runtime
// TODO: probe OCI runtime for feature and enable automatically if
// available.

base := filepath.Base(name)
runtime.supportsJSON = supportsJSON[base]
runtime.supportsNoCgroups = supportsNoCgroups[base]
runtime.supportsKVM = supportsKVM[base]
runtime.supportsJSON = supportsJSON[configIndex]
runtime.supportsNoCgroups = supportsNoCgroups[configIndex]
runtime.supportsKVM = supportsKVM[configIndex]

foundPath := false
for _, path := range paths {
Expand Down
19 changes: 19 additions & 0 deletions test/system/030-run.bats
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,25 @@ echo $rand | 0 | $rand
is "$output" ".*invalidflag" "failed when passing undefined flags to the runtime"
}

# bats test_tags=ci:parallel
@test "podman run - containers.conf runtime options" {
skip_if_remote "requires local containers.conf"

containersConf=$PODMAN_TMPDIR/containers.conf
cat >$containersConf <<EOF
[engine]
runtime="$(podman_runtime)"

[engine.runtimes_flags]
$(podman_runtime) = [
"invalidflag",
]
EOF

CONTAINERS_CONF="$containersConf" run_podman 126 run --rm $IMAGE
is "$output" ".*invalidflag" "failed when passing undefined flags to the runtime"
}

# bats test_tags=ci:parallel
@test "podman run --memory=0 runtime option" {
run_podman run --memory=0 --rm $IMAGE echo hello
Expand Down