본문 바로가기
AI Journey/클라우드

[Docker] 바인드 마운트(Bind Mount)를 활용한 데이터 동기화 (2)

by 보눔비스타 2026. 1. 5.

지난 포스팅에 이어 계속해서 바인드 마운트 방식을 이용한 도커 볼륨 관리 방법에 대해 알아보자. 

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 데이터나 로그 파일처럼 컨테이너가 죽더라도 사라지면 안 되는 데이터를 관리할 때 필수적인 설정이다.