티스토리 뷰

컨테이너의 데이터 저장 방식

Container의 데이터는 휘발성입니다. 즉, Contianer가 삭제되면 그 안의 데이터도 사라집니다. Database를 컨테이너 내부에 저장하면 컨테이너가 삭제되거나 재시작 될 때 손실됩니다.


데이터 영속성을 위한 방법

휘발성의 데이터들이 사라지지 않게 하기 위해 사용하는 방법에는 2가지가 있습니다.

 

1. Docker Volume 사용하기

Docker Volume을 사용하면 데이터가 Container의 생명 주기와 상관없이 저장됩니다. 따라서 Container를 실행할 때 Volume을 마운트하여 데이터베이스의 데이터를 영속적으로 저장할 수 있습니다.

단, 해당 데이터는 Local 환경에서만 저장되기 때문에 다른 환경과는 공유가 어렵습니다.

docker run -d 
  --name your_mysql_container 
  -e MYSQL_ROOT_PASSWORD=root_password 
  -e MYSQL_DATABASE=your_database_name 
  -v mysql_data:/var/lib/mysql mysql:latest

 

2. Bind Mount 사용하기

Host File System의 특정 디렉토리를 Container에 마운트하여 데이터베이스 데이터를 저장할 수 있습니다.

docker run -d 
  --name your_mysql_container 
  -e MYSQL_ROOT_PASSWORD=root_password 
  -e MYSQL_DATABASE=your_database_name 
  -v /path/to/your/data:/var/lib/mysql mysql:latest

데이터가 사라지는 이유

  • 이미지 생성 시 데이터 복사가 아님: Container를 이미지로 변환할 때 Container 내부의 데이터는 변환된 이미지에 포함되지 않습니다. 데이터는 컨테이너 내부의 파일 시스템에 저장되므로, 해당 데이터를 영속적으로 유지하기 위해 위와 같은 방법을 사용해야 합니다. 
  • 컨테이너 삭제: Container는 일회성이기 때문에, 기존 Container가 삭제되고 새로운 Container가 생성되면 이전 Container의 데이터가 사라지는 것입니다. 따라서 Volume이나 Bind Mount를 사용하여 데이터를 외부에 저장하지 않으면 데이터가 손실됩니다.
공지사항
최근에 올라온 글
Total
Today
Yesterday