YUMSERV
article thumbnail
Published 2019. 6. 8. 12:21
Dockerfile 작성방법 DOCKER
반응형

Dockerfile이란 docker에서 이미지를 기반으로 새로운 이미지를 스크립트 형식을 통해서 새로운 이미지를 생성할 수 있는 이미지 설정파일을 말합니다.

기존 이미지로 생성하여 추가로 설정해야 될 부분이 있을 때, 사전 준비작업으로 많이 사용됩니다.


1. Dockerfile 디렉토리 생성

docker 공식 문서에 의하면, Dockerfile을 빈 디렉토리에 저장하는 것이 좋다고 나와있으며, /root 경로에 디렉토리를 만들지 말라고 써있습니다.

이유는 dockerfile을 만든 뒤 build 과정을 거칠때, 해당 디렉토리를 context로 인식하기 때문입니다.  

그러므로 디렉토리를 생성하여 분리시키는 작업이 필요하며, 필요한 파일을 추가하는 것이 좋습니다. 


# mkdir /usr/local/src/Dockerfile



2. Dockerfile 작성


ubuntu 16.04 기반에서 apache와 php를 연동하는 dockerfile을 작성하였습니다.


# vi /usr/local/src/Dockerfile/dockerfile

FROM ubuntu:16.04


MAINTAINER lena04

ENV DEBIAN_FRONTEND noninteractive


# 업데이트 및 apache, php 설치

RUN apt-get update && apt-get -y install apache2 php libapache2-mod-php


# PHP 연동

RUN sed -i 's/#ServerName www.example.com:80/ServerName localhost/g' /etc/apache2/sites-available/000-default.conf


# 공유할 볼륨 지정

VOLUME ["/var/www/html" "/etc/httpd"]


# 포워딩 할 포트 지정

EXPOSE 80 443


# Context 에서 index.html과 phpinfo 페이지 가져오기

ADD index.html /var/www/html

ADD phpinfo.php /var/www/html


# docker run 시 아파치 시작

ENTRYPOINT apachectl -D FOREGROUND



[설명]

1) FROM

FROM <이미지>:<태그>


기초가 되는 이미지를 지정합니다. 반드시 설정해야 하며, 맨 처음에 와야합니다.


2) MAINTAINER

MAINTAINER <작성자 정보>


이미지를 생성한 사람의 정보를 설정합니다. 작성자 정보의 경우 형식은 자유입니다. 해당 부분은 생략할 수 있습니다.


3) RUN

RUN <명령>


FROM에서 생성한 이미지 위에서 명령을 실행합니다. 주로 패키지 설치나 기본 설정에 사용됩니다.


4) VOLUME

VOLUME <컨테이너 디렉토리>

디렉토리의 내용을 컨테이너에 저장하지 않고 호스트에 저장하도록 설정합니다.

볼륨을 호스트의 특정디렉토리와 연결을 하려면,

이미지 생성 후, docker run 명령어를 사용시에 -v 옵션과 함께 <호스트 볼륨>:<컨테이너 볼륨> 형식으로 사용하면됩니다.



5) EXPOSE

EXPOSE <포트번호>

컨테이너와 호스트간에 연결할 포트를 설정합니다. 



6) ADD / COPY

ADD <복사할 파일경로> <이미지에서 파일이 위치할 경로>

COPY <복사할 파일경로> <이미지에서 파일이 위치할 경로>


ADD와 COPY는 파일을 추가하는 명령어입니다.

차이점은 COPY의 경우 로컬에서만 파일을 가져올 수 있으며, 파일 자체를 가져옵니다.

ADD의 경우, url를 통해 외부 파일을 가져올 수 있으며, tar로 압축된 파일을 풀어서 가져옵니다.



7) ENTRYPOINT

ENTRYPOINT <명령>

컨테이너가 시작됬을 때, 명령을 실행하는 부분입니다.

dockerfile에서 한번만  사용할 수 있습니다.


8) ENV

ENV <환경변수> <값>

환경변수를 설정합니다.



3. dockerfile 이미지 생성


# docker build -t 이미지명:라벨명


apache-php:test 라는 라벨로 이미지를 만들어주었습니다.





4. docker 컨테이너 실행


# docker run -it -d --name 컨테이너명 -p 80:80 -p 443:443 이미지명:라벨명




# docker run -it -d --name 컨테이너명 -p 80:80 -p 443:443 -v 호스트볼륨:컨테이너볼륨 이미지명:라벨명



반응형

'DOCKER' 카테고리의 다른 글

Docker registry 구성  (0) 2019.06.10
Docker Hub 사용하기  (0) 2019.06.09
Docker 명령어  (0) 2019.06.05
Docker 설치  (0) 2019.06.05
Docker란  (0) 2019.06.05
profile

YUMSERV

@lena04301

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!