DevOps/Docker

[Docker] Nginx 웹서버 구동해보기

Henu 2021. 7. 26. 16:02

컨테이너에 대하여

 

[Container 시리즈] 00. Container/ Docker란 뭔가요?

Container / Docker 컨테이너.. 들어봤는데 무엇인지 잘 모르겠다..라고 생각하시는 분들을 위하여 이 글을 연재합니다. 1. Container 보통 IT인이 아니라고 한다면 '컨테이너' 라는 말을 듣는다면 다음의

tech.osci.kr

 

이미지에 대하여

 

도커 컨테이너(Container)와 이미지(Image)란?

도커(Docker)는 Immutable Infrastructure Paradigm 이라는 개념을 기반으로 하기 때문에, 서비스 환경(서비스 인프라) 부분을 이미지화(실행파일화)하여 배포한 뒤 가급적 변경하지 않고 사용한다고 이전

hoon93.tistory.com

 

 

Nginx 이미지를 받아와서 로컬 환경에서 웹서버를 구동해보자


Nginx 이미지 검색해보기

docker search nginx

 

docker의 모든 명령어는 docker로 시작한다.

 

docker search {이미지 명}

search 명령어는 이미지 명에 해당하는 이미지 들을 docker hub라는 사이트에서 검색을 한 후 결과를 보여준다.

 

위와 같이 나온다면 정상!

 

가장 위에 있는 nginx 이미지가 official이고 stars도 가장 많음을 알 수 있다.

해당 이미지의 이름은 nginx이므로 그대로 다운로드해보자

 


Nginx 이미지 다운로드하기

docker pull nginx

// docker pull nginx:latest

// docker pull nginx:1.21.1

pull 명령어를 통해서 방금 검색한 nginx 이미지를 다운로드할 수 있다.

 

 

 

 

nginx Tags | Docker Hub

Get more out of Docker with a free Docker ID Sign up for a Docker ID to gain access to all the free features Docker has to offer, including unlimited public repositories, increased container image requests, automated builds, and much more. Sign Up ✕

hub.docker.com

nginx 같은 공식 이미지docker hub라는 사이트에서 받아오게 된다.

docker pull nginx 실행하면 가장 최신 버전인 latest태그가 달린 nginx:latest를 자동으로 받아온다.

 

위 사이트의 tag탭을 보면 nginx버전이 1.21.1, 1.21 등 다양하게 있음을 알 수 있다.

그래서 docker pull nginx:1.21을 실행하면 nginx:1.21 버전을 받아오게 된다.

1.21은 태그라고 불린다.

현재 nginx 버전은 1.21.1 == latest이다.

 


이미지 목록 출력하기

docker images

// docker image ls

 

docker images를 통해 지금 가지고 있는 이미지들을 볼 수 있다.

django 이미지는 나중에 만들어 볼 예정이다

 


nginx 컨테이너 만들기

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

// docker run -d --name {컨테이너 이름} -p <host port number>:<container port number> {이미지 명}

하나씩 파헤쳐 보자.

 

run : 이미지를 가지고 컨테이너를 만들고 구동하는 명령어.
-d : 컨테이너를 만들면 백그라운드에서 계속 구동하게 하는 옵션. ('데몬'이라고 읽는다.)
--name : 컨테이너의 이름을 지정해주는 옵션. (따로 지정해주지 않으면 무작위로 이름이 생성된다.)
-p : host port number와 conatiner의 port number를 연결해주는 옵션.

 

HOST의 80번 포트에 유입되는 모든 트래픽은 nginx container의 80번 포트로 전달되게 한다.

 -> localhost:80에 접속한다면 해당 트래픽이 docker의 nginx container의 80번 포트로 전달된다. 

      nginx의 기본 포트는 80번으로 지정되어 있기 때문에 localhost:80으로 접속하면 nginx 고유 페이지를 볼 수 있다.

      물론 nginx.conf파일을 수정해서 기본 포트를 변경할 수 있다.

 

이미지 명 : 현재 가지고 있는 이미지 중에서 선택. 태그를 붙이지 않는다면 latest가 기본 값. (기본 값으로 사용하려면 당연히 latest 이미지를 가지고 있어야 함)

 

 

위 명령어를 실행하면 아래와 같이 알 수 없는 숫자+알파벳이 뜬다.

컨테이너 만들기에 성공한 것이다!

 


실행 중인 컨테이너 확인하기

docker ps

name은 webserver이고 image는 nginx:1.21.1을 사용했음을 알 수 있다.

 

ps : process status

 


모든 컨테이너 확인하기

docker ps -a

 

-a : all의 약자이다. 생성된 모든 컨테이너를 보여준다.

 

 


결과 확인

인터넷 주소창에 localhost를 쳐보자

(80번 포트가 웹서버 기본 포트이므로 따로 localhost:80이라고 쳐주지 않아도 된다.)

 

위와 같은 화면이 나온다면 성공이다!