ちゃんとドキュメントを読めば書いてありました。
ただ、間違えやすそうなのでメモ。
- ちゃんと読むべきもの
結論
- マニフェストの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 |
となる。