기본적으로 container는 무제한 호스트 리소스를 사용할 수 있습니다 — 이는 한 container가 다른 것들을 굶기거나 호스트를 크래시시킬 위험이 있습니다. Docker는 소비를 통제하기 위해 리소스 제한(CPU, 메모리)을 설정할 수 있게 하며, 이는 프로덕션에서 안정성과 공정한 리소스 공유에 중요합니다.
문제: 무제한 리소스 사용
기본적으로 container는 사용 가능한 모든 호스트 CPU와 메모리를 소비할 수 있음:
→ 버그가 있는/바쁜 container(메모리 누수, 폭주 루프)가 다른 container를 굶기거나
전체 호스트를 크래시시킬 수 있음(메모리 부족)
→ 프로덕션(호스트당 여러 container)에서는 격리를 위해 리소스를 제한할 것.
메모리와 CPU 제한 설정
docker run -m 512m myapp
docker run -m 512m --memory-reservation 256m myapp
docker run --cpus= myapp
docker run --cpu-shares=512 myapp
