본문 바로가기

리눅스

[draft] Docker ps filter 옵션을 사용하는 방법

Docker ps --filter 옵션을 사용하는 방법

Docker에서는 docker ps 명령의 --filter 옵션을 사용하여 특정 조건에 맞는 컨테이너만 조회할 수 있습니다.

기본 형태

docker ps --filter "조건"

1. 컨테이너 이름 필터

특정 이름을 포함하는 컨테이너를 조회합니다.

docker ps -q --filter name=nginx
6eaa629f3cde

2. 이름 기준 컨테이너 삭제

docker ps --filter 결과를 이용해 특정 컨테이너를 삭제할 수 있습니다.

docker rm -f `docker ps -aq --filter name=nginx`

3. 종료된 컨테이너 삭제

상태가 exited 인 컨테이너를 삭제할 수 있습니다.

docker rm -f `docker ps -aq --filter status=exited`
83ca65ffc2b9

필터 옵션

  • name : 컨테이너 이름
  • status : 상태 (running, exited 등)
  • ancestor : 특정 이미지 기반
  • network : 네트워크
  • volume : 특정 볼륨 사용
  • label : 라벨 기준

docker ps filter

이미지 기준 조회

docker ps --filter ancestor=nginx

실행 중 컨테이너 조회

docker ps --filter status=running

Docker 시스템 정리 (docker system prune)

Docker는 컨테이너, 이미지, 네트워크, 볼륨이 계속 누적되기 때문에 주기적인 정리 작업(prune) 이 필요합니다.

4. docker system prune 명령

사용하지 않는 Docker 리소스를 삭제합니다.

docker system prune

기본적으로 다음 항목이 삭제됩니다.

  • 중지된 컨테이너
  • 사용되지 않는 네트워크
  • dangling 이미지
  • build cache

5. 명령어 옵션

docker system prune --help
Usage:	docker system prune [OPTIONS]

Remove unused data

Options:
  -a, --all             Remove all unused images not just dangling ones
      --filter filter   Provide filter values (e.g. 'label=<key>=<value>')
  -f, --force           Do not prompt for confirmation
      --volumes         Prune volumes

6. 모든 사용하지 않는 리소스 삭제

다음 명령은 사용하지 않는 컨테이너, 네트워크, 이미지, 볼륨을 모두 삭제합니다.

docker system prune --all --volumes
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all volumes not used by at least one container
  - all images without at least one container associated to them
  - all build cache

확인 메시지

Are you sure you want to continue? [y/N] y
# 네트워크 삭제
Deleted Networks:
nginx_default
...

# 컨테이너 삭제
Deleted Containers:
61beb0cf0bee0ff47347359959901df102c8ea59a3970cdff028459c513e6cb5
...

# 볼륨 삭제
Deleted Volumes:
3605cdb129de6d589f7b3efe2f7e90504a35215b8d0e9a1c2651b4e5c7990572
...

# 이미지 삭제
Deleted Images:
untagged: nginx:1.15
untagged: nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
...
deleted: sha256:174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02

# 총 정리된 용량
Total reclaimed space: 11.1GB

7.  정리 후 상태 확인

이미지 확인

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

볼륨 확인

$ docker volume ls
DRIVER              VOLUME NAME

네트워크 확인

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
d36fdc5e5cfb        bridge              bridge              local
8d26fac8b1d1        host                host                local
64e6a5935b61        none                null                local

8. 확인 없이 자동 정리

자동화 스크립트에서 사용할 경우 다음 옵션을 사용합니다.

docker system prune --all --force --volumes

9. 실무에서 자주 사용하는 정리 명령

종료된 컨테이너 삭제

docker container prune

사용하지 않는 이미지 삭제

docker image prune -a

사용하지 않는 볼륨 삭제

docker volume prune

전체 정리

docker system prune -a --volumes

 

참고사이트

- https://docs.docker.com/engine/reference/commandline/ps/