필터를 사용하여 Docker 데이터 정리
사용하지 않는 모든 데이터를 제거하는 것 외에도, docker system prune을 사용하면 필터를 사용하여 Docker 객체를 선택적으로 제거할 수 있습니다. 이를 통해 정리할 항목에 대해 더 세분화된 제어가 가능합니다.
필터는 다양한 유형의 객체에 적용할 수 있습니다. docker system prune의 경우, 객체의 사용 기간과 같은 기준에 따라 필터링할 수 있습니다.
필터링을 시연하기 위해 몇 가지 Docker 객체를 더 생성해 보겠습니다. 몇 개의 컨테이너를 실행한 다음 중지합니다.
첫 번째 컨테이너를 실행합니다.
docker run -d --name oldcontainer ubuntu sleep 10
이 컨테이너는 10 초 동안 실행된 후 종료됩니다.
두 번째 컨테이너를 실행합니다.
docker run -d --name newcontainer ubuntu sleep 20
이 컨테이너는 20 초 동안 실행된 후 종료됩니다.
두 컨테이너가 모두 종료될 때까지 기다립니다. docker ps -a로 상태를 확인할 수 있습니다.
docker ps -a
"Exited" 상태의 oldcontainer와 newcontainer를 모두 볼 수 있습니다.
이제 필터를 사용하여 특정 시간보다 오래된 객체만 제거해 보겠습니다. 기간과 함께 until 필터를 사용할 수 있습니다. 예를 들어, 5 초 이상 된 객체를 제거하려면 until=5s를 사용할 수 있습니다.
15 초 이상 된 객체를 정리해 보겠습니다. 이렇게 하면 oldcontainer가 제거되지만 newcontainer는 유지됩니다 (충분히 기다려서 oldcontainer는 종료되었지만 newcontainer는 아직 종료되지 않았다고 가정).
docker system prune -f --filter "until=15s"
출력을 관찰합니다. oldcontainer가 제거되었지만 newcontainer는 남아 있어야 합니다.
컨테이너를 확인합니다.
docker ps -a
newcontainer가 나열되어 있지만 oldcontainer는 사라져야 합니다.
이제 다시 정리합니다. 이번에는 30 초 이상 된 객체를 제거합니다. 이렇게 하면 newcontainer도 제거됩니다.
docker system prune -f --filter "until=30s"
출력을 관찰합니다. newcontainer가 제거되었음을 나타내야 합니다.
컨테이너를 다시 확인합니다.
docker ps -a
나열된 컨테이너가 없어야 합니다.
필터는 정리 프로세스를 사용자 정의하는 강력한 방법을 제공합니다. 정리하려는 객체의 유형 (컨테이너, 이미지, 볼륨, 네트워크) 에 따라 다른 필터 키를 사용할 수 있습니다. until 필터는 특정 기간 동안 사용되지 않은 객체를 정리하는 데 일반적으로 사용됩니다.