Q.
dockerfile
이란?
container
를 빌드하기 위핸 파일이다.dockerfile
로 고유의 지시어를 가지고 있는 텍스트 파일이다.
dockerfile
에는 컨테이너 이미지를 생성할 수 있는 고유의 지시어를 가지고 있음text file
로 top-down
해석주요
Options
Instruction | Description |
---|---|
RUN | 컨테이너 빌드를 위해 base image에서 실행할 커맨드 |
COPY | 컨테이너 빌드시 호스트 파일을 컨테이너로 복사 |
ADD | 컨테이너 빌드시 호스트의 파일(tar, url포함)을 컨테이너로 복사 |
WORKDIR | 컨테이너 빌드시 명령어 실행될 작업 디렉터리 설정 |
ENV | 환경변수 지정 ( 빌드된 후에는 환경변수가 남아있다 ) |
USER | 명령 및 컨테이너 실행시 적용할 유저 설정 |
부가
Options
Instruction | Description |
---|---|
# | comment |
FROM | 컨테이너의 Base Image(운영환경) |
MAINTAINER | 이미지를 생성한 사람의 이름 및 정보 |
LABEL | 컨테이너 이미지에 컨테이너의 정보를 저장 |
VOLUME | 파일 또는 디렉토리를 컨테이너의 디렉토리로 마운트 |
EXPOSE | 컨테이너 동작 시 외부에서 사용할 포트 지정 |
CMD | 컨테이너 동작 시 자동으로 실행할 서비스나 스크립트 지정(보통 argument로 사용) |
ENTRYPOINT | CMD와 함께 사용하면서 command 지정할 경우 사용(보통 명령어로 사용) |
apache
웹서버를 예시로 만들어보자
vim dockerfile
으로 dockerfile
생성FROM ubuntu:18.04
RUN apt-get update \\
&& apt-get install -y apache2
RUN echo "TEST WEB" > /var/www/html/index.html
EXPOSE 80
CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"]
webserver
의 태그v1
으로build
.
은 현재 디렉토리를 의미하므로 꼭 넣어줘야한다.$ sudo docker build -t webserver:v1 .
build
한 이미지를 실행시켜보자
$ sudo docker run -d -p 80:80 --name web webserver:v1