Files
podman/docs/source/markdown/options
ryanmccann1024 61cbc0c3ee feat(exec): Add --no-session flag for improved performance
Fixes: #26588

For use cases like HPC, where `podman exec` is called in rapid succession, the standard exec process can become a bottleneck due to container locking and database I/O for session tracking.

This commit introduces a new `--no-session` flag to `podman exec`. When used, this flag invokes a new, lightweight backend implementation that:

- Skips container locking, reducing lock contention
- Bypasses the creation, tracking, and removal of exec sessions in the database
- Executes the command directly and retrieves the exit code without persisting session state
- Maintains consistency with regular exec for container lookup, TTY handling, and environment setup
- Shares implementation with health check execution to avoid code duplication

The implementation addresses all performance bottlenecks while preserving compatibility with existing exec functionality including --latest flag support and proper exit code handling.

Changes include:
- Add --no-session flag to cmd/podman/containers/exec.go
- Implement lightweight execution path in libpod/container_exec.go
- Ensure consistent container validation and environment setup
- Add comprehensive exit code testing including signal handling (exit 137)
- Optimize configuration to skip unnecessary exit command setup

Signed-off-by: Ryan McCann <ryan_mccann@student.uml.edu>
Signed-off-by: ryanmccann1024 <ryan_mccann@student.uml.edu>
2025-11-19 12:44:48 -05:00
..
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2024-09-16 14:58:38 +02:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2023-12-14 05:17:43 -07:00
2022-12-07 09:29:29 -05:00
2025-01-21 12:47:30 -06:00
2024-02-29 11:47:44 -05:00
2023-05-16 15:10:33 -04:00
2023-11-22 11:00:13 -05:00
2023-11-22 11:00:13 -05:00
2024-01-11 21:13:25 -05:00
2023-11-22 11:00:13 -05:00
2022-12-07 09:29:29 -05:00
2023-05-16 15:10:33 -04:00
2023-11-22 11:00:13 -05:00
2025-04-22 16:50:02 -04:00
2022-12-07 09:29:29 -05:00
2022-12-12 18:39:26 -05:00
2023-11-22 11:00:13 -05:00
2022-12-07 09:29:29 -05:00
2023-11-22 11:00:13 -05:00
2022-12-07 09:29:29 -05:00
2023-11-22 11:00:13 -05:00
2025-10-25 22:58:46 -07:00
2022-12-07 09:29:29 -05:00
2025-01-15 06:51:32 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2025-01-31 16:19:18 -06:00
2025-02-03 10:50:46 -06:00
2023-11-22 11:00:13 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2023-05-16 15:10:33 -04:00
2023-05-16 15:10:33 -04:00
2022-12-07 09:29:29 -05:00
2023-05-16 15:10:33 -04:00
2023-11-22 11:00:13 -05:00
2022-12-07 09:29:29 -05:00
2023-05-16 15:10:33 -04:00
2023-11-22 11:00:13 -05:00
2023-11-22 11:00:13 -05:00
2023-07-25 11:17:44 +02:00
2025-01-21 12:47:30 -06:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2023-11-22 11:00:13 -05:00
2023-11-22 11:00:13 -05:00
2022-12-07 09:29:29 -05:00
2023-05-16 15:10:33 -04:00
2022-12-07 09:29:29 -05:00
2023-05-16 15:10:33 -04:00
2025-03-24 16:35:29 -06:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00
2023-11-22 11:00:13 -05:00
2022-12-07 09:29:29 -05:00
2022-12-07 09:29:29 -05:00

Common Man Page Options

This subdirectory contains option (flag) names and descriptions common to multiple podman man pages. Each file is one option. The filename does not necessarily need to be identical to the option name: for instance, hostname.container.md and hostname.pod.md exist because the --hostname option is sufficiently different between podman-{create,run} and podman-pod-{create,run} to warrant living separately.

How

The files here are included in podman-*.md.in files using the @@option mechanism:

@@option foo           ! includes options/foo.md

The tool that does this is hack/markdown-preprocess. It is a python script because it needs to run on readthedocs.io. From a given .md.in file, this script creates a .md file that can then be read by go-md2man, sphinx, anything that groks markdown. This runs as part of make docs.

Special Substitutions

Some options are almost identical except for 'pod' vs 'container' differences. For those, use <<text for pods|text for containers>>. Order is immaterial: the important thing is the presence of the string "pod" in one half but not the other. The correct string is chosen based on the filename: if the file contains -pod, such as podman-pod-create, the string with pod (case-insensitive) in it is chosen.

The string <<subcommand>> is replaced with the podman subcommand as determined from the filename, e.g., create for podman-create.1.md.in. This allows the shared use of examples in the option file:

    Example: podman <<subcommand>> --foo --bar

As a special case, podman-pod-X becomes just X (the "pod" is removed). This makes the pod-id-file man page more useful. To get the full subcommand including 'pod', use <<fullsubcommand>>.

Restrictions

There is a restriction for having a single text line with three back-ticks in the front and the end of the line. For instance:

```Some man page text```

This is currently not allowed and causes a corruption of the compiled man page. Instead, put the three back-ticks on separate lines like:

``` Some man page text ```