yoncho`s blog

2. DockerFile 본문

기술, 나의 공부를 공유합니다./Docker

2. DockerFile

욘초 2023. 6. 22. 23:29

Docker Image를 생성하기 위한 스크립트 파일이다. (Makefile하고 동일하다.)

 

Dockerfile 예시

FROM        ubuntu:14.04

MAINTAINER  yoncho <yoncho@autocrypt.io>

RUN         mkdir -p /app

WORKDIR     /app

ADD         . /app

RUN         \
            apt-get update && \
            apt-get install apache2 && \
            service apache2 start

VOLUME      ["/data", "/var/log/httpd"]

EXPOSE      80

 

*FROM : 생성할 Image 의 기본 Base 지정
베이스 이미지를 작성하는 곳, 어느 이미지에서 시작할 건지 의미한다.
형식 : <이미지 이름> : <태그>

여기서 이미지 이름은 httpd 이며, 태그는 latest이다.

 

 

*MAINTAINER : (단, 1.13.0v 이후 사용 안함) : Makefile 작성자 정보 입력

이미지를 생성한 개발자의 정보

 

*RUN : 이미지 생성을 위한 선행 쉘 명령어
도커 이미지 생성 전 선행 수행 할 쉘 명령어를 의미한다.

RUN이 실행 될 때마다 새로운 레이어가 생성되고 캐시 된다.
그래서 명령어들이 연관되어 있다면 하나의 RUN 명령어에 함께 작성해줘야 한다.

 

*CMD : 컨테이터 생성시 한번만 실행
컨테이너를 생성할 때만 실행
형식 : CMD [“<커맨드>”, “<파라미터1>”, “<파라미터2>”]

 

*ENTRYPOINT : 컨테이너 시작 시 무조건 실행
컨테이너를 시작할 때마다 실행
형식 : ENTRYPOINT [“<커맨드>”, “<파라미터1>”, <파라미터2>”]
컨테이너 시작시 무조건 실행

 

*WORKDIR : 스크립트 명령어가 실행될 디렉토리 지정
작업 디렉터리를 의미한다.
해당 디렉터리가 없으면 새로 생성한다.
작업 디렉터리를 지정한 시점 부터 명령어는 해당 디렉터리를 기준으로 동작한다.

 

*ADD / COPY : 호스트 환경의 파일/폴더를 이미지에 복사-붙여넣기
Host 의 파일/폴더를 이미지로 가져오는 명령어

  • ADD
    COPY 명령어를 포함, 압축 파일, 네트워크 상의 파일도 사용 가능.
    특수한 파일 아니면 COPY를 권장
  • COPY
    호스트 환경의 파일/폴더를 이미지안에 복사 할 수 있음.
    단, Build작업이 이뤄지는 디렉터리 외부는 접근 할 수 없음.

 

*VOLUME :
Container의 특정 폴더 내용을 Host 의 특정 폴더에 저장하도록 설정,
Container 간 폴더를 연결해 데이터 공유 가능하게 설정
형식 : 1) VOLUME [“<디렉터리1>”]

1. VOLUME [“<디렉터리1>”, “<디렉터리2>”]

+ https://www.daleseo.com/docker-volumes-bind-mounts/

 

Docker 컨테이너에 데이터 저장 (볼륨/바인드 마운트)

Engineering Blog by Dale Seo

www.daleseo.com

 

*EXPOSE :
생성할 이미지에서 열어줄 포트를 의미, 호스트와 연결한 포트 번호
컨테이너 생성 시 에는 -p 옵션으로 컨테이너 포트 값을 EXPOSE 값으로 적어야 한다.

 

이 외
*.dockerignore

Docker 이미지 생성 시 이미지 안에 들어가지 않게 조건 설정 (gitignore와 동일함.)

 

*Dockerfile Build
단, 해당 명령어는 작성한 Dockerfile 경로에 입력해야함.

$ docker build -t [생성할 이미지 이름]

'기술, 나의 공부를 공유합니다. > Docker' 카테고리의 다른 글

6. Docker Run (Create + Start)  (0) 2023.06.22
5. Docker Stop  (0) 2023.06.22
4. Docker Start  (0) 2023.06.22
3. Docker Create  (0) 2023.06.22
1. Docker 설치 하기 for Windows  (0) 2023.06.22
Comments