[Docker] nginx 이미지 생성하기

2021. 5. 12. 00:08Do! 개발

 

Dockerfile은 Docker 이미지 설정 파일이다. Dockerfile에 설정된 내용대로 이미지가 생성된다.

파일 생성을 위해 새로운 디렉토리를 만들었다.

~$ mkdir example
~$ cd example
~/example$ vi Dockerfile

Dockerfile에 다음과 같이 적었다.

FROM ubuntu:16.04
MAINTAINER PSY <psy@naver.com>

RUN apt-get update
RUN apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx

VOLUME ["/data", "/etc/nginx/site-enabled", "/var/log/nginx"]

WORKDIR /etc/nginx
CMD ["nginx"]

EXPOSE 80
EXPOSE 13000
  • 필자는 Ubuntu 16.04 버전을 사용함으로 FROM에 16.04로 적었다. 
  • MAINTAINER은 이미지를 생성한 사람의 정보를 설정하는 것이다. 보통 이름과 이메일을 입력한다.
  • RUN은 명령을 실행한다.
  • 'install -y nginx'에서 -y 옵션은 이미지 생성 중에는 사용자 입력을 받을 수 없기 때문이다.
  • 나머지 RUN 명령어는  nginx 설정 명령이다.
  • VOLUME은 호스트와 고유할 디렉토리 목록이다.
  • CMD는 컨테이나가 시작되었을 때 실행한 실행 파일 또는 셸 스크립트이다.
  • EXPOSE: 호스트와 연결할 포트 번호이다.
sudo docker build --tag hello:0.1 .
  • docker build <옵션> <Dockerfile 경로> 형식이다. 
  • --tag 옵션으로 이미지 이름과 태그를 설정할 수 있다.

sudo docker build --tag hello:0.1 .

잠시 기다리면 이미지 파일이 생성된다.

sudo docker images

sudo docekr run --name hello-nginx -d -p 13000:80 -v /rot/data:/data hello:0.1
  • -d 옵션은 컨테이너를 백그라운드로 실행한다.
  • -p 13000:80 옵션은 호스트 시스템의 13000번 포트로 유입되는 트래픽은 모두 도커 컨테이너의 80번 포트로 연결되는 것이다.
sudo docker ps

실행된 컨테이너 목록을 출력한다.

http://<호스트 IP>:13000

위 주소로 웹 브라우저에 접속하면 아래와 같은 페이지가 뜨는 것을 확인할 수 있다.

반응형