← 전체 글로 돌아가기

Docker

Docker 배포 후 데이터가 사라지는 원인 찾기

컨테이너를 배포한 후 데이터가 없어지는 문제는 보통 볼륨 마운트 설정이나 환경 변수 때문이다.

Docker로 서비스를 배포했는데, 로컬에서는 있던 데이터가 컨테이너 실행 후에는 없어지는 경험을 하는 경우가 많다. 단순히 '디스크가 가득 찼나?'부터 생각하기 쉽지만, 실제 원인을 찾으려면 컨테이너의 상태와 로그를 체계적으로 확인해야 한다.

실행 중인 컨테이너 상태 확인

우선 컨테이너가 정상적으로 실행 중인지 확인하자. 멈춰 있거나 재시작되고 있는 것은 아닌지 봐야 한다.

docker ps

여기서 STATUS 컬럼을 보면, Up 상태인지 Exited 상태인지 알 수 있다. 만약 컨테이너가 자주 재시작되고 있다면, 실행 로그에 에러가 있을 것이다.

컨테이너 로그 확인

컨테이너가 어떤 이유로 멈췄거나 에러가 났는지 확인하자.

docker logs --tail=100 service-name

최근 100줄의 로그를 보면 어디서 뭐가 잘못됐는지 보인다. 데이터가 없다는 에러가 나오는지, 아니면 권한 문제인지 확인하자.

컨테이너 내부 설정 확인

볼륨 마운트가 제대로 설정되었는지, 그리고 환경 변수가 제대로 전달되었는지 확인해야 한다.

docker inspect service-name

이 명령어 결과에서 Mounts 섹션을 보면 현재 마운트된 볼륨이 무엇인지 알 수 있다. 로컬 경로와 컨테이너 내부 경로가 맞는지 확인하자. 또한 Env 섹션에서 환경 변수가 제대로 설정되었는지도 봐야 한다.

로컬과 운영 환경 비교

로컬 개발 환경에서는 문제가 없었는데 운영에서만 나타나는 경우가 많다. 이는 보통:

  • Dockerfile의 VOLUME 선언과 실제 마운트 설정이 다를 때
  • 로컬에서는 전체 경로를 마운트했는데 운영에서는 부분 경로만 마운트할 때
  • 권한 문제로 컨테이너가 데이터 디렉토리에 접근하지 못할 때

로컬에서 docker-compose up으로 실행했을 때의 설정과 운영 환경에서의 설정을 나란히 놓고 비교해보자.

검증: 수정 후 확인

마운트 경로나 환경 변수를 수정한 후, 다시 위의 명령어들을 실행해서:

  1. 컨테이너가 정상 상태인지 (docker ps)
  2. 로그에 에러가 없는지 (docker logs)
  3. 마운트 설정이 의도대로 되었는지 (docker inspect)

이 세 가지를 확인하면 대부분의 경우 문제를 해결할 수 있다.