I am running the last version of Docker on top of Ubuntu 13.04 (Raring Ringtail):
root@docker:~# docker version
Client version: 0.6.6
Go version (client
The -m switch does work (setting hard memory limit), and accepts human-readable k|m|g memory units.
You can use docker inspect to verify it has desired effect on the "Memory" key:
$ docker run --rm -d --name ubuntu -m 8g ubuntu:focal && docker inspect ubuntu | grep Memory
"Memory": 8589934592,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": -1,
"MemorySwappiness": null,
$ docker run --rm -d --name ubuntu -m 16g ubuntu:focal && docker inspect ubuntu | grep Memory
"Memory": 17179869184,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": -1,
"MemorySwappiness": null,
You can also set burstable limits, i.e. memory requests / reservations / guaranteed minimums (that won't protect the host from crashing, but will protect the containerized app from running out of memory, until the physical limit is reached):
$ docker run --rm -d --name ubuntu --memory-reservation 16g ubuntu:focal && docker inspect ubuntu | grep Memory
"Memory": 0,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 17179869184,
"MemorySwap": 0,
"MemorySwappiness": null,