Dockerfile에서 사용되는 명령어들을 알아보기 전에 Dockerfile의 기본적인 형식을 보겠습니다.
Dockerfile의 각 명령어는 다음과 같은 형식을 가집니다.
INSTRUCTION arguments
명령어가 앞에 나오고 그 뒤에 해당 명령어에 필요한 인자들을 가집니다.
아래는 Docfile의 예시입니다.
# Use an official Python runtime as a parent image
FROM python:3.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["python", "app.py"]
FROM
FROM은 무조건 Dockerfile 맨 앞에 있어야 합니다.
이 명령어를 통해 기본 이미지를 가져옵니다.
WORKDIR
작업 디렉토리를 설정합니다.
작업 디렉토리는 RUN, CMD, ENTRYPOINT, COPRY, ADD와 같은 명령어들이 실행되는 디렉터리입니다.
만약 WORKDIR 명령어가 없다면 Docker이 자동으로 생성해서 사용합니다.
COPY
호스트에서 파일이나 디렉터리들을 복사하여 컨테이너 파일 시스템에 붙여넣습니다.
ADD
COPY와 비슷하나 더 많은 일이 가능합니다.
예를 들어 원격 URL에서 파일을 다운로드하거나 압축 해제가 가능합니다.
RUN
새로운 레이어로써 이미지 내에서 커맨드를 실행합니다.
CMD
이미지를 통해 실행될 컨테이너에서 기본적으로 실행될 명령어를 지정하는 역할입니다.
ENTRYPOINT
CMD와 비슷합니다.
다른 점은 docker run명령어를 사용하면 CMD의 경우 덮어 씌워지지만 ENTYPOINT의 기존 것에 추가하는 형식으롤 사용됩니다.
EXPOSE
컨테이너가 특정 네트워크 포트에서 열리도록 설정합니다.
ENV
컨테이너에서 사용될 환경 변수를 설정합니다.
위에서 만든 dockerfile은 아래 명령어로 이미지로 만들 수 있습니다.
docker build -t <image_name>:<tage>