이번 포스팅에서는 Docker 를 사용하여 오픈소스인 Nginx 를 구동하는 예제를 진행해보겠습니다.

 


2021.04.06 - [Linux/Docker] - Docker 를 사용한 이유 (Why Docker?)

2021.04.17 - [Linux/Docker] - Docker 사용해보기 - 1 (Why Docker 2편 + CentOS 7.9 Docker 설치)


 

docs.docker.com

 

Docker 를 사용한 이유에서 위 사진을 사용한 적이 있다.

 

우선 최대한 간단하게 Docker 의 동작방식을 이해해보자.

 

우리는 1편에서 설치한 Docker 를 이용해 오픈소스를 실행하는 것이 목표이다.

 

1. Client 가 사용하고 싶은 Docker 이미지를 다운로드한다. (pull docker image)

2. 다운로드된 이미지를 Docker Container 에서 기동한다. (run docker container)

 

끝이다.

매우 간단하다.

이 과정을 풀어서 진행해보겠다.

 


필요한 이미지 다운로드하기 (Pull Docker Image)

 

Nginx 는 웹서버의 대표주자인 오픈소스입니다.

유사한 웹서버로는 Apache 가 있습니다. (잡설)

 

hub.docker.com

 

Docker Hub

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

이미지를 다운로드하기위해 Docker Hub 를 사용합니다.

Docker Hub 는 Docker 의 공식 레포지토리입니다.

 

필요한 오픈소스를 검색하고 사용하면 됩니다.

 

오른쪽에 보이는 명령어로 nginx 이미지를 다운로드할 수 있습니다.

이미지를 다운로드하고 아래의 Description 을 참고하면서 세팅을 진행하면 됩니다.

 

 

Docker 를 사용하여 Nginx 구동해보기

 

Pull Nginx Image

$ sudo docker pull nginx

 

다운로드된 이미지는 다음 명령으로 확인할 수 있다

$ sudo docker images

 

 

Run Nginx Container Using Image

$ sudo docker run -d nginx

 

옵션이 더 있지만 일단 실행시켜보자.

-d 옵션은 Container 가 Background 에서 동작하도록 실행하는 옵션이다.

 

기존에 운영중인 Nginx 를 Docker 로 띄울 경우에는 Dockerfile 을 작성한 뒤 빌드해서 사용한다.

 

Dockerfile 예시

FROM nginx:1.14

RUN rm /etc/nginx/conf.d/default.conf

COPY nginx/nginx.conf /etc/nginx/nginx.conf
COPY nginx/conf.d/ssl.conf /etc/nginx/conf.d/ssl.conf
COPY nginx/default.d/ssl-redirect.conf /etc/nginx/default.d/ssl-redirect.conf
COPY certs /etc/ssl/certs
COPY ui/dist /local/path/ui/dist

Dockerfile 에서 사용한 기능 분석

 

FROM nginx:1.14 : nginx:1.14 이미지를 사용한다. docker image 에 없으면 레포지토리에서 찾는다.

RUN : 컨테이너 내부에서 실행할 명령을 작성한다.

COPY : 각 설정파일 위치에 해당파일들을 덮어쓴다.

 

----------------- 자주 사용하는 다른 옵션

WORKDIR : 컨테이너 내부에서 명령을 실행할 경로를 설정한다.

User root : 컨테이너를 실행할 계정을 선택한다.

CMD : 컨테이너가 실행될 때 수행하는 명령을 작성한다.

EXPOSE : port 를 할당할 때 사용한다.

 

 

빌드명령어

$ sudo docker build -f nginx_dockerfile -t my_custom_nginx:0.1 .

 

빌드 옵션설명

 

-f : Dockerfile Path (입력하지 않을 시 ./Dockerfile 을 사용함)

-t : Docker Image Tag (빌드 완료된 이미지의 태그)

.  : 현재 디렉토리를 컨텍스트로 사용

 

nginx config 는 작년에 작성한 글에서 확인할 수 있다.

(깔끔하게 정리되지 않아서 추후 다른 콘텐츠에서 다시 정리예정)

2020.03.24 - [Linux/nginx] - CentOS 8 Nginx Reverse Proxy Config

2020.04.02 - [Linux/nginx] - CentOS 8 Nginx Openssl 설정하기 (https)

2020.04.07 - [Linux/nginx] - CentOS 8 Nginx Load Balancing 설정

2020.04.14 - [Linux/nginx] - CentOS 8 Docker 로 Nginx 설치하기

 

다음 포스팅에서는 Python 모듈을 Docker 에서 실행하는 예제를 다뤄볼 예정입니다.

 

 

Reference

docs.docker.com/engine/reference/commandline/run/

docs.docker.com/engine/reference/commandline/build/#examples

hub.docker.com/_/nginx

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기