ちゃんとドキュメントを読めば書いてありました。
ただ、間違えやすそうなのでメモ。
- ちゃんと読むべきもの
結論
- マニフェストのcommandはDockerfileのENTRYPOINT
- マニフェストのargsはDockerfileのCMD
apiVersion: v1
kind: Pod
metadata:
name: command-demo
labels:
purpose: demonstrate-command
spec:
containers:
- name: command-demo-container
image: debian
command: ["printenv"] # こっちはENTRYPOINT
args: ["HOSTNAME", "KUBERNETES_PORT"] # こっちはCMD
restartPolicy: OnFailure
注意
また、command・argsをそれぞれ定義したかどうかで挙動が変わるので注意。
Dockerfileが
- ENTRYPOINT: echo
- CMD: HOSTNAME
だった場合
command | args | 実行されるコマンド |
---|---|---|
未定義 | 未定義 | echo HOSTNAME |
printenv | 未定義 | printenv |
未定義 | KUBERNETES_PORT | echo KUBERNETES_PORT |
printenv | KUBERNETES_PORT | printenv KUBERNETES_PORT |
となる。