Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

nomad-programmer

[DevOps/Docker] 도커로 Nginx 웹 서버 구동하기 본문

DevOps/Docker

[DevOps/Docker] 도커로 Nginx 웹 서버 구동하기

scii 2020. 11. 19. 01:37

Docker를 사용하여 Nginx 웹 서버를 구축해보자.

NginX는 대량의 요청을 처리하는 대규모 사이트에서 주로 이용하고 있으며, 리버스 프록시나 로드밸런서와 같은 기능도 갖고 있다.

nginx.org/en/

 

nginx

nginx nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev. For a long time, it has been running on many heavily loaded Russian sites including Yandex, Mail.Ru, VK,

nginx.org


Docker 이미지 다운로드

Docker 컨테이너를 시작하기 위해서는 Docker 컨테이너의 바탕이 되는 'Docker 이미지' 가 필요하다. Docker의 공식 리포지토리인 Docker Hub에는 Nginx의 공식 이미지가 제공되어 있다.

hub.docker.com/_/nginx

 

nginx - Docker Hub

Supported tags and respective Dockerfile links 1.17.6, mainline, 1, 1.17, latest 1.17.6-perl, mainline-perl, 1-perl, 1.17-perl, perl 1.17.6-alpine, mainline-alpine, 1-alpine, 1.17-alpine, alpine 1.17.6-alpine-perl, mainline-alpine-perl, 1-alpine-perl, 1.17

hub.docker.com

이 공식 이미지에는 Docker에서 Nginx를 작동시키기 위해 필요한 것이 패키징되어 있으므로 아래의 명령을 실행하여 클라이언트 PC로 다운로드하자.

$ docker pull nginx

// 결과
Using default tag: latest
latest: Pulling from library/nginx
123a50cd185d: Pull complete 
z35b12923109: Pull complete 
zzddf1fa9995: Pull complete 
5tdf293236d3: Pull complete 
55zzf34331fc: Pull complete 
Digest: sha256:ab32151592d2b6d23266ef4087573212827b200b03235fc2d9849890a4f3aa2128c4ae
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

클라이언트 PC로 다운로드되었는지 아닌지를 확인할 때는 아래의 명령을 실행한다.

$ docker image ls

// 결과
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              daee903b4e43        8 hours ago         133MB

명령 실행 결과를 보면 'nginx' 라는 이름의 이미지가 다운로드되었고, 용량이 133MB라는 것을 알 수 있다. 이로써 Docker 이미지 준비가 끝났다.


Nginx 작동

Docker 컨테이너의 바탕이 되는 Docker 이미지를 사용하여 Nginx 서버를 가동시킨다.

docker container run --name webserver -d -p 80:80 nginx

// 결과
1abce3323532asdbsdzxdk323skopwql32ksd23q13kskzxc23134321

위의 명령은 Docker 이미지 'nginx'를 사용하여 'webserver' 라는 이름의 Docker 컨테이너를 가동시키는 예이다. 이때 브라우저에서 HTTP(80번 포트)에 대한 액세스를 허가하기 위해 -p 옵션을 붙여 컨테이너가 보내는 전송을 허가하고 있다.

명령을 실행하면 영문과 숫자로 된 문자열이 표시된다. 이것은 컨테이너 ID라는 것으로, Docker 컨테이너를 고유하게 식별하기 위한 것이다.


Nginx 작동 확인

사용하고 있는 PC에 Docker를 설치한 경우 docker container run 명령을 실행하면 '사용하고 있는 PC가 Nginx 서버로 작동하고 있는' 상태가 된다.

확인을 위해 브라우저에서 다른 URL에 액세스해 보자. localhost는 로컬 루프백 주소라는 것으로, 자기자신 즉, 사용하고 있는 머신을 가리키는 특별한 IP 주소이다. 이 URL은 HTTP 프로포콜을 사용하여 로컬 루프백 주소의 80번 포트에 액세스하고 있다는 것을 의미한다.

http://localhost:80

Nginx 서버의 탑 화면이 표시되면 웹 서버가 문제없이 작동하고 있다는 것을 확인할 수 있다.

Nginx 작동 모습

Docker로 가동시킨 Nginx 서버의 상태를 확인하려면 docker container ps 명령을 실행한다.

$ docker container ps

// 결과
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
1abce3323532        nginx               "/docker-entrypoint.…"   7 minutes ago       Up 7 minutes        0.0.0.0:80->80/tcp   webserver

Nginx의 시작 및 정지

서버 프로세스를 정지시킬 때는 아래의 명령을 실행한다. 

$ docker stop webserver

컨테이너가 정지하므로 웹 브라우저에서 액세스하면 오류가 발생하는 것을 확인할 수 있다.

Nginx 서버가 정지된 모습

다시 컨테이너를 시작시킬 때는 아래의 명령을 실행한다. 브라우저에서 확인하면 웹 서버가 시작된 것을 확인할 수 있다.

$ docker start webserver

이와 같이 Docker를 사용한 웹 서버에서는 주로 Docker 명령을 사용하여 이미지나 컨테이너를 조작한다.

Comments