본문 바로가기
IT/Kubernetes

Docker, Pod 인자 전달 비교

by 물통꿀꿀이 2019. 5. 27.

이번 포스팅에서는 비슷하지만 다른 Docker와 k8s의 Container에서 Argument 전달 방식을 비교해 보려고 한다.


Docker 

 k8s Pod

 

 ENTRYPOINT

 Command

 내부 실행 명령어

 CMD

 args

 실행 파일에 전달되는 인자


위의 표와 같이 비슷한 내용이 표현만 다르게 사용된다.


그럼 아래에서 각 값을 사용하는 예시를 확인해보자.

1. DockerFile

FROM ubuntu:latest

RUN apt-get update; apt-get -y install nginx


ENTRYPOINT ["/bin/command", "echo"]

CMD ["hello test"] 


2. Pod (Manifast File)

apiVersion: batch/v1beta1

kind: CronJob

metadata:

 name: pingpong

spec:

 schedule: "*/1 * * * *"

 jobTemplate:

  spec:

   template:

    metadata:

     labels:

      app: pingpong

    spec:

     containers:

     - name: pingpong

       image: gihyodocker/alpine:bash

       command: ["/bin/sh"]

       args:

        - "-c"

        - |

          echo [`date`] ping!

          sleep 10

          echo [`date`] pong!

     restartPolicy: OnFailure 


두개가 사용하는 방식에 큰 차이는 없다. CMD의 값을 ENTRYPOINT에 넣는 것이나 args의 값을 command에 넣는 것은 매한가지이기 때문이다.

그런데 Pod에서 Container를 생성 할 때 ENTRYPOINT와 command가 중복된다. (Dockerfile의 Image를 Pod에서 사용하기 때문)

이러한 상황에서는 k8s Pod가 ENTRYPOINT의 값을 overwriting하여 사용한다. 즉, Dockerfile에서 정의한 ENTRYPOINT은 사용하지 않는다.

'IT > Kubernetes' 카테고리의 다른 글

[Kubernetes] StatefulSet  (0) 2019.06.07
[Kubernetes] Headless Service  (0) 2019.06.07
[Kubernetes] ConfigMap  (0) 2019.05.27
[Kubernetes] Internals - Pause Container  (0) 2019.05.16
[Kubernetes] Internals - Init Pod  (0) 2019.05.16

댓글