Docker - 데이터 관리 (Volume, Bind Mount, 파일 공유, 읽기 전용)
Docker에서 컨테이너는 기본적으로 휘발성 환경입니다. 컨테이너가 삭제되면 데이터도 함께 사라집니다.
이를 해결하기 위해 Docker는 다음과 같은 데이터 관리 기능을 제공합니다.
Volume

볼륨을 사용하는 컨테이너 실행
docker container run -it --name myvolumecontainer -v myvolume:/temp ubuntu
컨테이너 내부에서 파일 생성
echo hello, volume >> /temp/hello_volume
ls /temp
ctrl + p + q로 detach 모드로 빠져나오기
동일한 볼륨을 사용하는 새 컨테이너 실행

- 내부에서 동일한 파일 확인
- 컨테이너가 달라도 동일한 볼륨을 사용하면 데이터 공유 가능
볼륨의 실제 저장 위치 확인
결과

컨테이너 삭제 후 볼륨 재사용

→ 이전 컨테이너에서 만든 파일이 그대로 유지됨
Bind Mount (바인드 마운트)
MySQL 컨테이너 실행 (호스트 디렉토리 마운트)

→ c:\docker\mysql_data 폴더에 DB 설정 및 데이터가 저장됨
Wordpress 컨테이너 실행

접속

→ DB에 저장된 사용자 데이터 유지됨 (데이터 볼륨 덕분)
파일 단위 공유
파일 생성
echo hello >> hello.txt
echo hi >> hi.txt
파일을 볼륨으로 마운트

- 컨테이너 내부 확인
- 파일 수정 후 종료
- 호스트에서 확인
- 컨테이너에서 변경한 내용이 호스트 파일에도 반영됨
읽기 전용 볼륨 (Read-Only Mount)
쓰기 가능한 컨테이너 실행

읽기 전용 컨테이너 실행

파일 생성 후 확인

- 쓰기 컨테이너에서 파일 생성
- 읽기 전용 컨테이너에서 확인
- cat /temp/hello.txt # 가능
- echo Hi > /temp/hi.txt # 에러 발생 (Read-only file system)
익명 볼륨 (Anonymous Volume)
이름 없이 마운트 → 자동으로 Docker가 이름 생성


→ Mounts 항목에 자동 생성된 볼륨 이름 확인 가능
| Named Volume | docker volume으로 관리됨 | -v myvolume:/data |
| Bind Mount | 호스트 경로를 직접 지정 | -v C:\data:/data |
| Read-Only | 컨테이너에서 읽기만 가능 | -v myvolume:/data:ro |
| Anonymous | 이름 없는 자동 볼륨 | -v /tmp |
'Docker' 카테고리의 다른 글
| Docker - 네트워크와 Compose로 컨테이너 연결하기 (0) | 2025.06.18 |
|---|---|
| Docker - RUN, CMD, ENTRYPOINT, EXPOSE 명령어 차이 (0) | 2025.06.17 |
| Docker - 애플리케이션과 Apache 서버 이미지 만들기 (0) | 2025.06.17 |
| Docker -i, -t, -d 옵션 (2) | 2025.06.16 |
| Docker - Dockerfile을 이용한 도커이미지 빌드 (0) | 2025.06.16 |
| Docker - 설치 & 컨테이너 실행 (0) | 2025.06.16 |