오늘의 인기 글
최근 글
최근 댓글
Today
Total
05-08 16:23
관리 메뉴

우노

[Docker] CMD, ENTRYPOINT 차이 본문

DevOps/Docker

[Docker] CMD, ENTRYPOINT 차이

운호(Noah) 2023. 2. 18. 16:04

요약

  • CMD
    • 컨테이너를 생성할 때만 실행됩니다. (docker run)
    • 컨테이너 생성 시, 추가적인 명령어에 따라 설정한 명령어를 수정할 수 있습니다.
  • ENTRYPOINT
    • 컨테이너를 시작할 때마다 실행됩니다. (docker start)
    • 컨테이너 시작 시, 추가적인 명령어 존재 여부와 상관 없이 무조건 실행됩니다.

CMD, ENTRYPOINT 명령어 작성 방법

  • CMD ["<커맨드>", "<파라미터1>", "<파라미터2>"]
  • CMD <커맨드> <파라미터1> <파라미터2>
  • ENTRYPOINT ["<커맨드>", "<파라미터1>", "<파라미터2>"]
  • ENTRYPOINT <커맨드> <파라미터1> <파라미터2>

CMD 예제

  • Dockerfile

      FROM ubuntu
      CMD ["/bin/echo", "Before"]
  • docker run 실행 (추가 명령어가 없을 때)

      docker run --name <container-name> <image-name>
      # Before
  • docker run 실행 (추가 명령어가 있을 때)

      docker run --name <container-name> <image-name> echo "After"
      # After
  • CMD는 Dokerfile 내부에 여러 줄 작성할 수 있지만, 결국 가장 마지막 한줄만 사용됩니다.

ENTRYPOINT 예제

  • Dockerfile (ENTRYPOINT와 CMD가 같이 작성)

      FROM ubuntu
    
      ENTRYPOINT ["/bin/echo", "Before ENTRYPOINT"]
      CMD ["Before CMD"]
  • docker run 실행

      docker run --name <container-name> <image-name>
      # Before ENTRYPOINT Before CMD
    
      docker run --name <container-name> <image-name> echo "After CMD"
      # Before ENTRYPOINT After CMD
    • ENTRYPOINT 명령어는 무조건 출력되고, 추가적인 명령어 여부에 따라 CMD 파라미터가 바뀌게 됩니다.
Comments