리소스 제한과 같은 컨테이너 보안 속성 검사
이 단계에서는 가장 기본적이면서도 중요한 컨테이너 보안 기능 중 하나인 리소스 제한에 대해 알아봅니다. 기본적으로 컨테이너는 호스트의 CPU 및 메모리를 원하는 만큼 사용할 수 있습니다. 제한을 설정하면 단일 컨테이너가 사용 가능한 모든 리소스를 소비하여 다른 컨테이너나 호스트 자체에 영향을 미치는 것을 방지할 수 있습니다.
먼저 이전에 생성한 webserver 컨테이너의 구성을 검사해 보겠습니다. docker inspect 명령은 컨테이너의 모든 설정이 포함된 상세한 JSON 출력을 제공합니다.
docker inspect webserver
출력은 매우 깁니다. --format 플래그를 사용하여 특정 필드를 추출할 수 있습니다. 메모리 제한이 설정되어 있는지 확인해 보겠습니다.
docker inspect --format='{{.HostConfig.Memory}}' webserver
출력은 0이 될 것이며, 이는 메모리 제한이 없음을 의미합니다.
0
이제 메모리 제한이 있는 새 컨테이너를 만들어 보겠습니다. 먼저 포트 매핑을 재사용할 것이므로 기존 컨테이너를 중지하고 제거해야 합니다.
docker stop webserver
docker rm webserver
다음으로 새 Nginx 컨테이너를 실행하지만, 이번에는 --memory="100m" 플래그를 추가하여 메모리 사용량을 100 메가바이트로 제한합니다. 새 이름도 지정하겠습니다.
docker run -d -p 8080:80 --name webserver-limited --memory="100m" nginx
이제 이 새 컨테이너의 메모리 제한을 검사합니다.
docker inspect --format='{{.HostConfig.Memory}}' webserver-limited
이번에는 출력이 바이트 단위의 메모리 제한 (100 × 1024 × 1024) 이 됩니다.
104857600
컨테이너에 리소스 제약을 성공적으로 적용했으며, 이는 컨테이너 보안 및 리소스 관리의 기초적인 단계입니다.