인프라/Docker

[Docker] 도커파일(Dockerfile)

2juhyunju 2022. 1. 14. 16:47

도커파일(Dockerfile) 은 코드 형태의 텍스트 파일로 , 명령문을 통해 이미지를 제작할 수 있다. 일반적으로 이미지 제작 할 때 Dockerfile을 사용한다. 코드 형태로 되어 있어 버전 관리도 편하고 이미지의 기능을 파악하기도 쉽다.

Dockerfile 명령어

명령어 설명
FROM 베이스 이미지를 지정한다.
RUN 실행할 명령어를 지정한다.
WORKDIR 작업 디렉토리를 지정한다.
ENTRYPOINT 컨테이너를 시작할 때 실행할 명령어를 지정한다.
CMD 컨테이너를 시작할 때 실행할 명령어를 지정한다.
EXPOSE 컨테이너 포트를 지정한다.
COPY/ADD 이미지를 생성할 때 파일을 추가 / 복사 한다.
ENV 컨테이너의 환경변수를 지정한다.
VOLUME 컨테이너의 볼륨을 지정한다.

** RUN,CMD,ENTRYPOINT 는exec 방식과 shell 방식으로 사용가능하다. 
또한 Run을 제외한 ,CMD,ENTRYPOINT는 Dockerfile 구문에 한번만 사용이 가능하다.

exec 방식
["yum","install","-y","httpd"]

shell 방식
yum install -y httpd

Dockerfile 생성 

# mkdir docker-test
# cd docker-test
# vim Dockerfile # 도커 파일 작성
# cat Dockerfile
FROM centos:latest # 이미지 지정
MAINTAINER test # 이미지 제작자 코드의 영향없음
RUN yum -y install httpd # 컨테이너가 실행되면 해당 명령어 실행 shell 방식
COPY index.html /var/www/html/ # index.html을 컨테이너로 복사
CMD ["/usr/sbin/httpd",-"D","FOREGROUND" # 컨테이너가 매번 실행될때 마다 명령 실행 exec 방식

# docker build -t <이미지이름> . # 도커파일 빌드
# docker run -d --name <컨테이너이름> <이미지이름> # 컨테이너 실행
# docker inspect <컨테이너이름> # 도커 인스팩트 명령어로 생성된 컨테이너 정보 확인