저는 대용량 Docker 이미지 문제를 해결하고, 빌드가 완료되기를 기다리고, 스토리지 낭비를 걱정하는 데 많은 시간을 보냈습니다. Dockerfile을 아무리 주의 깊게 구성하더라도 이미지가 항상 필요 이상으로 무거워지는 것 같았습니다. SlimToolkit(이전의 DockerSlim)을 발견하면서 모든 것이 바뀌었습니다.
이 도구는 Docker 이미지를 분석하고 런타임에 실제로 필요한 파일과 종속성을 식별하고 다른 모든 것을 제거합니다. 이 가이드를 따라 SlimToolkit의 작동 방식과 Docker 이미지를 손상시키지 않고 축소하는 데 사용한 단계를 확인하세요.
목차
SlimToolkit으로 Docker 이미지 최적화 단순화
슬림툴킷 애플리케이션 코드나 Dockerfile을 변경할 필요 없이 Docker 이미지 크기를 줄이는 오픈 소스 도구입니다. 패키지 정리 또는 빌드 단계 다시 작성과 같은 수동 최적화 단계가 필요하지 않습니다. 대신 SlimToolkit은 이미지 최적화를 자동으로 처리하고 프로세스를 단순하게 유지합니다.
Docker 이미지에서 SlimToolkit을 실행하면 컨테이너가 실행되는 방식을 관찰하여 동적 분석을 수행합니다. 실행 중에 애플리케이션이 어떤 파일, 라이브러리 및 종속성을 다루는지 정확하게 추적합니다. 이 데이터를 기반으로 필요한 구성요소만 포함된 최적화된 새 이미지를 생성합니다. 원본 이미지를 변경하지 않고 유지하므로 프로세스가 안전하고 쉽게 되돌릴 수 있습니다.
SlimToolkit은 기존 이미지와 함께 작동하며 고급 Docker 또는 Linux 지식이 없어도 Node.js, Python, Java 및 Go를 지원합니다. 대부분의 워크플로에 원활하게 통합되어 공격자가 악용할 수 있는 사용되지 않는 도구와 셸을 제거하여 컨테이너 보안을 향상합니다. 작은 이미지는 더 빠르게 다운로드되고, 더 빠르게 시작되며, 더 적은 리소스를 소비하므로 CI/CD 파이프라인에 있어 엄청난 이점을 제공합니다.
Docker를 통해 SlimToolkit을 사용하는 것은 로컬 설치가 필요하지 않기 때문에 가장 쉬운 방법입니다. Docker가 설치되어 실행 중이면 SlimToolkit을 바로 사용할 수 있습니다.
먼저, 다음 docker 명령을 사용하여 공식 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
일부 언어(예:Python 또는 Ruby)에는 표준 프로브 중에 즉시 트리거되지 않는 종속성이 있을 수 있습니다. 이러한 경우에는 "/usr/local/lib/python3.11"과 같이 SlimToolkit에 유지할 폴더를 알려주는 "ignore.txt" 파일을 생성하세요. 이렇게 하면 SlimToolkit이 필수 런타임 종속성을 제거하지 못하게 됩니다.
보존 규칙을 포함하려면 볼륨 마운트와 함께 명령을 실행할 수 있습니다:
-v "$(pwd)":/target --preserve-path-file /target/ignore.txt 크기 차이 비교:원본과 원본 비교 슬림한 이미지
프로세스가 완료되면 SlimToolkit은 최적화된 이미지를 로컬에 저장합니다. 다음 명령을 사용하여 원본 버전과 슬림 버전 간의 크기 차이를 비교할 수 있습니다:
docker images 극적인 감소를 경험할 수 있습니다.
마지막으로 새로 최적화된 이미지를 테스트하여 예상대로 작동하는지 확인하세요.
docker run -it -p 8080:80 nginx-slim:latest
브라우저를 열고 http://localhost:8080으로 이동합니다. 기본 Nginx 시작 페이지가 표시되지만 상당히 작은 컨테이너 공간에서 실행됩니다.
SlimToolkit은 Docker 이미지를 분석하고 최적화하는 데 도움이 되는 몇 가지 주요 명령을 제공합니다. 가장 유용한 목록은 다음과 같습니다:
다음 명령을 사용하여 사용 가능한 모든 SlimToolkit 명령과 사용법을 확인할 수도 있습니다.
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim slim help
유념해야 할 제한 사항
SlimToolkit은 Docker 이미지 크기를 줄이는 데 도움이 되지만 몇 가지 단점을 고려해야 합니다.
- 대형 이미지를 줄이면 시간이 더 오래 걸릴 수 있으므로 그에 맞게 계획하세요.
- 도구는 동적 분석을 사용하기 때문에 빌드 프로세스 중에 특정 코드 경로가 실행되지 않으면 SlimToolkit은 종속성이 사용되지 않는 것으로 간주하여 삭제할 수 있습니다. 항상 슬림한 이미지를 철저하게 테스트하세요.
- 공간을 절약하기 위해 bash나 컬과 같은 도구를 제거하는 경우가 많습니다. 프로덕션 컨테이너 내부의 문제 해결을 위해 이러한 정보가 필요한 경우 SlimToolkit에 이를 유지하도록 명시적으로 지시해야 합니다.
마무리
워크플로에 SlimToolkit을 추가하면 배포가 가속화되고 일관된 성능이 보장되며 컨테이너 팽창이 최소화됩니다. 원본 빌드를 변경하지 않고 유지하면서 더욱 깨끗하고 전문적인 Docker 이미지를 구축하는 데 도움이 됩니다. 또한 최고의 Docker 정리 방법을 채택하면 시간이 지나도 효율적이고 잘 구성된 컨테이너를 유지하는 데 도움이 됩니다.