build
: Dockerfile이 위치한 경로를 명시하거나, build context와 Dockerfile의 이름을 명시하는 데 사용된다.image
: 컨테이너가 실행될 때 사용할 이미지를 명시한다.context
: Dockerfile이 위치한 디렉토리의 경로를 설정한다.dockerfile
: Dockerfile의 이름을 설정한다.ports
: 호스트와 컨테이너 간에 포트를 연결하는 데 사용된다.volumes
: 호스트와 컨테이너 간에 볼륨을 공유하는 데 사용된다.environment
: 컨테이너에서 사용할 환경 변수를 설정하는 데 사용된다.depends_on
: 서비스 간의 의존성을 정의하는 데 사용된다.restart
: 컨테이너가 종료될 때 재시작 정책을 설정하는 데 사용된다.command
: 컨테이너가 시작될 때 실행할 명령어를 설정하는 데 사용된다.links
: 다른 서비스를 이 서비스에 연결하는 데 사용된다.FROM
: 기반 이미지를 지정합니다. Docker 이미지는 이 FROM에 기반하여 생성된다.LABEL
: 이미지에 메타데이터를 추가한다.RUN
: 이미지를 생성하는 동안 셸 또는 명령어를 실행한다.CMD
: 컨테이너가 시작될 때마다 실행될 명령어를 지정한다.ENTRYPOINT
: 컨테이너가 시작될 때 실행될 명령어를 설정한다. CMD와 비슷하지만, ENTRYPOINT는 docker run에 추가적인 인수를 받을 수 있다.COPY
: 파일 또는 디렉토리를 이미지로 복사한다.ADD
: 파일, 디렉토리, 또는 원격 파일 URL을 이미지로 추가한다. 압축된 파일의 경우 압축 해제까지 수행한다.ENV
: 환경변수를 설정한다.ARG
: Dockerfile 내에서 사용될 변수를 정의한다.EXPOSE
: 네트워크 포트를 연다.WORKDIR
: 작업 디렉토리를 설정한다.USER
: RUN, CMD, ENTRYPOINT 명령어를 실행할 사용자를 설정한다.VOLUME
: 영구 데이터를 저장하는 디렉토리를 설정한다.Dockerfile과 docker-compose.yml을 분리하는 주된 이유는 두 도구의 역할과 사용 목적이 다르기 때문이다.
각각의 도구는 컨테이너화된 애플리케이션을 구축하고 관리하는 데 있어 서로 보완하는 기능을 제공한다.
모듈성:
재사용성:
가독성:
확장성:
복잡성:
초보자에게 어려움:
간소화:
초보자 친화적:
유연성 부족:
재사용 어려움: