docs/ulimits.md
Set per-process resource limits for your containers.
The --ulimit option of container run (and container create) sets Linux resource
limits (rlimits) for the container's init process.
container run --ulimit <type>=<soft>[:<hard>] ...
If you set a single value, it applies as both soft and hard limit:
container run --ulimit nofile=65536 -it ubuntu:24.04 bash
Set soft and hard limits independently:
container run --ulimit nofile=65536:131072 -it ubuntu:24.04 bash
Set multiple limits by repeating the flag:
container run --ulimit nofile=65536:131072 --ulimit cpu=60 -it ubuntu:24.04 bash
Use unlimited for no limit:
container run --ulimit nproc=unlimited -it ubuntu:24.04 bash
[!NOTE]
nofile=unlimitedreliably fails to start the container (NSPOSIXErrorDomain Code=1 "Operation not permitted"). This isn't acontainerbug —unlimitedsets both soft and hard limits toUINT64_MAX, and Linux capsRLIMIT_NOFILE's hard limit at the guest's/proc/sys/fs/nr_open(1048576here); anything above that ceiling fails the same way,unlimitedincluded. Use an explicit value at or belownr_openinstead, e.g.nofile=1048576.
| Type | Maps to | Description |
|---|---|---|
core | RLIMIT_CORE | Maximum core file size, in bytes |
cpu | RLIMIT_CPU | Maximum CPU time, in seconds |
data | RLIMIT_DATA | Maximum data segment size, in bytes |
fsize | RLIMIT_FSIZE | Maximum file size, in bytes |
locks | RLIMIT_LOCKS | Maximum number of file locks |
memlock | RLIMIT_MEMLOCK | Maximum amount of memory that may be locked into RAM |
msgqueue | RLIMIT_MSGQUEUE | Maximum bytes in POSIX message queues |
nice | RLIMIT_NICE | Maximum nice priority |
nofile | RLIMIT_NOFILE | Maximum number of open file descriptors |
nproc | RLIMIT_NPROC | Maximum number of processes |
rss | RLIMIT_RSS | Maximum resident set size, in bytes |
rtprio | RLIMIT_RTPRIO | Maximum real-time priority |
rttime | RLIMIT_RTTIME | Maximum real-time CPU time, in microseconds |
sigpending | RLIMIT_SIGPENDING | Maximum number of pending signals |
stack | RLIMIT_STACK | Maximum stack size, in bytes |
% container run -it --rm ubuntu:24.04 bash -c "ulimit -a"
open files (-n) 1048576
cpu time (seconds, -t) unlimited
...
% container run --ulimit nofile=131072 --ulimit cpu=60 -it --rm ubuntu:24.04 bash -c "ulimit -a"
open files (-n) 131072
cpu time (seconds, -t) 60
...