본문 바로가기

DevOps/Docker

[Docker] 쌓이는 image&container 정리

Docker를 사용하는 경우 쌓이는 이미지와 컨테이너의 수가 많아질 수 있습니다.

이는 디스크 공간을 많이 차지하며, 성능 문제 및 보안 취약성 등의 문제를 일으킬 수 있습니다.

또한, 빌드가 되지않는 에러가 발생할 수 있습니다.

따라서, Dcoker 이미지 및 컨테이너를 주기적으로 관리하는 것이 좋습니다. 

 

1.  사용하지 않는 Docker 리소스 제거

docker system prune -a

위의 명령어를 사용하여 다음과 같은 리소스들을 제거합니다.

  • 사용되지 않는 이미지 (dangling images)
  • 종료된 컨테이너 (exited containers)
  • 사용되지 않는 볼륨 (dangling volumes)
  • 사용되지 않는 네트워크 (dangling networks)

모든 리소스를 제거하기 위해 "-a" 플래그를 사용합니다.

이 명령어는 사용되지 않는 리소스를 삭제하여 도커 환경의 디스크 공간을 확보하는 데 사용됩니다.

 

2.  Docker Image Garbage Collector (docker-gc) 사용

Docker Image Garbage Collector (docker-gc)는 도커(Docker) 이미지와 컨테이너를 관리하기 위한 오픈소스 도구 중 하나입니다. 이 도구는 사용하지 않는 이미지, 컨테이너, 볼륨 등의 도커 리소스를 식별하고 삭제하는 데 사용됩니다.

docker-gc는 일반적으로 크론(Cron) 작업을 사용하여 정기적으로 실행되며, 사용하지 않는 도커 리소스를 삭제하여 디스크 공간을 확보하고 도커 환경의 성능을 개선합니다. docker-gc는 도커 환경에서 여러 개의 도커 호스트를 사용하는 경우에도 유용합니다.

 

이 경우, 모든 호스트에서 docker-gc를 실행하여 사용하지 않는 도커 리소스를 주기적으로 삭제함으로써 전체적인 리소스 사용을 최적화할 수 있습니다. docker-gc는 일반적으로 도커 데몬(Docker daemon)에서 직접 실행되며, 도커 이미지나 컨테이너 등을 삭제하기 전에 미리 백업을 수행하는 것이 좋습니다.

 

3.  docker 이미지 레지스트리 사용

Docker 이미지 레지스트리를 사용하여 이미지를 저장하고 관리하는 것도 좋은 방법입니다.

Docker 이미지 레지스트리는 다양한 클라우드 서비스 및 호스팅 제공업체에서 제공하고 있습니다. 

대표적으로 Docker Hub, AWS ECR, Google Container Registry 등이 있습니다.

 

도커 이미지 레지스트리는 도커 이미지를 중앙 집중적으로 관리할 수 있으므로, 다수의 사용자가 이미지를 공유하고, 동시에 업데이트하고, 보안 및 관리를 수행할 수 있습니다.

 

4.  정기적인 이미지 빌드

Docker 이미지를 빌드하려면  Dockerfile을 작성해야 합니다.

Dockerfile을 작성하면 Docker 이미지를 생성할 수 있으며, Dockerfile은 수정 가능합니다.

일정 기간마다 새로운 Docker 이미지를 빌드하도록 스케줄링하면 사용 가능한 이미지가 항상 최신 상태를 유지합니다.