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 |
댓글