← 전체 글로 돌아가기

Docker

Docker prune로 인한 예기치 않은 이슈 디버깅

docker prune 명령어로 사용하지 않는 이미지를 정리하다 보면, 때때로 필요한 리소스까지 삭제되는 경우가 있다. 이 문제를 체계적으로 진단하는 방법을 정리했다.

Docker 프로젝트를 오래 운영하다 보면 이미지와 컨테이너, 볼륨이 쌓인다. 정기적으로 docker prune으로 정리하는데, 가끔 이 명령어가 예상 밖의 리소스까지 제거해서 애플리케이션이 동작하지 않는 경우가 생긴다.

현재 상태를 먼저 기록한다

문제가 발생하면 가장 먼저 현재 실행 중인 컨테이너 상태를 확인한다.

docker ps

어떤 서비스들이 동작 중인지, 포트 매핑은 맞는지 확인한다. 그 다음 각 컨테이너의 로그를 살펴본다.

docker logs --tail=100 service-name

컨테이너 설정을 상세히 본다

docker inspect service-name

이 명령어로 마운트된 볼륨, 환경 변수, 포트 매핑 같은 상세 정보를 확인할 수 있다. 특히 볼륨 마운트가 여전히 유효한지 확인하는 게 중요하다. prune으로 인해 이미지가 삭제되면 컨테이너가 정상적으로 재시작되지 않을 수 있다.

의존성을 추적한다

Docker Compose나 Kubernetes를 사용한다면, YAML 파일에서 이미지 태그가 정확히 명시되어 있는지 확인한다. :latest 태그를 사용하면 프루닝 후 새로운 이미지를 받아야 하는데, 이 과정에서 버전 불일치가 발생할 수 있다.

환경 변수와 설정 마운트도 검증한다

prune은 리소스만 삭제하지만, 컨테이너가 시작될 때 필요한 설정 파일이나 환경 변수도 다시 확인해야 한다. 가끔 설정 파일이 호스트에 없으면 컨테이너 시작 실패로 이어진다.

한 번에 여러 것을 바꾸지 않는다

Docker 환경에서는 작은 변경이 큰 파급효과를 만든다. prune 후 문제가 생기면, 정확히 무엇이 삭제되었는지 파악하고 한 번에 하나씩 복구하는 게 좋다.

Docker 환경을 안정적으로 유지하려면 정기적인 정리도 필요하지만, 프루닝 전에 현재 상태를 항상 백업하는 습관이 중요하다.