소개
Docker 는 소프트웨어 개발 및 배포를 혁신했지만, 시간이 지남에 따라 컨테이너 리소스를 관리하는 것이 어려워질 수 있습니다. 이 튜토리얼은 사용되지 않는 Docker 컨테이너를 식별하고 제거하는 데 대한 포괄적인 가이드를 제공하여 개발자 및 시스템 관리자가 깨끗하고 효율적인 컨테이너화된 환경을 유지할 수 있도록 돕습니다.
Docker 는 소프트웨어 개발 및 배포를 혁신했지만, 시간이 지남에 따라 컨테이너 리소스를 관리하는 것이 어려워질 수 있습니다. 이 튜토리얼은 사용되지 않는 Docker 컨테이너를 식별하고 제거하는 데 대한 포괄적인 가이드를 제공하여 개발자 및 시스템 관리자가 깨끗하고 효율적인 컨테이너화된 환경을 유지할 수 있도록 돕습니다.
Docker 컨테이너는 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 패키지입니다. 코드, 런타임, 시스템 도구, 라이브러리 및 설정이 포함됩니다. 가상 머신과 달리 컨테이너는 하드웨어 대신 운영 체제를 가상화하여 더욱 효율적이고 휴대성이 높습니다.
컨테이너는 수명 주기 동안 여러 중요한 상태를 거칩니다.
| 명령어 | 설명 | 예시 |
|---|---|---|
docker create |
새로운 컨테이너 생성 | docker create nginx |
docker run |
컨테이너 생성 및 시작 | docker run -d nginx |
docker start |
중지된 컨테이너 시작 | docker start container_id |
docker stop |
실행 중인 컨테이너 중지 | docker stop container_id |
docker rm |
컨테이너 제거 | docker rm container_id |
컨테이너는 다음을 제공합니다.
## Ubuntu 이미지 가져오기
docker pull ubuntu:22.04
## 대화형 컨테이너 실행
docker run -it ubuntu:22.04 /bin/bash
## 컨테이너 내부
root@container:/## ls
root@container:/## exit
이러한 Docker 컨테이너 기본 사항을 이해함으로써 사용자는 LabEx 의 포괄적인 컨테이너 관리 도구를 통해 컨테이너화된 애플리케이션을 효과적으로 관리하고 최적화할 수 있습니다.
컨테이너는 "사용되지 않음"으로 간주될 수 있는 다양한 상태로 존재할 수 있습니다.
## 모든 컨테이너(중지된 것 포함) 목록
docker ps -a
## 중지된 컨테이너 목록
docker ps -f "status=exited"
## 특정 기간 동안 실행되지 않은 컨테이너 목록
docker ps -f "status=exited" -f "before=24h"
| 컨테이너 유형 | 설명 | 식별 명령어 |
|---|---|---|
| 중지된 컨테이너 | 실행이 완료된 컨테이너 | docker ps -f "status=exited" |
| 중복 컨테이너 | 연결된 이미지가 없는 컨테이너 | docker ps -f "status=created" |
| 대기 중인 컨테이너 | 장기간 사용되지 않은 컨테이너 | docker ps -f "status=exited" -f "before=72h" |
## 특정 필터를 사용하여 컨테이너 찾기
docker ps -a --filter "name=web" --filter "status=exited"
## 사용되지 않는 컨테이너의 컨테이너 ID만 표시
docker ps -aq -f status=exited
## 컨테이너 세부 정보 검사
docker inspect $(docker ps -aq -f status=exited)
## 컨테이너 크기 및 리소스 소비량 확인
docker ps -s
## 모든 중지된 컨테이너 제거
docker container prune
## 24시간 이상 된 컨테이너 제거
docker container prune -f --filter "until=24h"
이러한 기술을 숙달함으로써 개발자는 Docker 컨테이너 리소스를 효율적으로 관리하고 깨끗하고 최적화된 컨테이너 환경을 유지할 수 있습니다.
## 실행 중인 컨테이너 중지
docker stop container_id
## 특정 컨테이너 제거
docker rm container_id
## 실행 중인 컨테이너 강제 제거
docker rm -f container_id
## 모든 중지된 컨테이너 제거
docker container prune
## 확인 메시지 표시 후 제거
docker container prune -f
## 24시간 이상 된 컨테이너 제거
docker container prune -f --filter "until=24h"
## 특정 이름 패턴을 가진 컨테이너 제거
docker rm $(docker ps -a | grep "pattern" | awk '{print $1}')
| 정리 방법 | 명령어 | 설명 |
|---|---|---|
| 중지된 컨테이너 제거 | docker container prune |
모든 중지된 컨테이너를 제거합니다. |
| 특정 컨테이너 제거 | docker rm container_id |
개별 컨테이너를 제거합니다. |
| 강제 제거 | docker rm -f container_id |
실행 중인 컨테이너를 제거합니다. |
| 필터 기반 제거 | docker container prune --filter |
조건에 맞는 컨테이너를 제거합니다. |
## 사용되지 않는 볼륨 제거
docker volume prune
## 중복 이미지 제거
docker image prune
## 포괄적인 시스템 정리
docker system prune -a
-f 플래그를 주의해서 사용합니다.#!/bin/bash
## Docker 컨테이너 정리 스크립트
## 중지된 컨테이너 제거
docker container prune -f
## 사용되지 않는 볼륨 제거
docker volume prune -f
## 중복 이미지 제거
docker image prune -f
## 정리 활동 기록
echo "Docker 정리가 $(date)에 완료되었습니다."
이러한 컨테이너 정리 기술을 숙달함으로써 개발자는 효율적이고 체계적인 Docker 환경을 유지하고, 리소스 낭비를 방지하고 시스템 성능을 향상시킬 수 있습니다.
사용되지 않는 Docker 컨테이너를 찾아 정리하는 기술을 숙달함으로써 시스템 성능을 크게 향상시키고, 스토리지 오버헤드를 줄이며, 더욱 체계적인 Docker 생태계를 유지할 수 있습니다. 정기적인 컨테이너 정리는 최적의 리소스 관리와 원활한 개발 워크플로우를 위해 필수적입니다.