ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker) Dockerfile의 각 명령어 의미
    Programing Study/E.T.C 2021. 11. 21. 18:44
    728x90
    반응형

     

    Dockerfile안에 작성된 명령어

    FROM alpine:latest

    FROM 명령어로 베이스 이미지를 지정한다. 베이스 이미지란 이미지를 만들 때 바탕이 되는 이미지를 의미한다. 이미지가 로컬에 없으면 도커 허브에서 다운로드한다. alpine은 5MB 남짓한 리눅스의 기본적 커멘드만 설치되어있는 경량 리눅스 이미지이다.

     

    RUN apk update && apk figlet

    RUN은 컨테이너에서 실행할 명령어를 지정한다. 명령어의 뜻은 alpine의 패키지 매니저를 업데이트하고 figlet이란 커맨트를 설치한 것이다 figlet은 아스키 아트를 출력하는 커멘드다.

     

    ADD ./message /message

    ADD로 컨테이너에 배치할 파일이나 디렉터리를 지정한다. 현재 디렉터리에 있는 message라는 파일을 컨테이너의 루트 디렉터리에 배치한다.

     

    CMD cat /message | figlet

    CMD로 컨테이너가 기동한 직후에 실행하는 커맨드를 지정한다. 'cat message'의 결과를 figlet 커맨드의 표준 입력으로 전달한다.

    ---------

    다른 블로그 자료

    웹 어플리케이션 서버를 실행하기 위한 도커 이미지를 만들어보자. 어플리케이션 실행을 위해 도커 이미지를 만드는 작업은 Dockerizing(도커라이징)이라고 한다. 도커파일에 적히는 명령어들은 ADD, COPY, FROM, RUN, ENV, WORKDIR, EXPOSE, CMD 등이 있다.

    • ADD: 빌드 중 호스트의 디렉토리에서 파일을 가져와서 이미지에 파일을 더하는 것이다. 이 때 빌드되는 디렉토리 밖에 위치하는 파일들은 가져오지 않으니 주의하자.
    • COPY: ADD와 동일한 기능을 하나 압축파일을 자동으로 풀어주지 않는다.
    • CMD: 컨테이너에서 실행될 명령어를 지정해준다.
    • FROM: 어떤 이미지로부터 새로운 이미지를 생성할 지를 지정한다. :뒤에 특정 버전을 지정해서 사용할 수 있다.
    • ENTRYPOINT: 컨테이너를 실행했을 때 실행할 명령을 적는다. 컨테이너를 정지했다가 다시시작해도 실행된다. 컨테이너가 실행될 때 실행되는 명령어이므로 도커 파일에서 한번만 사용할 수 있다.
    • ENV: 컨테이너 실행 환경에 적용되는 환경변수의 기본값을 지정하는 지시자이다. 리눅스에서는 환경변수로 어플리케이션의 동작을 제어하는 경우가 자주 있는데 도커에서는 이러한 방식을 권장하는 편이며 직접 어플리케이션을 작성하는 경우에도 환경변수로 설정값을 넘겨받아 처리할 수 있도록 코딩해야 한다.
    • EXPOSE: 가상머신에 오픈할 포트를 지정해준다. 컨테이너 외부에 노출할 포트를 지정해주며 컨테이너 실행 시 -p 옵션을 통해 연결해 주어야 한다.
    • LABEL: 이미지에 라벨을 단다.
    • RUN: 직접 명령어를 실행하는 지시자이다. 내려받은 이미지에 설치할 패키지 또는 쉘 명령어를 입력할 수 있다. RUN 바로 뒤에 적는 명령어가 실행된다. sudo apt install 등을 적을 수 있다.
    • USER: 해당 이미지를 실행할 유저를 지정한다.
    • VOLUME: 호스트의 디렉토리를 docker 컨테이너에 연결하는 명령어이다. 여러가지 설정파일, 데이터 등을 docker 컨테이너에서 사용할 수 있게 해준다. 즉 디렉토리 내용을 컨테이너에 저장하지 않고 호스트에 저장하도록 설정하는것이다. 주로 로그 수집과 같은 데이터 저장에 쓰인다.
    • WORKDIR: 이후에 실행되는 작업의 실행 디렉터리를 변경한다. 리눅스의 cd 라고 생각하면 된다. RUN 명령어에 적는 cd 명령어는 해당 명령어가 실행되는 위치만 바꿔줄 뿐 디렉터리의 이동은 일어나지 않기 때문에 특정 디렉터리로 이동해서 명령을 수행할 때에는 WORKDIR이 훨씬 유용하다.
    • \: 해당 명령이 이번 줄에서 끝나지 않고 다음 줄에 이어진다는 것을 의미한다. 커맨드라인이 길어질 경우 줄의 맨 끝에 붙여 주어야 한다.
    728x90
    반응형
Designed by Tistory.