Docker

DockerFile 알아보기

아아네잔 2022. 6. 28. 12:27
  • Docker 파일은 <명령> <매개변수> 형식으로 작성한다.
  • #은 주석
  • 명령은 대소문자를 구분하지는 않지만 보통 대문자로 작성한다.
  • Docker는 Dockerfile에 작성된 명령을 순서대로 처리한다.
  • Dockerfile에서 명령은 항상 FROM으로 시작해야 한다.
    • FROM 이 없거나, FROM 앞에 다른 명령이 있으면 이미지가 생성되지 않는다.
  • 각 명령은 독립적으로 실행 된다.
    • 예를 들면 cd로 디렉토리를 이동하더라도 뒤에 있는 명령에는 영향을 주지 않는다.

 

1. dockerignore

  • Dockerfiile과 같은 디렉토리에 들어있는 모든 파일을 context라고 한다. 특히 이미지를 생성할 때 컨텍스트를 모두 Docker 데몬에 전송하므로 필요없는 파일이 포함되지 않도록 주의한다.

2. FROM

  • FROM 은 어떤 이미지를 기반으로 이미지를 생성할 지 설정한다. Dockerfile로 이미지를 생성할 때는 항상 기존에 있는 이미지를 기반으로 생성하기 때문에 FROM 은 반드시 설정해야 한다.
  • 이미지 이름을 설정하거나 이미지 이름과 함께 태그를 설정할 수도 있다. 이미지 이름만 설정하면 latest를 사용한다. 또한 이미지 이름은 생략할 수 없다.

3. RUN

  • RUN은 FROM 에서 설정한 이미지 위에서 스크립트 혹은 명령을 실행한다. 여기서 RUN으로 실행한 결과가 새 이미지로 생성되고, 실행내역은 이미지의 히스토리에 기록된다.
  • RUN <명령> 형식이며 셸 스크립트 구문을 사용할 수 있다 .FROM으로 설정한 이미지에 포함된 /bin./sh 실행파일을 사용하게 되며, 해당 파일이 없으면 사용할 수 없다.

4. ENTRYPOINT

  • ENTRYPOINT 는 컨테이너가 시작되었을 때 스크립트 혹은 명령을 실행한다.
  • 즉 docker run 명령으로 컨테이너를 생성하거나, 정지된 컨테이너를 docker start 명령으로 시작할 때 실행된다.
  • ENTRYPOINT는 Dockerfile에서 단 한번만 사용할 수 있다.

5. ENV

  • ENV는 환경변수를 설정한다. ENV로 설정한 환경변수는 RUN, CMD, ENTRYPOINT에 적용된다.

6. COPY

  • COPY는 파일을 이미지에 추가한다. ADD와는 달리 COPY는 압축파일을 추가할 때 압축을 해제하지 않고 파일 URL을 사용할 수 없다.
  • COPY <복사할 파일 경로> <이미지에서 파일이 위치할 경로> 형식이다.
  • <복사할 파일 경로> 는 컨텍스트 아래를 기준으로 하며 컨텍스트 바깥의 파일, 디렉터리는 사용할 수 없고 절대경로의 사용도 불가능하다.
  • <복사할 파일 경로> 는 파일뿐만 아니라 디렉터리도 설정할 수 있으며, 디렉터리를 지정하면 디렉터리의 모든 파일을 복사한다. 또한 와일드카드를 이용해서 특정파일만 복사할 수 도 있다.

7. ARG

  • ARG 명령문은 docker build 커맨드로 이미지를 빌드 시, —build -arg 옵션을 통해 넘길 수 있는 인자를 정의하기 위해 사용한다.