yoncho`s blog
2. DockerFile 본문
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/
*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 |