Dockerfile - CentOS7 + HTTPD
1. Dockerfile
1.1. docker inspect로 특정 App 실행하기 위해서 사용
1.2. 코드 형태로 image를 제작할 수 있는 TextFile
1.3. 특정 App를 실행하는 image 제작
1.4. 필수는 아니나 Dockerfile를 제작할 때에는 디렉토리 생성 후 해당 디렉토리에 접근해 사용할 것을 권장
# mkdir /test
# cd /test
# vi Dockerfile
FROM httpd:/latest
MAINTAINER sdkim
# docker build -t test:1.0 .
# docker images
1.5. 베이스 이미지, 컨테이너에서 실행되는 명령, 환경 변수 설정, 컨테이너에서 실행되는 데몬 등의 기능이 정의됨.
2. DockerFile의 기본구성
2.1. 리눅스 기본편집기로 작업 할 수 있는 텍스트형태의 파일
2.2. COMMAND Value // 기본 형식
2.3. COMMAND 는 지시어, 아래는 지시어의 종류 및 설명임.
Command | Description | Command | Description |
FROM | Base Image 지정 | ADD | 파일추가(외부파일불러오기) |
MAINTAINER | 작성자 지정 | COPY | 파일복사 : Local 디렉토리 |
RUN | 명령어 실행 | VOLUME | Volume Mount |
CMD | 데몬실행 | ENTRYPOINT | 데몬실행, CMD보다 우선 |
LABEL | 라벨 지정 | USER | 사용자 설정 |
EXPOSE | Port 내보내기 | WORKDIR | 작업디렉토리 지정 |
ENV | 환경변수 설정 | ONBUILD | Build 후 실행 명령어 |
3. 베이스 이미지 지정(FROM, MAINTAINER)
3.1. FROM : DockerFile에서 베이스 이미지를 지정하는 지시어
3.2. 인자로는 host, docker registry, docker hub에 존재하는 이미지만 지정
FROM IMAGE
FROM IMGAE:TAG
FROM IMAGE@DIGEST
4. MAINTAINER
4.1. 필수지시어 아님,
4.2. 이미지를 공개할 때 작성자가 누구인지 명시
4.3. MAINTAINER skdim
5. 명령어 실행(RUN)
5.1. 이미지를 생성할 때 실행할 코드를 지정
5.2 . 패키지 설치, 파일권한 변경 등
yum install –y httpd
cp /usr/share/zoneinfo/Asia/seoul /etc/localtime
6. 작업 디렉토리(WORKDIR)
6.1. 작업 디렉토리 지정.
6.2. 해당 디렉토리가 없으면 생성됨.
6.3 작업 디렉토리를 지정하면 그 이후 명령어는 해당 디렉토리를 기준으로 동작
7. 복사(COPY)
7.1. 파일이나 폴더를 Image에 복사.
7.2. 상대 경로를 사용할 경우 WORKDIR로 지정한 디렉토리를 기준으로 복사 COPY src1 src2 .... Dest COPY [“src1”, “src2”, ... , “dest”]
8. 환경 변수(ENV)
8.1. Image에서 사용할 환경 변수 지정.
8.2 Mysql등에서 패스워드 설정 후 사용할 때.
9. 컨테이너 시작 시 실행 명령(ENTRYPOINT)
9.1 컨테이너 시작 시 실행 명령어.
9.2. centos의 경우 /bin/bash
9.3. Exec형식과 shell 형식
9.4. Exec ENTRYPOINT [“실행명령어”, ‘”인자1”, “인자2”]
9.5. Shell ENTRYPOINT echo hello