티스토리 뷰

개발/docker

컨테이너 메모리 제한

Jaeyeon Baek 2021. 11. 24. 07:56

컨테이너를 생성할 때 제한은 아래와 같이 해줍니다. 메모리는 b, k, m, g로 설정할 수 있습니다. 여기서 적용되는 메모리 제한은 hard limit입니다. 해당 메모리를 초과해서 사용하려고 하면 OOM(out of memory)이 발생됩니다. 

$ docker run -d -it --name local-python --memory=1g python:3.8-slim /bin/bash

한편, memory를 따로 설정하지 않으면 0으로 적용됩니다. 즉, 호스트의 메모리 전체를 공유해서 사용하게 됩니다.

 

잘 적용되었는지는 inspect 옵션을 통해 확인할 수 있습니다. 

$ docker inspect local-python | grep Memory
            "Memory": 1073741824,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 2147483648,
            "MemorySwappiness": null,

위에 보이는 다른 메모리도 옵션으로 조정할 수 있습니다. MomoryReservation은 --memory-reservation 으로 설정됩니다. 이건 soft limit을 나타냅니다. 또 MemorySwap은 --memory-swap 으로 설정할 수 있습니다.

 

실행 중인 컨테이너의 메모리는 update 옵션으로 변경할 수 있습니다.

$ docker update --memory=512m local-python

 

위에서처럼 inspect 옵션으로 메모리가 잘 변경되었는지 확인해봅니다.

$ docker inspect local-python | grep Memory
            "Memory": 536870912,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 2147483648,
            "MemorySwappiness": null,

 

 

 


reference : https://docs.docker.com/config/containers/resource_constraints/

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday