Limit memory on a Docker container doesn't work

前端 未结 5 1350
既然无缘
既然无缘 2020-12-12 22:04

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         


        
5条回答
  •  一向
    一向 (楼主)
    2020-12-12 22:55

    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,
    

提交回复
热议问题