[Docker] dockerfile이란

제이브로·2024년 2월 13일
0

Docker

목록 보기
12/48
post-thumbnail

1. Dockerfile

Q. dockerfile이란?

container를 빌드하기 위핸 파일이다. dockerfile로 고유의 지시어를 가지고 있는 텍스트 파일이다.

  • dockerfile에는 컨테이너 이미지를 생성할 수 있는 고유의 지시어를 가지고 있음
  • text filetop-down 해석
  • 대소문자 구분x (다만, 가독성을 위해 대소문자로 구분)

2. Options -1

주요 Options

InstructionDescription
RUN컨테이너 빌드를 위해 base image에서 실행할 커맨드
COPY컨테이너 빌드시 호스트 파일을 컨테이너로 복사
ADD컨테이너 빌드시 호스트의 파일(tar, url포함)을 컨테이너로 복사
WORKDIR컨테이너 빌드시 명령어 실행될 작업 디렉터리 설정
ENV환경변수 지정 ( 빌드된 후에는 환경변수가 남아있다 )
USER명령 및 컨테이너 실행시 적용할 유저 설정

3. Options -2

부가 Options

InstructionDescription
#comment
FROM컨테이너의 Base Image(운영환경)
MAINTAINER이미지를 생성한 사람의 이름 및 정보
LABEL컨테이너 이미지에 컨테이너의 정보를 저장
VOLUME파일 또는 디렉토리를 컨테이너의 디렉토리로 마운트
EXPOSE컨테이너 동작 시 외부에서 사용할 포트 지정
CMD컨테이너 동작 시 자동으로 실행할 서비스나 스크립트 지정(보통 argument로 사용)
ENTRYPOINTCMD와 함께 사용하면서 command 지정할 경우 사용(보통 명령어로 사용)

4. Example

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"]

4.1 build

webserver의 태그 v1으로 build

  • 마지막에 .은 현재 디렉토리를 의미하므로 꼭 넣어줘야한다.
$ sudo docker build -t webserver:v1 .

4.2 run

build한 이미지를 실행시켜보자

$ sudo docker run -d -p 80:80 --name web webserver:v1

5. References

  1. docker docs dockerfile
  2. TTABAE youtube
profile
기록하지 않으면 기록되지 않는다.

0개의 댓글