대용량 Docker 이미지를 관리하는 것은 시간이 많이 소요되는 어려운 작업이며, 빌드 대기 시간이 길어지고 스토리지 사용량에 대한 우려가 커지는 경우가 많습니다. Dockerfile을 신중하게 구성하더라도 최적의 이미지 크기를 달성하는 것은 쉽지 않습니다.하지만 SlimToolkit (이전 이름은 DockerSlim)을 발견한 후 이러한 상황이 극적으로 개선되었습니다.
이 혁신적인 도구는 Docker 이미지를 철저히 분석하여 런타임에 필요한 필수 파일과 종속성을 찾아내고 불필요한 요소를 제거합니다.
SlimToolkit을 사용하여 Docker 이미지 최적화하기
SlimToolkit 은 애플리케이션 코드나 Dockerfile을 수정하지 않고도 Docker 이미지 최적화를 간소화하도록 설계된 오픈 소스 솔루션입니다.최적화 프로세스를 자동화함으로써 패키지 정리나 빌드 단계 재구성 같은 노동 집약적인 작업을 없애줍니다.
SlimToolkit을 Docker 이미지에서 실행하면 런타임 중에 컨테이너를 감시하여 애플리케이션이 상호 작용하는 파일, 라이브러리 및 종속성을 동적으로 분석합니다.이 정보를 사용하여 필수 구성 요소만 포함하는 새 이미지를 생성하고, 안전과 손쉬운 복구를 위해 원본 이미지는 보존합니다.
SlimToolkit은 Node.js, Python, Java, Go 등 다양한 프로그래밍 환경과 호환되므로 고급 Docker 또는 Linux 전문 지식이 없는 사용자도 쉽게 사용할 수 있습니다.기존 워크플로에 원활하게 통합되어 잠재적인 공격 대상이 될 수 있는 불필요한 도구와 셸을 제거함으로써 컨테이너 보안을 강화합니다.또한 이미지 크기가 작아 다운로드 속도가 빨라지고 시작 속도가 향상되며 리소스 사용량이 줄어들어 CI/CD 파이프라인에 상당한 이점을 제공합니다.
SlimToolkit 시작하기
SlimToolkit을 사용하는 가장 간단한 방법은 Docker를 이용하는 것이므로 로컬 설치가 필요 없습니다. Docker가 실행 중인 한, SlimToolkit을 즉시 활용할 수 있습니다.
먼저 아래 명령어를 실행하여 공식 SlimToolkit 이미지를 다운로드하세요.
docker pull dslim/slim

SlimToolkit을 실행하려면 Docker 소켓을 마운트해야 합니다 /var/run/docker.sock.이를 통해 컨테이너가 로컬 Docker 엔진과 통신하여 이미지 분석 및 최적화를 수행할 수 있습니다.반드시 신뢰할 수 있는 공식 이미지만 사용하십시오.
SlimToolkit을 사용하여 Docker 이미지 크기 최소화하기
최적화 과정을 설명하기 위해 표준 Nginx 이미지의 크기를 줄여보겠습니다.먼저 최신 공식 Nginx 이미지를 다운로드합니다.
docker pull nginx:latest

Nginx와 같은 일반적인 애플리케이션의 경우 빌드 명령을 직접 실행할 수 있습니다. SlimToolkit은 컨테이너에서 사용되는 파일을 확인하고 불필요한 파일을 제거합니다.
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim build --target nginx:latest --tag nginx-slim:latest

파이썬이나 루비와 같은 일부 프로그래밍 언어는 일반적인 탐색 과정에서 즉시 활성화되지 않는 종속성이 있을 수 있다는 점을 유념하십시오.필요한 경우, ignore.txt유지할 디렉터리를 지정하는 파일을 생성하여 /usr/local/lib/python3.11SlimToolkit이 중요한 런타임 종속성을 제거하지 않도록 할 수 있습니다.
보존 규칙에 볼륨 마운트를 사용하여 명령을 실행하려면 다음을 사용하십시오.
-v "$(pwd)":/target --preserve-path-file /target/ignore.txt
크기 축소 평가: 원본 이미지 vs.축소된 이미지
최적화 과정이 완료되면 SlimToolkit은 새로 크기가 줄어든 이미지를 로컬에 저장합니다.다음 명령어를 사용하여 원본 이미지와 최적화된 이미지의 크기 차이를 비교할 수 있습니다.
docker images
일반적으로 크기가 상당히 줄어든 것을 확인할 수 있습니다.

마지막으로, 다음 명령을 실행하여 새로 최적화된 이미지가 예상대로 작동하는지 확인하십시오.
docker run -it -p 8080:80 nginx-slim:latest

브라우저에서 http://localhost:8080 으로 이동하면 훨씬 더 작은 컨테이너 용량에서 제공되는 기본 Nginx 환영 페이지를 볼 수 있습니다.

SlimToolkit의 필수 명령어
SlimToolkit은 Docker 이미지 분석 및 최적화를 용이하게 하는 여러 명령어를 제공합니다.그중 가장 유용한 몇 가지를 소개합니다.
| 명령 | 설명 |
|---|---|
| 슬림한 디자인 | Docker 이미지에서 필수 파일과 종속성만 남겨 이미지 크기를 효과적으로 줄여 최적화합니다. |
| 슬림 엑스레이 | Docker 이미지를 분석하여 파일, 레이어 및 종속성을 포함한 이미지 내용을 보여줍니다. |
| 얇은 린트 | 빌드 오류를 방지하기 위해 Dockerfile의 오류를 검증합니다. |
| 슬림 디버그 | 간소화된 Docker 이미지에서 생성된 실행 중인 컨테이너의 디버깅을 용이하게 합니다. |
| 슬림한 프로필 | 분석을 위해 Docker 이미지의 크기와 성능에 대한 정보를 담은 JSON 보고서를 수집하고 출력합니다. |
| 슬림 머지 | 두 개의 Docker 이미지를 하나의 통합 이미지로 병합할 수 있습니다. |
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim slim help

고려사항 및 제한사항
SlimToolkit은 Docker 이미지 크기를 효과적으로 최소화하지만, 몇 가지 제한 사항을 염두에 두는 것이 중요합니다.
- 대용량 이미지 최적화에는 추가 시간이 소요될 수 있으므로, 이를 고려하여 계획을 세우는 것이 좋습니다.
- SlimToolkit은 동적 분석에 의존하기 때문에 빌드 중에 실행되지 않으면 필수 종속성을 중복으로 잘못 식별할 수 있습니다.따라서 간소화된 이미지에 대한 철저한 테스트가 필수적입니다.
bash공간을 절약하기 위해 와 같은 유틸리티가 제거될 수 있습니다curl.프로덕션 컨테이너 내에서 문제 해결을 위해 이러한 유틸리티가 필요한 경우 보존 기간을 지정해야 합니다.
결론
SlimToolkit을 개발 워크플로에 통합하면 배포 속도가 향상되고, 일관된 성능이 보장되며, 컨테이너 용량 증가를 방지할 수 있습니다. SlimToolkit을 사용하면 원본 빌드를 보존하면서 더욱 깔끔하고 유지 관리하기 쉬운 Docker 이미지를 생성할 수 있습니다.또한 효과적인 Docker 정리 방법을 활용하면 컨테이너 관리 전략의 효율성을 지속적으로 높일 수 있습니다.
답글 남기기