이번 포스팅에서는 비슷하지만 다른 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 |
댓글