티스토리 뷰
컨테이너의 데이터 저장 방식
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를 사용하여 데이터를 외부에 저장하지 않으면 데이터가 손실됩니다.
'Server > Docker' 카테고리의 다른 글
[Docker]이미지 압축 파일 저장 및 불러오기 (0) | 2024.09.10 |
---|---|
[Docker]Dockerfile과 Docker-compose.yml의 차이 (0) | 2024.09.10 |
[Docker]SSH 접속 프로그램을 통해 컨테이너 접속하기 (0) | 2024.09.03 |
[Docker]정적 IP Container 설정하기 (0) | 2024.09.02 |
[Docker]도커의 개념 및 핵심 (0) | 2024.09.02 |
공지사항
최근에 올라온 글
- Total
- Today
- Yesterday