본문 바로가기
Development Tools/Docker

Docker를 통해 Nginx 띄우기

by jjerryhan 2017. 12. 30.
반응형

Docker를 통해 Nginx 띄우기

고작 화면에 hello world 따위 문자열 띄우려고 docker 를 쓰지는 않죠.

우선 가장 많이 사용되는 nginx 컨테이너를 구동해 보도록 하겠습니다. 



nginx 이미지 다운로드 및 구동

docker 에서의 모든 작업의 시작은 구동 대상이 되는 이미지의 확보 입니다. 
수 많은 이미지가 docker hub 에 등록되어 있고 자신만의 이미지를 만드는 것도 물론 가능합니다. 
devops 를 하려면 container 와 image 에 대한 관리는 필수 이구요.  

아무튼 적당한 nginx image 를 docker hub 에서 찾아볼까요?


Docker Hub

hub.docker.com 에서 찾으면 됩니다.

nginx 를 검색하니 official 이 붙은 이미지가 있고 이름도 nginx 이군요. 요 이미지를 사용해 보도록 하겠습니다.


nginx 이미지 pull 하기

원하는 이미지를 확인했으니 로컬 피씨로 당겨봅니다.
image 명령어를 이용하면 되겠죠?
docker image

pull 이랑 명령이 눈에 들어오는 군요. 


nginx 이미지를 당겨 봅시다. 

docker image pull nginx


nginx 가 다운로드 되었고, 고유의 ID 를 갖게 되었습니다.


호스트 포트를 컨테이너 포트에 맵핑 하기 

이제 컨테이너를 띄우면 되는데요. 무조건 컨테이너를 띄우기만 하면 안됩니다.  컨테이너는 구동이 되지만 컨테이너에 외부에서 접속을 할 수 없기 때문이죠. 
굳이 이해하지 않아도 되구요. 컨테이너를 구동할 때 호스트의 특정 포트에 컨테이너의 포트를 연결해야 되는 것만 기억하면 됩니다.
컨테이너 구동은 run 명령어로 실행.
docker run -p 8080:80 nginx
// docker 로 nginx 이미지를 이용해 컨테이너를 run 하되, 호스트의 8080 포트를 컨테이너의 80 포트에 붙여라 라는 의미입니다.

이렇게 구동된 서버에 접속해 보려면 어떻게 해야 할까요? 

로컬호스트의 8080 포트로 브라우저를 접속해 보면 됩니다. 

호스트의 8080 으로 요청이 가면 docker 가 해당 요청을 컨테이너의 80 으로 보내고 응답을 받아서 다시 호스트의 8080 으로 되돌려 줍니다. 

실행할 때 8080 이 아니 어떤 포트를 지정해 주어도 됩니다.  

하지만 nginx 이미지에 사전에 정의된 서비스 포트가 80 이기 때문에 80 은 임의로 바꿀 수가 없습니다. 80 번호를 바꾸려면 환경변수를 이용하거나 이미지 자체에 설정을 변경해 줘야 하구요. 다른 포스트에서 다루겠습니다. 


아무튼 컨테이너가 구동되었으니 브라우저로 8080 에 접속해 보면.

잘 구동되었고 접속도 잘 됩니다.

사용자 접속이 있을 때마다 로그 메세지도 호스트에 잘 전달하구요..


컨테이너 와 이미지 지우기는 이전 포스트를 참조해 주세요.


이번 포스트는 여기까지 입니다.