For v2, it uses memory.high if available (recommended way of setting a functioning soft limit), then first falls back to memory.max (e.g. from docker run -m), then to memory.low (e.g. from docker run --memory-reservation), and finally to memory.min.
Falls back to direct reading of /sys/fs/cgroup/memory/memory.limit_in_bytes for cases where that exists, but no full cgroupfs is mounted (e.g. on Heroku).
Limit enforcement (now to 8 TB) is still in place this way - a Docker v1 value will be read, and run into the limit for unrestricted containers, without hitting the fallback and getting returned.
For v2, it uses
memory.high
if available (recommended way of setting a functioning soft limit), then first falls back tomemory.max
(e.g. fromdocker run -m
), then tomemory.low
(e.g. fromdocker run --memory-reservation
), and finally tomemory.min
.Falls back to direct reading of
/sys/fs/cgroup/memory/memory.limit_in_bytes
for cases where that exists, but no full cgroupfs is mounted (e.g. on Heroku).Limit enforcement (now to 8 TB) is still in place this way - a Docker v1 value will be read, and run into the limit for unrestricted containers, without hitting the fallback and getting returned.
GUS-W-16051950