Docker 정리 명령의 삭제 범위 확인하기
Docker 리소스를 정리할 때 참고하던 명령입니다. 여기서 ‘사용하지 않음’은 삭제해도 되는 데이터라는 뜻이 아닙니다. 컨테이너가 참조하지 않는 볼륨에도 나중에 다시 사용할 DB 데이터가 남아 있을 수 있습니다.
오래된 메모의 명령을 현재 Docker에 적용하기 전에 삭제 범위를 확인할 수 있도록 나눠 정리했습니다.
사용량과 컨테이너 확인
먼저 어떤 리소스가 공간을 차지하는지 확인합니다.
docker system df -v
docker container ls -a
docker volume ls실행 중인 컨테이너만 보면 중지된 컨테이너와 연결된 리소스를 놓칠 수 있습니다. 정리하려는 Docker context가 맞는지도 docker context show로 확인할 수 있습니다.
이미지 정리
docker image prune기본 명령은 dangling 이미지를 정리합니다. -a를 붙이면 컨테이너가 참조하지 않는 이미지까지 대상이 넓어집니다.
docker image prune -a중지된 컨테이너가 참조하는 이미지도 사용 중인 이미지에 해당합니다. 반대로 컨테이너를 아직 만들지 않은 이미지라면, 나중에 사용할 계획이어도 정리 대상이 될 수 있습니다.
볼륨 확인과 선택 삭제
원래 메모에는 dangling 볼륨 목록을 바로 삭제 명령에 넘기는 파이프라인이 있었습니다. 목록에 나온다는 사실만으로 데이터를 버려도 되는 것은 아니므로, 먼저 이름과 연결 상태를 확인하는 편이 좋습니다.
docker volume ls -f dangling=true
docker volume inspect example-volume
docker container ls -a --filter volume=example-volume볼륨 이름과 보관할 데이터를 확인한 뒤 특정 볼륨을 삭제할 수 있습니다.
docker volume rm example-volume현재 docker volume prune은 컨테이너가 참조하지 않는 익명 볼륨을 정리합니다. --all은 사용하지 않는 이름 있는 볼륨까지 포함합니다. 오래된 Docker와 동작 범위가 다를 수 있으므로 설치된 버전의 도움말을 확인해야 합니다.
여러 리소스의 일괄 정리
docker system prune중지된 컨테이너와 사용하지 않는 네트워크, dangling 이미지, 사용하지 않는 빌드 캐시 등을 정리합니다. 기본 명령에는 볼륨이 포함되지 않습니다.
--volumes를 추가하면 사용하지 않는 익명 볼륨도 포함됩니다. -a는 이미지 정리 범위를 넓히고, -f는 확인 질문을 생략합니다. 편의 옵션으로 보기보다 각각 어떤 대상을 더 지우는지 확인해야 합니다.
자동 정리가 필요하다면 보관할 이미지와 데이터의 기준부터 정해야 합니다. 개발 장비에서 버려도 되는 리소스와 빌드 서버에서 다음 실행에 사용할 리소스는 다를 수 있습니다.