[도커] 도커파일 명령어

안녕하세요! Do My Best 블로그 입니다.

이번에 포스팅할 내용은 도커 파일에 사용하는 명령어에대해서 포스팅하겠습니다. 아래 명령어 순서로 포스팅하겠습니다.

순서

  • FROM
  • RUN
  • EXPOSE
  • ENV
  • ENTRYPOINT
  • CMD
  • ADD
  • COPY
  • WORKDIR
  • VOLUME
  • USER
  • LABEL
  • ARG

1. FROM
FROM 명령어는 사용할 이미지를 지정하는 명령어입니다. ubuntu, node와같은 이미지파일을 지정합니다. 지정할때는 :뒤에 특정 버전을 지정하여 사용할 수 있습니다.

FROM ubuntu:18.04
or
FROM node

2. RUN
RUN 명령어는 내려받은 이미지에 설치할 패키지 또는 shell 명령어를 입력할 수 있습니다. 예를들어 내려받은 node이미지에 typescript를 설치하는 명령어를 내리고 싶다면

RUN npm install -g typescript:[version]
or
RUN ["npm", "install", "-g", "typescript:[version]"]

보통 apt-get과 같은 명령어를 이용하여 패키지 설치 명령어를 지정해줍니다.

3. EXPOSE
EXPOSE 명령어는 실행한 container외부에 노출할 포트를 지정하는 명령어입니다. 하지만 container를 실행할때 -p 옵션을통해 연결해주어야한다.

EXPOSE 8080

4. ENV
ENV 명령어는 환경변수를 지정하는 것으로 파일내부에서 변수처럼 활용이 가능합니다.

ENV test 123
CMD echo $test

해당 도커파일을 빌드하여 실행하면 test변수의 값인 123이 출력되는 것을 확인 할 수 있습니다. 해당 환경변수는 빌드된 이미지를 실행할때 override할 수 있습니다.

5. ENTRYPOINT
ENTRYPOINT 명령어는 컨테이너를 실행했을때 실행할 명령입니다. 컨테이너를 정지했다가 다시 시작해도 실행하는 명령어입니다. 물론 run명령어로 컨테이너를 실행했을때도 실행됩니다.
컨테이너가 실행될떄 실행되는 명령어이므로 도커파일에서 한번만 사용할 수 있습니다.

ENTRYPOINT ["npm", "run", "serve"]

6. CMD
CMD 명령어는 docker run 실행 시 사용할 default 명령을 설정하는데 사용합니다.

CMD ["npm", "run", "serve"]

ENTRYPOINT와 CMD의 차이를 설명하는 사이트입니다.

7. ADD
ADD 명령어는 빌드 중 호스트의 디렉토리에서 파일을 가져와서 이미지에 파일을 더하는 것입니다. 주의할점은 빌드되는 디렉토리 밖에 위치하는 파일들은 가져오지 않습니다.
ADD 호스트파일위치 이미지파일위치

ADD test.txt /

호스트의 test.txt파일이 이미지 파일에 / 위치로 더해집니다.

8. COPY
COPY 명령어는 ADD와 동일한 동작을 합니다. 하지만 압축파일을 자동으로 풀어주지 않습니다.

COPY test.txt /

9. WORKDIR
WORKDIR 명령어는 cd의 명령어와 비슷합니다. RUN과 CMD과 같은 명령어가 실행될 이미지 내부에 위치를 지정해주는 명령어입니다.

WORKDIR /app/

10. VOLUME
VOLUME 명령어는 호스트의 디렉토리를 docker 컨테이너에 연결하는 명령어입니다. 여러가지 설정파일, 데이터 등을 docker 컨테이너에너 사용할 수 있게 해줍니다. 즉 디렉토리 내용을 컨테이너에 저장하지 않고 호스트에 저장하도록 설정하는 것입니다. 로그 수집과 같은 데이터 저장에 쓰임. VOLUME 호스트디렉토리 컨테이너디렉토리

VOLUME ["/data", "/var/log"]

11. USER
USER 명령어는 해당 docker 이미지를 실행할 user를 지정하는 명령어입니다.

USER user
or
USER [uid]:[gid]

12. LABEL
LABEL 명령어는 이미지에 라벨을 다는 것입니다.

LABEL "abcd@gmail.com"

13. ARG
ARG 명령어는 도커파일 빌드시에 설정하는 옵션들을 지정할 수 있는 명령어 입니다.

ARG arg1
ARG arg2=value

위와 같이 지정할 경우 도커파일 빌드시 arg1 인자를 입력받아야합니다. 또한 arg2의 default값은 value값으로 지정되어 빌드된됩니다.

지금까지 도커파일 명령어이라는 주제로 포스팅하였습니다!
해당 게시물에 문제가 있다면 댓글을 통해 피드백해주시면 감사하겠습니다~ 같이 공부해요~^^

방문해주신분들 댓글 한개씩 달아주시면 감사하겠습니다~~^^