Dockerfile

iseon_u·2023년 5월 1일
0

Docker

목록 보기
11/12
post-thumbnail

Dockerfile


이미지를 생성하는 방법

  1. 아무것도 존재하지 않는 이미지(우분투, CentOS)로 컨테이너를 생성
  2. 애플리케이션을 위한 환경을 설치하고 소스코드 등을 복사해 잘 동작하는 것을 확인
  3. 컨테이너를 이미지로 커밋(commit)

Dockerfile

  • 위와 같은 일련의 과정을 손쉽게 기록하고 수행할 수 있는 빌드 명령어를 제공
  • 컨테이너에 설치해야 하는 패키지, 소스코드, 명령어, 셸 스크립트 등을 하나의 파일에 기록
  • 빌드 명령어는 Dockerfile을 읽어 이미지 생성
  • Dockerfile을 작성하여 빌드 및 배포 자동화 가능

Dockerfile 작성

  • 컨테이너에서 수행해야 할 작업을 명시
  • 예시 Dockerfile
$ vi Dockerfile

FROM ubuntu:14.04
MAINTAINER alicek106
LABEL "purpose"="practice"
RUN apt-get update
RUN apt-get install apache2 -y
ADD test.html /var/www/html
WORKDIR /var/www/html
RUN ["/bin/bash", "-c", "echo hello >> test2.html"] 
EXPOSE 80
CMD apachectl -DFOREGROUND
  • Dockfile 수행 목록
    • 이미지에 아파치 웹 서버 설치
    • 로컬에 있는 test.html 파일을 웹 서버로 접근할 수 있는 컨테이너의 디렉터리인 /var/www/html에 복사

Dockerfile 명령어

  • FROM
    • 생성할 이미지의 베이스가 될 이미지를 의미
    • 반드시 한 번 이상 입력
  • MAINTAINER
    • 이미지를 생성한 개발자의 정보

    • Dockerfile을 작성한 사람과 연락할 수 있는 이메일 입력

    • 도커 1.13.0 이후 LABEL로 교체해 표현

      LABEL maintainer "alicekl06 alicekl06@naver.com"

  • LABEL
    • 이미지에 메타데이터 추가
    • 메타데이터는 키:값의 형태로 저장
  • RUN
    • 이미지를 만들기 위해 컨테이너 내부에서 명령어 실행
    • 이미지 빌드시 별도의 입력을 받아야 하는 RUN이 있다면 오류로 간주하고 빌드 종료
  • ADD
    • 파일을 이미지에 추가
    • 추가하는 파일은 Dockerfile이 위치한 디렉터리인 컨텍스트에서 가져온다
    • JSON 배열 형태로 사용 가능
      • [”추가할 파일 이름”, “컨테이너에 추가될 위치”]
      • 추가할 파일명 여러개 지정 가능
      • 배열 마지막 원소가 컨테이너에 추가될 위치
  • WORKDIR
    • 명령어를 실행할 디렉터리
    • 배시 셸에서 cd 명령어를 입력하는 것과 동일
  • EXPOSE
    • Dockerfile의 빌드로 생성된 이미지에서 노출할 포트를 설정
    • 반드시 이 포트가 호스트의 포트와 바인딩되는 것은 아니다
  • CMD
    • 컨테이너가 시작될 때마다 실행할 명령어를 설정
    • Dockerfile에서 한 번만 사용 가능
    • JSON 배열 형태로 입력 가능
      • [”실행 가능한 파일”, “명령줄 인자 1”, “명령줄 인자 2”]
profile
🧑🏻‍💻 Hello World!

0개의 댓글