일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- docker
- c# winform
- vim
- Houdini
- c# 추상 클래스
- C언어 포인터
- 깃
- git
- Flutter
- HTML
- jupyter
- 구조체
- Unity
- 플러터
- Python
- c# 윈폼
- github
- 유니티
- c#
- c언어
- 도커
- gitlab
- C++
- Algorithm
- 포인터
- C# delegate
- Data Structure
- dart 언어
- jupyter lab
- 다트 언어
- Today
- Total
nomad-programmer
[DevOps/Docker] 도커로 Nginx 웹 서버 구동하기 본문
Docker를 사용하여 Nginx 웹 서버를 구축해보자.
NginX는 대량의 요청을 처리하는 대규모 사이트에서 주로 이용하고 있으며, 리버스 프록시나 로드밸런서와 같은 기능도 갖고 있다.
Docker 이미지 다운로드
Docker 컨테이너를 시작하기 위해서는 Docker 컨테이너의 바탕이 되는 'Docker 이미지' 가 필요하다. Docker의 공식 리포지토리인 Docker Hub에는 Nginx의 공식 이미지가 제공되어 있다.
이 공식 이미지에는 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 서버의 탑 화면이 표시되면 웹 서버가 문제없이 작동하고 있다는 것을 확인할 수 있다.
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
컨테이너가 정지하므로 웹 브라우저에서 액세스하면 오류가 발생하는 것을 확인할 수 있다.
다시 컨테이너를 시작시킬 때는 아래의 명령을 실행한다. 브라우저에서 확인하면 웹 서버가 시작된 것을 확인할 수 있다.
$ docker start webserver
이와 같이 Docker를 사용한 웹 서버에서는 주로 Docker 명령을 사용하여 이미지나 컨테이너를 조작한다.