Safeguard
Developer Tools•

What stops working when you run containers rootless with Podman?

Rootless Podman cannot bind ports below 1024 by default, create device nodes or use some storage. Review the documented limits before you migrate.

Safeguard Security Team
4 min read

Rootless Podman cannot bind ports below 1024 by default, create device nodes, run on NFS home directories, or use image UIDs outside its mapped range. Many of these limits come from kernel rules that exist for security. Check each one against your workloads before you move them rootless.

Why rootless has limits at all

Rootless mode runs the container engine and containers as an ordinary user inside a user namespace. The Linux manual notes that a process can be root inside such a namespace yet unprivileged outside it. Operations that touch the real host, such as creating devices or binding low ports, still need real privileges, so they fail. The Podman project's own page says many of its listed shortcomings are kernel restrictions in place for security reasons that Podman cannot reasonably solve.

The documented limits, in a table

LimitWhat happensWorkaround noted in the docs
Ports below 1024Bind fails, as the process lacks CAP_NET_BIND_SERVICELower the unprivileged port start sysctl, or redirect from a privileged port
Missing subuid and subgidCommands failConfigure the files for the user
Device nodesCreating them fails, even in privileged containersRun as root if a container must make device nodes
NFS or parallel filesystem homeFile creation by other UIDs is refused by the serverUse local storage
Images with high UIDsBuilds fail if a UID is not mappedA standard setup maps only 65,536 IDs
Checkpoint and restoreNot available rootlessNeeds root
Resource limits on cgroups v1Not supportedUse cgroups v2

The page also lists reduced functionality for a few commands, shared image stores that are hard to set up, and some systemd unit options that fail in a rootless container.

The low port example

The kernel does not let a process without the net bind capability bind below port 1024. The page shows the sysctl net.ipv4.ip_unprivileged_port_start for changing the lowest unprivileged port, for example to 443. The trade off is that the setting is system wide and applies to every user on the host. The other route the page gives is a proxy, a firewall rule or a redirect tool that sends traffic from a privileged port to an unprivileged one.

Networking changes to know about

From Podman 5.0, the page says pasta is the default networking tool. Because pasta copies the host's main interface address, connections to that address from containers do not work unless you pass a pasta configuration or have more than one interface. Rootless bridge networks use a user space port forwarder by default, which does not preserve the client's source IP. An experimental setting can switch to pasta forwarding, and it depends on a recent passt build. Treat that as something to test, not assume.

A pre migration checklist

  1. List the ports each workload listens on and flag any below 1024.
  2. Check the user has subuid and subgid ranges.
  3. Check where home directories live. NFS homes are a known blocker.
  4. Check the highest UID or GID used in your images.
  5. Check whether any container needs devices, checkpointing or privileged systemd options.
  6. Pilot one non critical workload and record what fails.

For the Docker side of rootless, see rootless prerequisites and setup, and for the mapping files see subuid and subgid explained.

Safeguard scans the dependencies and images that go into your containers regardless of runtime, with a free scan at gold.safeguard.sh/scan.

Quick check

Does rootless mean a container breakout is harmless?

No. It limits what a breakout gains on the host, because the process is an unprivileged user there. Data you mounted into the container is still reachable.

Why can a privileged rootless container not create device nodes?

The kernel does not let processes without the mknod capability create them, so a container needing devices must run as root.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.