도커 이미지로 컨테이너를 생성하면,
이미지는 읽기 전용(Read Only) 상태가 되고
컨테이너에서 발생하는 변경 사항만 별도의 컨테이너 계층(Container Layer) 에 저장됩니다.
예를 들어,
Spring Boot 애플리케이션을 도커 이미지로 실행하면
애플리케이션 자체는 이미지에서 생성되지만,
실행 중에 생성되는 로그 파일은 컨테이너 내부에만 존재하게 됩니다.
문제는 이 컨테이너를 삭제하는 순간 발생합니다.
도커 이미지는 어떤 경우에도 변경되지 않으며,
컨테이너에서 생성된 로그 파일이나 설정 변경 사항은
모두 컨테이너 계층에만 저장됩니다.
따라서 컨테이너를 삭제하면 로그 파일도 함께 사라지게 됩니다.
이러한 문제를 해결하기 위해
컨테이너의 데이터를 영속적으로 보존하는 방법이 필요한데,
가장 대표적인 방식이 바로 도커 볼륨(Docker Volume) 입니다.
도커 볼륨을 사용하는 방법
도커에서 데이터를 영속적으로 관리하는 방법은 크게 세 가지가 있습니다.
- 호스트 디렉토리와 직접 마운트하는 방법
- 볼륨 컨테이너를 활용하는 방법
- 도커가 관리하는 볼륨을 생성하여 사용하는 방법
이 중에서 실무에서 가장 많이 사용되고,
관리 측면에서도 안정적인 방식은
도커가 관리하는 볼륨을 생성하여 사용하는 방법입니다.
도커 볼륨을 활용해 로그 파일 보존하기
Spring Boot 컨테이너에서 생성되는 로그 파일을
컨테이너 삭제와 상관없이 보존하려면
도커 볼륨을 생성하고 로그 디렉토리를 해당 볼륨에 마운트하면 됩니다.
1️⃣ 도커 볼륨 생성 및 확인
먼저 도커 볼륨을 생성합니다.
docker volume create dev-log
생성된 볼륨은 아래 명령어로 확인할 수 있습니다.
docker volume ls
출력 예시는 다음과 같습니다.
DRIVER VOLUME NAME
local dev-log
2️⃣ 도커 볼륨 정보 확인
생성된 볼륨이 실제로 어디에 저장되는지 확인하려면
docker volume inspect 명령어를 사용합니다.
docker volume inspect dev-log
이 명령어를 실행하면
도커가 관리하는 볼륨의 실제 호스트 경로를 확인할 수 있습니다.
로그 디렉토리를 볼륨에 마운트하기
이제 컨테이너 실행 시
Spring Boot 로그 디렉토리를 볼륨 또는 호스트 경로에 마운트합니다.
1️⃣ 호스트 경로와 직접 마운트하는 방식
docker run -d \
-v /c/Users/USER/docker-log-test:/spring-boot/LOGS_ABSOLUTE_PATH_IS_UNDEFINED \
--name logs \
logtest
이 방식은
- 로그를 바로 호스트에서 확인하고 싶을 때
- 개발 환경에서 빠르게 로그를 확인해야 할 때
유용합니다.
2️⃣ 도커 볼륨을 사용하는 방식 (권장)
docker run -d \
-v dev-log:/spring-boot/LOGS_ABSOLUTE_PATH_IS_UNDEFINED \
--name logtest \
logtest
이 방식의 장점은
- 도커가 볼륨을 직접 관리해 주기 때문에 안정적이고
- 컨테이너 삭제 후에도 로그 데이터가 유지된다는 점입니다.
운영 환경에서는 이 방식이 훨씬 많이 사용됩니다.
호스트에서 도커 볼륨 경로 접근하기
도커가 관리하는 볼륨은
기본적으로 아래 경로에 저장됩니다.
/var/lib/docker/volumes/<볼륨이름 또는 ID>/_data
해당 디렉토리로 이동하면
컨테이너 내부에서 생성된 로그 파일을
호스트에서도 직접 확인할 수 있습니다.
정리하며
도커 컨테이너는 언제든지 삭제되고 다시 생성될 수 있는 구조이기 때문에,
로그 파일이나 업로드 파일처럼 반드시 남겨야 하는 데이터는
컨테이너 내부에만 두면 안 됩니다.
도커 볼륨을 활용하면
- 컨테이너 생명주기와 상관없이 데이터 보존이 가능하고
- 운영 환경에서도 안정적으로 로그를 관리할 수 있습니다.
Spring Boot 같은 서버 애플리케이션을 도커로 운영하신다면,
로그 디렉토리만큼은 반드시 볼륨으로 분리해서 관리하시는 것을 권장드립니다.
'IT > Docker' 카테고리의 다른 글
| Docker 컨테이너 갑자기 죽는 이유, OOMKilled부터 exit code까지 한 번에 정리 (0) | 2026.03.24 |
|---|---|
| Docker 로그관리 하는 방법 (0) | 2026.02.21 |
| Docker Compose정리 (1) | 2026.02.09 |
| 실행 중인 컨테이너에서 파일에 접근하는 방법 (0) | 2026.02.06 |
| Docker 이미지 빌드하기 (0) | 2026.02.05 |