[docker] dockerfile에 대해 알아보자

김우경·2021년 4월 5일
0

ci/cd 찍먹

목록 보기
4/13

dockerfile이란?

  • docker image를 만들기 위한 command를 모아둔 text 파일
  • command를 일일이 수동 입력해서

    의 과정을 거치는 것이 아닌, dockerfile + build command로 순차적인 명령을 자동화한다.
  • docker build로 docker file -> container

기본 구문

  • FROM : base image 설정
  • ADD [source][destination] : 파일을 docker file이 존재하는 host dir에서 destination으로
    <-> COPY : copy와 같은 기능을 하지만 ADD의 source에는 destination이 올 수 있다
  • RUN : base image 위의 추가 SW 계층
  • CMD : container 안에서 실행하려는 command
  • ENTRY POINT : CMD와 유사 -> defaule값은 /bin/sh -c이고 -c옵션 뒤에 들어가는 command를 입력하는 명령어이다
  • ENV : container의 환경변수 설정

예제 실습

dockerfile 작성

앞서서 한 apache2 서버 실습을 dockerfile로 작성하면 다음과 같다.

FROM ubuntu
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get -y install apache2
ADD . /var/www/html
ENTRYPOINT apachectl -D FOREGROUND
ENV test Testing ENV
  • FROM ubuntu : base image를 ubuntu로 설정
  • ARG DEBIAN_FRONTEND=noninteractive : 를 설정해주지 않으면 해당 dockerfile 빌드시 국가설정에서 넘어가지 않는다 ㅠ 왜인지는 찾아봐야겠음
  • RUN apt-get update RUN apt-get -y install apache2 : 실행할 명령어들
  • ADD . /var/www/html : '.'인 현재 host dir의 전체 파일을 destination /var/www/html
  • ENTRYPOINT apachectl -D FOREGROUND : CMD service apache2 start와 같은 동작을 한다.
  • ENV test Testing ENV : 테스트용 환경변수 추가

dockerfile 이미지로 빌드하기

docker build . -t [image name]

run 시키기

docker run -it -p [host port]:[container port] -d [이미지 이름]

dockerfile 수정시 실시간 반영하기

  1. 돌던 container 지우기
  2. 다시 열기
    docker run -it -p [host port]:[container port] -v [docker file path]:[mount할 destination] -d [이미지이름]
profile
Hongik CE

0개의 댓글