본문 바로가기
GOORM

GOORM: Kubernetes-34

by hxunz 2021. 12. 25.
  1. Facts 
    : Dockerfile을 사용한 코드에 의한 서버 구축에 대해서 배움

  2. 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

댓글