- Facts
: Dockerfile을 사용한 코드에 의한 서버 구축에 대해서 배움 - Findings
:
Dockerfile의 빌드와 이미지 레이어
- Dockerfile 빌드 : Dockerfile에 정의된 구성을 바탕으로 한 Docker 이미지를 작성할 수 있다.
- docker build : Dockerfile 로부터 이미지 생성
멀티스테이지 빌드를 사용한 애플리케이션 개발
- busybox : 기본적인 Linux 명령들을 하나의 파일로 모아 놓은 것으로 최소한으로 필요한 Linux 쉘 환경을 제공하는 경우 이용
데몬실행(CMD명령)
- CMD명령 : 이미지를 바탕으로 생성된 컨테이너 안에서 명령을 실행하기 위해서 사용
docker container run 명령 실행 시
- CMD 명령 : 컨테이너 시작 시에 실행하고 싶은 명령을 정의해도 docker container run 명령 실행 시에 인수로 새로운 명령을 지정한 경우 이것을 우선 실행
- ENTRYPOINT 명령 : 컨테이너에서 실행 되는데 실행 시에 명령 인수를 지정하고 싶을 때 CMD명령과 조합하여 사용
ONBUILD 명령
- 그 다음 빌드에서 실행할 명령을 이미지 안에 설정하기 위한 명령
- Dockerfile로부터 생성한 이미지를 베이스 이미지로 한 다른 Dockerfile을 빌드할 때 실행하고 싶은 명령을 기술
STOPSIGNAL
-컨테이너를 종료할 때에 송신하는 시그널을 설정
HEALTHCHECK
- 컨테이너 안의 프로세스가 정상적으로 작동하고 있는지를 체크
ENV 명령
- 환경변수를 설정하고 싶을 때
EXPOSE 명령
- 컨테이너의 공개 포트 번호를 지정할 때
ARG 명령
- 변수의 값에 따라 생성되는 이미지의 내용을 바꿀 수 있다.
<수업 필기>
Dockerfile 구문 정리
필수
FROM : 사용할 베이스 이미지 지정
CMD : 컨테이너 생성 시 실행할 프로세스 (docker run 명령어 실행 시 대체 가능)
ENTRYPOINT : 컨테이너 생성 시 실행할 프로세스 (docker run 명령어 실행 시 대체 불가 -> 인자값으로 전달)
-> 둘 중 하나는 필수, 둘 다 사용하면 ENTRYPOINT를 실행하면서 CMD를 인자값으로 전달
동작
RUN(SHELL) : 이미지 생성을 위해 필요한 작업(명령어)
ADD/COPY : 호스트(원격)의 파일을 이미지에 추가
추가설정
ENV (ARG) : 환경변수 (Dockerfile 안에서만 사용하는 변수)
EXPOSE : 노출할 포트
VOLUME : 영구저장할 디렉토리
부가사항
LABEL : 각종 부가적인 정보들을 키:값 형태로 저장
ONBUILD : 이미지 생성 후 해당 이미지로 새로운 이미지를 다시 생성 할 때 사용할 명령어
HEALTHCHECK : 컨테이너 실행 시 상태를 체크해 줄 방법 및 속성값을 정의
WORKDIR : 작업할 디렉토리를 지정 (상대경로 사용 시 적용)
USER : 이미지 생성 시 작업할 사용자 지정 (사전에 RUN으로 사용자 생성 필요)
Dockerfile 작성 시 주의사항
- 파일 이름은 고정 (-f 옵션 사용 시 다른 이름도 사용 가능)
- 작업 효율을 위해 빈 디렉토리에 필요한 차일만 저장하고 build 작업 실행
- 베이스 이미지는 사전에 다운로드 및 준비 후 작업 (없으면 자동으로 다운로드 실행)
- 하나의 파일을 단계적인 작업도 가능
실습
1. 책에 있는 예제
2. go/python 등의 소스코드를 간단하게 작성하고 이미지로 만들기
3. httpd/mysql/nfs/dns 등 서비스를 이미지로 만들기
4. 사용자 생성 / 파일관리 등의 작업으로 이미지 생성
'GOORM' 카테고리의 다른 글
GOORM: Kubernetes-36 (0) | 2021.12.30 |
---|---|
GOORM: Kubernetes-35 (0) | 2021.12.25 |
GOORM: Kubernetes-33 (0) | 2021.12.25 |
GOORM: Kubernetes-32 (0) | 2021.12.25 |
GOORM: Kubernetes-31 (0) | 2021.12.25 |
댓글