Post

Section 5-3. Commands And Arguments

udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.

Section05. Application Lifecycle Management

Commands and Arguments

도커파일의 CMD와 ENTRYPOINT

  • 컨테이너는 그 안의 프로세스가 들어가는 동안에만 살아있는다. 즉 컨테이너 안에 서비스가 멈추게 되면 컨테이너는 종료된다.
  • CMD : 도커 파일을 이용해서 이미지를 빌드하고 컨테이너가 시작되었을 때 실행되는 커맨드이다.
    1
    2
    
      FROM alpine
      CMD ["echo", "Hello, World!"]
    
    • 예를 들어 도커 파일에서 CMD [“echo”, “Hello World!”] 라고 지정하면 컨테이너가 시작되었을 때 echo Hello, World! 커맨드가 실행된다.
    • 이 때 만약 docker run my-container echo "Hello again!" 으로 컨테이너를 시작한다면 CMD 인수를 재정의하므로 컨테이너가 시작되었을 때 echo Hello again! 커맨드가 실행된다.
  • ENTRYPOINT : CMD와 같이 재정의하여 실행할 수도 있지만 ENTRYPOINT를 이용할 수 있다.
    1
    2
    
     FROM apline
     ENTRYPONT ["echo"]
    
    • ENTRYPONT를 echo로 지정한 후 컨테이너를 생성할 때 docker run my-container Hello로 컨테이너를 시작하면 컨테이너 내부에서 echo Hello 커맨드를 정상적으로 실행시킨다.
    • 즉 argument가 필요할 때 ENTRYPOINT를 사용하면 간편하지만 argument를 지정하지 않으면 에러가 난다.
  • argument 지정 없이도 default로 값을 지정하기 위해서는 CMD를 이용하여 default argument를 지정할 수 있다.
    1
    2
    3
    
    FROM apline
    ENTRYPONT ["echo"]
    CMD ["This is default Command"]
    

쿠버네티스의 command와 args

  • 위 도커파일에서 정의했던 CMD와 ENTRYPOINT와 마찬가지로 쿠버네티스에서는 파드 안에서 동작하는 컨테이너를 위한 command와 args를 정의할 수 있다.
  • 도커파일의 CMD 와 쿠버네티스의 args
    1
    2
    3
    
     FROM apline
     ENTRYPONT ["echo"]
     CMD ["Default Command"]
    
    • 위 도커 파일을 통해 만들어진 my-container 이미지는 컨테이너가 실행되었을 때 echoDefault Command 커맨드가 실행된다. ``` apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers:
      • name: my-pod image: my-container args: [“K8S Command”] ```
    • 이를 쿠버네티스에서는 args를 이용하여 argument를 지정해줄 수 있다.
  • 도커파일의 ENTRYPOINT와 쿠버네티스의 command
    • 마찬가지로 도커 파일의 ENTRYPOINT에는 쿠버네티스의 command가 대응되어 오버라이딩하여 사용할 수 있다. ``` apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers:
      • name: my-pod image: my-container command: [“echo”] args: [“K8S Command”] ```
This post is licensed under CC BY 4.0 by the author.