Dockerfile(도커 파일)?
-> 도커 이미지를 만들기 위해 실행되는 명령들을 모아 둔 텍스트 파일
앞에서 공부했던 도커 컨테이너 작업 과정은
image --run--> container --(exec)--> 컨테이너 내부로 들어옴 --(작업)--> exit --> commit --> 컨테이너 이미지 생성
의 순으로 이루어졌다.
이 명령들을 dockerfile에 기재하여 저장함으로써 컨테이너 이미지를 생성하는 일련의 과정을 자동화할 수 있다.
==> 명령어들을 하나하나 입력해가며 컨테이너를 수동으로 생성하는 방법 대신 dockerfile을 작성하고 build 커맨드만 사용하여 컨테이너를 생성함으로써 훨씬 간편하게 컨테이너 사용이 가능해진다.
@@다시 한 번 정리하면 Dockerfile은 docker image를 만들기 위한 모든 순차적인 명령들을 포함한 text파일 이라고 할 수 있겠다.
docker build 커맨드를 입력하면 dockerfile로부터 컨테이너 이미지를 생성한다.
Dockerfile의 기본 구문
dockerfile에 기재하는 명령어에는
- FROM
- ADD
- RUN
- CMD
- ENTRYPOINT
- ENV
가 있다.
FROM
: base image를 지정한다. 이는 곧 OS 이미지를 불러오는 것이기 때문에 모든 dockerfile은 FROM으로 시작한다.
ADD <source> <destination in container>
: 생성할 컨테이너에 파일을 복사해서 넣어준다. COPY와 비슷한데, ADD는 <source> 부분에 url도 사용할 수 있다.
RUN
: base image 위에 추가 SW계층을 설치해준다.
CMD
: 컨테이너 안에서 실행하려는 커맨드
ENTRYPOINT
: CMD와 유사
-> 내가 만든 이미지를 다른 사람이 run 하는 경우, run이 시작될 때 다른 커맨드를 입력하여 dockerfile의 CMD에 지정된 명령을 생략할 수 없게 하고 싶을 경우 CMD 대신 ENTRYPOINT를 사용한다.
ENV
: 컨테이너에서 사용할 환경변수 지정
Dockerfile 예시
FROM ubuntu
-> 'ubuntu'로 base image 지정
ENV DEBIAN_FRONTEND noninteractive
ENV DEBCONF_NONINTERACTIVE_SEEN true
-> 설치 시 질문 대답 모두 생략 (deafault값 - yes 로 대답)
RUN apt-get update
RUN apt-get install -y apache2
-> 패키지들 업데이트 해준 뒤 apache2 설치
ADD . /var/www/html
-> /var/www/html의 내용들을 현재 디렉토리( . )에 복사
ENTRYPOINT apache2ctl -D FOREGROUND
-> 아파치2 서버를 실행시키고 사용자의 조작을 기다림 (이미지를 run 하면서 만들어진 커맨드 프로세스를 실행할 수 있도록 준비시킴)
'Docker Container' 카테고리의 다른 글
[Docker] Docker swarm (0) | 2022.04.17 |
---|---|
[Docker] Docker-compose (0) | 2022.04.13 |
[Docker] Docker Volume (도커 볼륨)? (0) | 2022.04.13 |
[Docker] 도커(Docker)? (0) | 2022.04.01 |
[Conatiner] 컨테이너(Container)? (0) | 2022.04.01 |