1. Dockerfile
- dockerfile은 도커 이미지를 생성하기 위한 스크립트 파일이다.
- 여러 키워드를 사용하여 dockerfile을 작성하여 빌드를 보다 쉽게 수행할 수 있다.
2. Dockerfile Instruction
1. FROM
- From 키워드를 사용하여 base가 되는 image를 지정한다.
- 주로 OS 이미지나 런타임 이미지를 지정한다.
2. RUN
- 이미지를 빌드할 때 사용하는 커맨드를 설정할 때 사용한다.
3. ADD
- 이미지에 호스트의 파일이나 폴더를 추가하기 위해 사용한다.
- 만약 이미지에 복사하려는 디렉토리가 존재하지 않으면 docker가 자동으로 생성된다.
4. COPY
- 호스트 환경의 파일이나 폴더를 이미지 안으로 복사하기 위해 사용한다.
- 'ADD'와 동일하게 동작하지만 가장 확실한 차이점은 URL을 지정하거나, 압축 파일을 자동으로 풀지 않는다.
5. EXPOSE
- 이미지가 통신에 사용할 포트를 지정할 때 사용
6. ENV
- 환경 변수를 지정할 때 사용한다.
- 여기서 설정한 변수는 $name, ${name}의 형태로 사용할 수 있다.
- ${name:-else} 문법도 사용할 수 있다.
- name이 정의가 안되어 있다면 else가 사용된다.
7. CMD
- 도커 컨테이너가 실행될 때 실행할 커맨드를 지정한다.
- 'RUN'과 비슷하지만 CMD는 도커 이미지를 빌드할 때 실행되는 것이 아니라 컨테이너를 시작할 때 실행된다는 것이 다르다.
8. ENTRYPOINT
- 도커 이미지가 실행될 때 사용되는 기본 커맨드를 지정한다.
9. WORKDIR
- RUN, CMD, ENTRYPOINT 등을 사용한 커맨드를 실행하는 디렉토리를 지정
- -w 옵션으로 오버라이딩 할 수 있다.
10. VOLUME
- 퍼시스턴스 데이터를 저장할 경로를 지정할 때 사용한다.
- 호스트의 디렉토리를 도커 컨테이너에 연결할 때 사용한다.
- 주로 휘발성으로 사용되면 안되는 데이터를 저장할 때 사용한다.
11. SHELL
- dockerfile 내에서 실행되는 명령어들을 어떤 쉘을 사용하여 실행할지 지정한다.
- 기본적으로 '/bin/sh-c'가 사용되지만 이를 변경하고 싶을 때 사용한다.
12. LABEL
- 이미지에 메타데이터를 추가한다.
- 메타데이터는 이미지에 대한 설명, 버전, 유지보수 정보 등을 포함할 수 있다.
13. USER
- 컨테이너 내에서 실행될 명령어의 사용자 계정을 지정한다.
- 보안상의 이유로 root 사용자 대신 다른 사용자를 설정할 수 있다.
14. ARG
- 빌드 시점에 전달할 수 있는 변수를 정의한다.
- 이 변수는 dockerfile 내부에서만 사용 가능하며, 런타임 시에는 사용할 수 없다.
15. STOPSIGNAL
- 컨테이너를 종료할 때 사용되는 시스템 콜을 지정한다.
- 기본값은 SIGTERM 이다.
16. HEALTHCHECK
- 컨테이너가 정상적으로 동작하고 있는지 확인하기 위한 건강 상태 체크를 설정한다.
- 주기적으로 실행되어 컨테이너의 상태를 점검한다.
3. 실습
index.html
<html>
<meta charset="utf-8"/>
<body>
<h1>Kakao Tech Bootcamp Cloud 과정</h1>
<p>카카오테크 클라우드 과정 chanyoung입니다. </p>
<body>
</html>
Dockerfile
FROM httpd
COPY index.html /usr/local/apache2/htdocs/
image 생성 후 container run
docker build -t test123 . //도커파일 빌드를 통한 이미지 생성
docker build -t test123:1.1 . //태그 포함
docker container run --name test123_app -p 80:80 test123
http://192.168.64.6:8080 에서 확인
