| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- 소프트웨어설계
- docker
- Laravel
- SQL기초
- OOP
- 인덱스
- Tool Calling
- mcp client
- 데코레이터패턴
- SQL문법
- 객체지향
- PHP객체지향
- 객체복제
- linux 권한
- 매직메서드
- 어댑터패턴
- 라라벨
- PHP
- ai agent
- MCP
- docker network
- SQL
- mcp server
- Agent Loop
- LLM
- MySQL
- 데이터베이스
- ai 에이전트
- 디자인패턴
- dhgrp
- Today
- Total
개발블로그
Docker Volumn과 데이터 영속성 본문
Container 데이터와 영속성 문제
Container 실행 중 생성되거나 변경된 데이터를 기본적으로 Container의 Writeable Layer에 저장됨.
, Container를 삭제하면 해당 Container의 Writeable Layer도 함께 제거 됨
=> DB 처럼 Container가 다시 생성되어도 유지되어야 하는 데이터는 Container 외부에 저장해야 함.
Volumn
개념
Container와 독립적으로 데이터를 저장하기 위한 관리형 Storage
명령어
| 명령어 | 역할 |
| docker volume ls | Volume 목록 확인 |
| docker volume create NAME | Volume 생성 |
| docker volume inspect NAME | Volume 상세 정보 확인 |
| docker volume rm NAME | Volume 삭제 |
실행]
-v Volume_Name:Container_Path
ex)
docker volume create mysql-data
# 실행
docker run -d \
--name mysql \
-v mysql-data:/var/lib/mysql \
mysql
# MySQL이 /var/lib/mysql에 저장하는 데이터를 mysql-data Volumn에 보관.
Bind Mount
개념
Host의 특정 File이나 Directory를 Container 내부 경로에 직접 연결하는 방식
=> Host의 실제 File System을 Container에서 그대로 사용할 수 있게 함
ex)
Host
/home/user/project
│
│ Bind Mount
↓
Container
/usr/share/nginx/html
의의
일반적으로 Container 내부에서 생성하거나 수정한 데이터는 Container의 Writable Layer에 저장됨
하지만 개발 과정에는 Host에서 작성하는 Source Code를 Container에서도 바로 사용하고 싶은 경우가 많다.
=> Local 개발 환경에서 Souce Code를 Container에 연결할 때 자주 사용.
ex) PHP 개발환경에서 Host에서 코드를 수정할 때마다 Image를 Build하는 것은 비효율적,
Bind Mount를 사용하면 Host에서 수정한 파일을 Container가 바로 사용할 수 있음.
사용법
-v Host_Path:Container_Path
# 현재 디렉토리에 연결
-v "$(pwd)":/usr/share/nginx/html \
# mount 사용 (-v보다 길지만 의미가 명확)
--mount type=bind,source=/home/user/project,target=/usr/share/nginx/html \
# type=bind => Bind Mount 사용
# source => Host의 File/Directory
# target => Container에서 연결할 경로
ex)
docker run -d \
--name web \
-p 8080:80 \
-v /home/user/project:/usr/share/nginx/html \
nginx
docker run -d \
--name web \
-p 8080:80 \
-v "$(pwd)":/usr/share/nginx/html \
nginx
docker run -d \
--name web \
--mount type=bind,source=/home/user/project,target=/usr/share/nginx/html \
nginx
Read Only 설정
-v /home/user/project:/app:ro
--mount type=bind,source=/home/user/project,target=/app,readonly
주로 사용하는 경우
개발 환경에서 많이 사용 됨
ex) Souce Code 연결
Host
Project Source
│
↓
Container
Application Runtime
=> HOST의 VS Code등에서 Source Code를 수정하면서,
Container 안에서 PHP, Node.js등의 Runtime을 실행할 수 있음.
'STUDY > Docker' 카테고리의 다른 글
| Dockerfile (0) | 2026.08.26 |
|---|---|
| Docker (0) | 2026.08.26 |
| Docker Container의 Port와 Network 통신 구조 (0) | 2026.08.26 |
| Docker Image (0) | 2026.08.26 |
| Docker Compose (1) | 2026.08.26 |