본문 바로가기

개발/Docker

[Docker] Volume Mount 실습

실습 목표: 

로컬 머신(Host)에 있는 내가 만든 HTML을 Docker 안의 Nginx(컨테이너)가 서비스하도록 만들기

 

 

Step 1. 실습용 디렉터리 생성

mkdir nginx-lab && cd nginx-lab

 

mkdir html && cd html

 

Step 2. HTML 작성

html 폴더에 index.html 파일을 생성한다.

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Nginx Lab</title>
</head>
<body>
  <h1>Hello Nginx!</h1>
  <p>이 페이지는 로컬 머신(Host)에 저장되어 있습니다.</p>
</body>
</html>

 

이 부분에서 중요한 것은 해당 파일이 로컬 머신(Host)에 저장되어 있다는 점이다.

 

Step 3. Volume Mount를 이용해 Nginx(컨테이너) 실행

docker run -d --name my-nginx -p 8080:80 -v $(pwd):/usr/share/nginx/html nginx

-v 옵션을 통해 호스트의 현재 경로 $(pwd) 와 컨테이너 내부 경로 /usr/share/nginx/html를 연결한다.

 

여기서 중요한 점은 해당 html 폴더를 컨테이너 내에 "복사"하는 것이 아니라 "연결"한다는 것이다.

즉, html 폴더와 내부 파일을 로컬 머신(Host)과 Container가 함께 바라본다는 것이다.

 

Step 4. 브라우저에서 확인

http://localhost:8080

브라우저에서 위 주소로 접속한다.

 

HTML로 작성한 문자열 Hello Nginx!가 브라우저에 출력되는 것을 볼 수 있다.

 

 

Step 5. Host에서 수정한 HTML 파일 내용이 실시간으로 컨테이너에 반영되는지 확인

이제 로컬 머신의 html 폴더 내부 index.html 파일의 내용을

<h1>Hello Nginx!</h1>

에서

<h1>Hello Docker!</h1>

로 수정한 다음 저장한다.

 

이제 브라우저에서 

http://localhost:8080

로 접속하여 확인해보면

 

Docker를 재시작하지 않고도 수정한 내용이 실시간으로 반영되는 것을 확인할 수 있다.

 

 

Step 6. 컨테이너 내부에서도 확인

docker exec -it my-nginx /bin/bash

컨테이너로 접속

 

cd /usr/share/nginx/html

이동

cat index.html

확인

로컬 머신(Host)에서 수정한 내용이 그대로 보이는 것을 확인할 수 있다.

 

왜냐하면, Volume Mount를 통해 컨테이너의 /usr/share/nginx/html 경로가 로컬 머신의 html 디렉터리를 바라보도록 연결되어있기 때문이다.


즉, Nginx는 컨테이너 안의 파일을 읽는 것처럼 보이지만, 실제로는 로컬 머신(host)의 파일을 읽고 있는 것이다.

'개발 > Docker' 카테고리의 다른 글

[Docker] Dockerfile  (0) 2026.08.10
[Nginx] alias 설정  (0) 2026.08.10
[Nginx] location 설정  (0) 2026.08.10
[Docker] Nginx 설정 파일인 nginx.conf 이해하기  (0) 2026.08.06
[Nginx] Docker로 Nginx 실행하기  (0) 2026.08.05