지난 포스팅에 이어 계속해서 바인드 마운트 방식을 이용한 도커 볼륨 관리 방법에 대해 알아보자.
1. 작업 디렉토리 준비 및 컨테이너 실행
호스트의 현재 경로($(pwd))에 있는 index.html 파일을 Nginx가 웹 서비스를 제공하는 경로(/usr/share/nginx/html)에 마운트한다.
# 1. 작업 디렉토리 이동 및 확인
cd Desktop/webs/
pwd
/home/ubuntu/Desktop/webs
ls
index.html
# 2. Bind Mount를 적용하여 새 컨테이너 생성하고 실행
docker run --name web_four -v $(pwd):/usr/share/nginx/html:rw -p 2003:80 -d nginx
2. 컨테이너 상태 확인
docker ps
CONTAINER ID IMAGE PORTS NAMES
4e0df56d7857 nginx:latest 0.0.0.0:2003->80/tcp, :::2003->80/tcp web_four
8ef1f8a173ff nginx:latest 0.0.0.0:2000->80/tcp, ... web_triple
web_four 컨테이너가 2003번 포트에서 정상 작동 중임을 확인할 수 있다.
3. 데이터 영속성(Persistence) 검증
바인드 마운트가 제대로 설정되었다면, 컨테이너 내부에서 파일을 생성했을 때 호스트에도 즉시 반영되어야 하며, 컨테이너가 삭제되더라도 호스트의 데이터는 보존되어야 한다.
3.1 컨테이너 내부에서 파일 생성
docker exec 명령어로 컨테이너 쉘에 접속하여 파일을 생성한다.
# 1. 컨테이너 내부 쉘 접속
docker exec -it web_four bin/bash
# 2. 마운트된 디렉토리로 이동 및 파일 생성
root@4e0df56d7857:/# cd /usr/share/nginx/html/ && ls
index.html
root@4e0df56d7857:/usr/share/nginx/html# echo "I'm in Nginx web" > nginx.txt
# 3. 생성 확인 후 접속 종료
root@4e0df56d7857:/usr/share/nginx/html# ls
index.html nginx.txt
root@4e0df56d7857:/usr/share/nginx/html# exit
3.2 호스트 동기화 확인 및 컨테이너 삭제
컨테이너를 빠져나온 후 호스트의 디렉토리를 확인하고, 컨테이너를 강제로 삭제(rm -f)한 뒤 데이터가 남아있는지 확인한다.
# 1. 호스트에서 파일 생성 확인 (동기화 검증)
ls
index.html nginx.txt
# 2. 컨테이너 강제 삭제
docker rm -f web_four
web_four
# 3. 컨테이너 삭제 후 호스트 데이터 확인 (영속성)
docker ps
# (실행중인 컨테이너 목록에서 web_four 사라짐)
ls
index.html nginx.txt
3.3 데이터 흐름도

- 양방향 동기화: 컨테이너 내부에서 생성한 nginx.txt가 호스트에도 즉시 생성되었다. 이는 개발 환경에서 소스 코드를 수정하면 컨테이너 재빌드 없이 즉시 반영되는 원리와 같다.
- 데이터 보존: 컨테이너(web_four)가 삭제되었음에도 불구하고 nginx.txt는 호스트에 남아있다. 이는 DB 데이터나 로그 파일처럼 컨테이너가 죽더라도 사라지면 안 되는 데이터를 관리할 때 필수적인 설정이다.
'AI Journey > 클라우드' 카테고리의 다른 글
| [Docker] Volume을 활용한 정적 웹사이트 배포와 컨테이너 간 데이터 공유 (0) | 2026.01.06 |
|---|---|
| [Docker] 바인드 마운트(Bind Mount)를 활용한 데이터 동기화 (3) (0) | 2026.01.06 |
| [Kubernetese] 스프링부트(Spring boot) 서버를 파드(Pod)로 띄우기 (0) | 2026.01.03 |
| [Docker] 바인드 마운트(Bind Mount)를 활용한 데이터 동기화 (0) | 2026.01.01 |
| [Docker] 컨테이너의 네트워크 구조: docker0과 veth (0) | 2026.01.01 |