Docker 환경에서 원치 않는 이미지 정리하는 방법

DockerBeginner
지금 연습하기

소개

Docker 는 개발자가 애플리케이션을 구축, 배포 및 관리하는 방식을 혁신한 강력한 컨테이너화 기술입니다. 하지만 Docker 를 사용하면서 환경이 사용되지 않는 이미지와 원치 않는 이미지로 쉽게 복잡해질 수 있습니다. 이 튜토리얼에서는 이러한 원치 않는 Docker 이미지를 식별하고 제거하는 과정을 안내하여 깨끗하고 효율적인 Docker 환경을 유지하는 데 도움을 드립니다.

Docker 이미지 개요

Docker 이미지는 Docker 컨테이너의 기본 구성 요소입니다. 실행할 애플리케이션을 위한 필요한 소프트웨어, 라이브러리 및 종속성을 포함하는 읽기 전용 템플릿입니다. Docker 이미지는 Docker Hub 와 같은 공용 레지스트리 또는 개인 레지스트리와 같은 Docker 레지스트리에 저장됩니다.

Docker 이미지를 더 잘 이해하기 위해 간단한 예를 살펴보겠습니다. 특정 버전의 Python 과 Python 라이브러리 세트가 필요한 웹 애플리케이션을 실행하려고 한다고 가정해 보겠습니다. 필요한 Python 런타임, 라이브러리 및 애플리케이션 코드를 포함하는 Docker 이미지를 만들 수 있습니다. 이 이미지는 하나 이상의 Docker 컨테이너를 생성하는 데 사용될 수 있으며, 각 컨테이너는 고립되고 일관된 환경에서 웹 애플리케이션을 실행합니다.

graph TD
    A[Docker 이미지] --> B[Docker 컨테이너]
    B --> C[애플리케이션]

Docker 이미지는 Dockerfile 이라는 명령어 집합을 사용하여 구축됩니다. Dockerfile 은 Docker 이미지를 생성하는 데 필요한 단계 (예: 소프트웨어 패키지 설치, 애플리케이션 코드 복사, 환경 변수 설정) 를 지정하는 텍스트 파일입니다. 다음은 간단한 Dockerfile 의 예입니다.

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]

이 Dockerfile 은 slim 변형이 포함된 Python 3.9 의 기본 이미지로 시작하여 작업 디렉터리를 /app으로 설정하고, requirements.txt 파일을 복사하고, 필요한 Python 패키지를 설치하고, 애플리케이션 코드를 복사하며, app.py 스크립트를 실행하는 명령을 설정합니다.

Docker 이미지를 사용하면 개발 환경에서 프로덕션 환경에 이르기까지 시스템 구성 또는 종속성의 차이를 걱정하지 않고 애플리케이션이 다양한 환경에서 일관되게 실행되도록 할 수 있습니다.

사용하지 않는 Docker 이미지 식별 및 목록화

Docker 를 계속 사용하면서 시스템에 많은 Docker 이미지가 누적될 수 있습니다. 이러한 이미지 중 일부는 사용되지 않거나 더 이상 필요하지 않을 수 있으며, 귀중한 디스크 공간을 차지합니다. Docker 환경을 효율적으로 관리하려면 이러한 원치 않는 이미지를 식별하고 제거하는 것이 중요합니다.

모든 Docker 이미지 목록화

시스템의 모든 Docker 이미지를 목록화하려면 docker images 명령어를 사용할 수 있습니다.

docker images

이 명령어는 각 이미지에 대한 정보 (이미지 ID, 레포지토리 및 태그, 생성 시간 및 크기 포함) 가 표시된 테이블을 표시합니다.

사용하지 않는 Docker 이미지 식별

사용하지 않는 Docker 이미지를 식별하려면 docker image prune 명령어를 사용할 수 있습니다. 이 명령어는 태그되지 않고 어떤 컨테이너에도 참조되지 않는 이미지인 모든 dangling 이미지를 제거합니다.

docker image prune

또한 시스템의 모든 이미지를 목록화하는 docker image ls 명령어를 사용하고, 수동으로 이미지를 검사하여 더 이상 필요하지 않은 이미지를 확인할 수도 있습니다.

사용하지 않는 Docker 이미지 목록화

시스템의 모든 사용하지 않는 Docker 이미지를 목록화하려면 docker image ls 명령어와 -f (필터) 옵션을 사용할 수 있습니다. 예를 들어, 현재 어떤 컨테이너에서도 사용되지 않는 모든 이미지를 목록화하려면 다음 명령어를 사용할 수 있습니다.

docker image ls -f dangling=true

이 명령어는 시스템의 모든 dangling 이미지에 대한 정보가 표시된 테이블을 표시합니다.

이러한 명령어를 사용하여 시스템의 사용하지 않는 Docker 이미지를 효과적으로 식별하고 목록화하여 Docker 환경을 관리하고 귀중한 디스크 공간을 확보하는 데 도움이 됩니다.

원치 않는 Docker 이미지 제거

이제 시스템에서 사용되지 않는 Docker 이미지를 식별했으므로 이제 제거할 차례입니다. Docker 이미지를 제거하는 방법은 특정 요구 사항에 따라 다릅니다.

특정 이미지 제거

특정 Docker 이미지를 제거하려면 docker rmi (이미지 제거) 명령어를 사용하고 이미지 ID 또는 레포지토리:태그 이름을 지정합니다. 예를 들어, ID 가 abc123인 이미지를 제거하려면 다음 명령어를 사용합니다.

docker rmi abc123

이미지가 실행 중인 컨테이너에서 사용 중인 경우 이미지를 제거하기 전에 먼저 컨테이너를 중지하고 제거해야 합니다.

모든 Dangling 이미지 제거

앞서 언급했듯이 dangling 이미지는 태그되지 않고 어떤 컨테이너에도 참조되지 않는 이미지입니다. 시스템의 모든 dangling 이미지를 제거하려면 docker image prune 명령어를 사용합니다.

docker image prune

이 명령어는 시스템의 모든 dangling 이미지를 제거하여 귀중한 디스크 공간을 확보합니다.

모든 사용하지 않는 이미지 제거

시스템의 모든 사용하지 않는 Docker 이미지를 제거하려면 docker image prune 명령어와 -a (모두) 옵션을 사용합니다.

docker image prune -a

이 명령어는 시스템의 어떤 컨테이너에서도 사용되지 않는 모든 Docker 이미지를 제거합니다.

이러한 명령어를 사용하여 시스템의 원치 않는 Docker 이미지를 효과적으로 제거하여 Docker 환경을 깨끗하고 효율적으로 유지할 수 있습니다.

요약

이 튜토리얼에서는 원치 않는 이미지를 식별하고 제거하여 Docker 환경을 효과적으로 관리하는 방법을 배웠습니다. 제시된 단계를 따르면 Docker 설정을 간결하고 효율적으로 유지하여 최적의 성능을 확보하고 불필요한 리소스 소비를 줄일 수 있습니다. 깨끗한 Docker 환경을 유지하는 것은 컨테이너화된 애플리케이션의 안정성과 확장성을 유지하는 데 필수적입니다.