본문 바로가기
Devops/Docker

[Docker] Docker Volume 사용하기

by 볼링치는 개발자 2021. 6. 10.
반응형

Docker volume이란 디렉토리를 매핑하는 것입니다.

즉, Docker host의 디렉토리와, container의 디렉토리를 연결하는 것입니다.

 

여태까지 포스팅한 글에서 ubuntu 이미지를 기반으로 한 컨테이너를 생성해서 nginx를 설치해서 구동도 해보고, nginx이미지 자체를 내려받아서 nginx 컨테이너를 구동해봤습니다.

 

만약 nginx이미지 자체를 내려받아서 컨테이너를 구동하는 명령어에서 실수로 포트를 매핑하지 않으면 어떻게 될까요?

다음과 같은 명령어를 봅시다.

$ docker run -it nginx

위와 같이 포트를 매핑 못하고 nginx를 만들어버리면 접속이 불가능합니다.

이런 nginx컨테이너를 다시 매핑해주고 싶어도 불가능하고, 다시 만들어줘야 합니다.

그럼 동일한 nginx컨테이너를 포트 매핑과 함께 제대로 만들어 주겠습니다

$ docker run -it -d -p 8080:80 nginx

로컬 호스트의 8080 포트로 들어가면 nginx가 잘 실행되는 것 확인할 수 있습니다.

해당 컨테이너에 접속해서 index.html 파일을 확인해보겠습니다.

$ docker exec -it [컨테이너 ID] bash

여기서 /usr/share/nginx/html로 이동해 index.html 파일을 확인해 보겠습니다.

그럼 현재 실행 중인 nginx컨테이너의 /usr/share/nginx/html에 있는 index.html과, docker나 nginx컨테이너가 아닌 로컬의 /work/html에 있는 index.html과 매핑해 보겠습니다.

 

앞서 말했듯이, 한번 실행한 컨테이너의 설정값은 변경할 수 없으니, 현재 실행 중인 nginx는 삭제시켜주고 다시 만들도록 하겠습니다.

 

현재 로컬의 /work/html 에는 다음과 같은 index.html 파일이 있습니다.

 

 

 

새로운 nginx을 실행시켜줄 때, 로컬 컴퓨터에 index.html 파일이 있는 디렉터리와, nginx 컨테이너의 index.html가 있는 디렉토리를 매핑시켜줍니다.

다음 명령어처럼 입력하면 됩니다.

$ docker run -d -p 8000:80 -v /home/user/work/html:/usr/share/nginx/html nginx

해당 nginx 컨테이너를 실행해주고, 127.0.0.1:8000에 접속해 확인해보면, 로컬에 있는 index.html의 내용을 확인할 수 있습니다.

 

 

접속은 새로 만들어준 nginx 컨테이너로 접속하지만, index.html의 내용은 로컬 컴퓨터에 저장된 index.html내용이 매핑되어 뜨는 것을 확인할 수 있습니다.

 

그럼 로컬에 있는 index.html 내용을 다음과 같이 수정해보겠습니다.

 

 

웹페이지를 새로고침 하면 해당 내용이 보이는 것을 확인할 수 있습니다.

 

반응형

'Devops > Docker' 카테고리의 다른 글

[Docker] Docker 이미지 다루기 (1)  (0) 2021.06.11
[Docker] Apache 사용해보기  (0) 2021.06.10
[Docker] Nginx 사용해보기  (0) 2021.06.10
[Docker] Docker Life Cycle 이해하기  (0) 2021.06.10
[Docker] 기본 명령어  (0) 2021.06.10

댓글