Files
Lewis Roy 81d6d90195 Improve handling of --publish and incompatible NetNS modes
Handling is improved by:
- Inverting detection logic so all incompatible NetNS modes that can't be used with
the `--publish` option will now print a warning to the user.
- Updating the --publish documentation
- Extract detection logic out to it's own function with a note to keep
  docs in sync.

Note: path mode was added after this warning logic was added:
- https://github.com/containers/podman/pull/8230
- https://github.com/containers/podman/pull/16386

Relates-to: https://github.com/containers/podman/issues/26663

Signed-off-by: Lewis Roy <lewis@redhat.com>
2025-07-28 20:20:05 +10:00

1.3 KiB

####> This option file is used in: ####> podman create, pod create, run ####> If file is edited, make sure the changes ####> are applicable to all of those.

--publish, -p=[[ip:][hostPort]:]containerPort[/protocol]

Publish a container's port, or range of ports,<<| within this pod>> to the host.

Both hostPort and containerPort can be specified as a range of ports. When specifying ranges for both, the number of container ports in the range must match the number of host ports in the range.

If host IP is set to 0.0.0.0 or not set at all, the port is bound on all IPs on the host.

By default, Podman publishes TCP ports. To publish a UDP port instead, give udp as protocol. To publish both TCP and UDP ports, set --publish twice, with tcp, and udp as protocols respectively. Rootful containers can also publish ports using the sctp protocol.

Host port does not have to be specified (e.g. podman run -p 127.0.0.1::80). If it is not, the container port is randomly assigned a port on the host.

Use podman port to see the actual mapping: podman port $CONTAINER $CONTAINERPORT.

Port publishing is only supported for containers utilizing their own network namespace through bridge networks, or the pasta and slirp4netns network modes.