도커 파일 만드는 방법

임태빈·2022년 1월 7일
0

도커 파일은 명령어 + 인자로 이루어진다

EX) FROM ubuntu

이런식으로 도커 파일이 작성된다.

도커 파일 관련 명령어에 대해 알아보자

  1. FROM - 해당 명령어는 base이미지를 지정해주기 위해 사용되며 DockerFile 내에서 최상단에 위치한다.
    • 사용법
      FROM <image>
      FROM <image>:<tag>
      
      FROM ubuntu
      FROM ubuntu:16.04
      FROM python:3.8-alpine
  2. WORKDIR - 해당 명령어는 cd명령어 처럼 컨테이너 상에서 작업 디렉토리로 전환을 위해서 사용된다. 이후 실행되는 RUN,CMD,ENTRYPOINT 등에 명령어는 전환된 디렉토리에서 실행된다.
    • 사용법
      WORKDIR <이동할 경로>
      
      WORKDIR /usr/app
      WORKDIR 
  3. RUN - 해당 명령문은 마치 쉘(shell)에서 커맨드를 실행하는 것 처럼 이미지 빌드 과정에서 필요한 커맨드를 실행하기 위해서 사용된다. 주로 소프트웨어를 설치하는 명령어로 많이 사용된다.
    • 사용법
      RUN ["<커맨드>", "<파라미터1>", "<파라미터2>"]
      RUN <전체 커맨드>
      
      RUN apk add curl
      RUN pip install -r requirements.txt
  4. CMD - CMD는 docker run 실행 시 명령어를 주지 않았을 때 사용할 default 명령을 설정하거나, ENTRYPOINT의 default 파라미터를 설정할 때 사용한다. CMD 명령의 주용도는 컨테이너를 실행할 때 사용할 default를 설정하는 것이다. CMD 명령은 3가지 형태가 있다.
    • 사용법
      CMD [“executable”,”param1”,”param2”] (exec form, this is the preferred form)
      CMD [“param1”,”param2”] (as default parameters to ENTRYPOINT)
      CMD command param1 param2 (shell form)
      
      FROM ubuntu
      CMD echo "This is a test."
      
      $ docker run -it --rm <image-name>
      This is a test
      
      $ docker run -it --rm <image-name> echo "Hello"
      Hello
  5. ENTRYPOINT
    • 사용법
      ENTRYPOINT ["touch"]
      CMD{"/home/hello.txt"]
  6. COPY - host 환경의 파일 또는 디렉토리를 대상 컨테이너 이미지 안으로 복사한다.
    • 사용법
      COPY <복사할 파일> <복사 위치>
      COPY test.txt .
  7. ADD - 복사하려는 대상 파일이 입축 파일(tar, tar.gz)일 경우, 해당 파일의 압축을 해제하여 복사한다. wget 등을 통하여 원격지의 파일을 복사 대상으로 지정할 수 있다.
    • 사용법
      ADD <다운받은파일> <저장할 위치>
      ADD https://example.com/big.tar.xz /usr/src/things/
  8. ENV - Dockerfile 또는 컨테이너 안에서 환경 변수로 사용가능
    • 사용법
      FROM centos:7
      
      COPY test.sh /root/mkdir/test.sh
      ENV DIR=/root/mkdir/
      
      RUN echo ${DIR}
      CMD ${DIR}/test.sh
  9. ARG - ENV와 동일한 기능이지만 Dockerfile 에서만 사용이 가능
    • 사용법
      FROM centos:7
      
      COPY test.sh /root/mkdir/test.sh
      ARG DIR=/root/mkdir/
      
      RUN echo ${DIR}
      CMD ${DIR}/test.sh
  10. LABEL - 이미지의 버전 정보, 작성자, 코멘트와 같이 이미지 상세 정보를 작성해두기 위한 명령어이다.
    • 사용법
      LABEL title="webserver"
      LABEL version="2.0"
  11. VOLUME - 데이터를 보존하기 위하여 저장소를 지정하는 명령어이다.
    • 사용법
      VOLUME ["컨테이너 디렉터리1", "컨테이너 디렉터리2"]
  12. USER - RUN, CMD, ENTRYPOINT와 같은 명령을 실행하기 위한 특정 사용자를 지정해야 하는 상황에서 사용 된다. 사용 시 주의점이 있는데 USER 명령을 사용하기 위한 사용자 계정이 존재 해야 한다.
    • 사용법
      USER <user명> <group명>
      USER <UID> <GID>
  13. EXPOSE - 해당 컨테이너가 런타임에 지정된 네트워크 포트에서 수신 대기중 이라는것을 알려줍니다, 일반적으로 dockerfile을 작성하는 사람과 컨테이너를 직접 실행할 사람 사이에서 공개할 포트를 알려주기 위해 문서 유형으로 작성할 때 사용 된다. 컨테이너 생성 시 포트포워딩을 해주워야 한다
    • 사용법
      EXPOSE 80/tcp
      EXPOSE 80/udp
profile
golang과 서버 개발을 하고 있는 개발자입니다.

0개의 댓글