Docker Compose Command

y001·2025년 3월 9일
post-thumbnail

1. RUN 명령어

RUN은 Docker 이미지를 생성할 때 실행할 명령어를 정의하는 데 사용된다. 이 명령어는 이미지 빌드 과정에서 실행되며, 컨테이너 실행 시에는 영향을 미치지 않는다.

주요 활용 사례

  • OS 패키지 업데이트 및 업그레이드
  • 애플리케이션 및 미들웨어 설치
  • 서버 환경을 구축하는 명령어 실행 (서비스 활성화/비활성화)

실행 방식

  • Shell 방식
    RUN apt-get -y install nginx
  • Exec 방식
    RUN ["/bin/bash", "-c", "apt-get -y install nginx"]

2. CMD & ENTRYPOINT

CMDENTRYPOINT는 컨테이너가 실행될 때 수행할 명령어를 지정한다.

차이점

  • RUN: 이미지 빌드 과정에서 실행됨
  • CMDENTRYPOINT: 컨테이너가 실행될 때 수행됨

CMD vs ENTRYPOINT

  • CMD
    • 실행할 기본 명령을 지정하며, 컨테이너 실행 시 변경 가능
    • 예:
      CMD ["nginx", "-g", "daemon off;"]
  • ENTRYPOINT
    • 컨테이너 실행 시 필수적으로 실행되는 명령
    • CMD와 달리 변경이 어려움
    • 예:
      ENTRYPOINT ["/usr/sbin/nginx"]
  • 동시 사용 가능
    ENTRYPOINT ["/bin/sh", "-c"]
    CMD ["echo Hello, World!"]
    위 설정에서는 ENTRYPOINTsh을 실행하고, CMD가 그 뒤에 echo Hello, World!를 전달한다.

3. ONBUILD

ONBUILD는 현재 이미지가 다른 Dockerfile에서 베이스 이미지로 사용될 때 실행할 명령어를 정의한다.

ONBUILD ADD website.tar /var/www/html

이 이미지를 기반으로 새 이미지를 빌드할 때 website.tar가 자동으로 /var/www/html에 추가된다.

  • 현재 이미지에서 실행되는 스크립트가 아니라, 베이스 이미지를 활용하는 과정에서 실행됨
  • 일반적인 Dockerfile에서는 잘 사용되지 않으며, 재사용성이 필요한 빌드 과정에서 활용됨

4. WORKDIR

WORKDIR은 Dockerfile 내에서 작업 디렉토리를 설정하는 명령어다.

WORKDIR /app

이제 RUN, CMD, ENTRYPOINT 등의 명령어가 /app 디렉토리를 기준으로 실행된다.


5. USER

USER는 컨테이너에서 실행할 명령어를 수행할 계정을 지정하는 명령어다.

USER nonroot
  • 기본적으로 컨테이너는 root 권한으로 실행되므로, 보안 강화를 위해 USER를 지정하는 것이 권장됨.
  • RUN, CMD, ENTRYPOINT에서 실행되는 모든 명령어가 해당 사용자 권한으로 실행됨.

0개의 댓글