系統(tǒng)運(yùn)維
docker cmd(命令)和 args(參數(shù))使用整理
總覽
k8s集群創(chuàng)建pod時(shí),可以為其下的容器設(shè)置啟動(dòng)時(shí)要執(zhí)行的命令及其參數(shù)。設(shè)置命令,就填寫在配置文件的command字段下,如果要設(shè)置命令的參數(shù),就填寫在配置文件的args字段下。一旦pod創(chuàng)建完成,該命令及其入?yún)o(wú)法再進(jìn)行更改。
配置文件中設(shè)置了容器啟動(dòng)時(shí)要執(zhí)行的命令及其參數(shù),那么容器鏡像中自帶的命令 與參數(shù)將會(huì)被覆蓋而不再執(zhí)行。如果配置文件中只是設(shè)置了入?yún)?,卻沒(méi)有設(shè)置其對(duì)應(yīng)的命令,那么容器鏡像中自帶的命令會(huì)使用該新參數(shù)作為其執(zhí)行時(shí)的參數(shù)。
docker 與 kubernetes中對(duì)應(yīng)的字段名稱。
描述docker 字段名稱kubernetes 字段名稱容器運(yùn)行的命令
entrypoint
command
傳遞給命令的參數(shù)集合
cmd
args
規(guī)則
如果要覆蓋默認(rèn)的 entrypoint 與 cmd,需要遵循如下規(guī)則:
如果在容器配置中沒(méi)有設(shè)置command 或者 args,那么將使用docker鏡像自帶的命 令及其入?yún)ⅰ?br>如果在容器配置中只設(shè)置了command但是沒(méi)有設(shè)置args,那么容器啟動(dòng)時(shí)只會(huì)執(zhí)行該 命令,docker鏡像中自帶的命令及其入?yún)?huì)被忽略。
如果在容器配置中只設(shè)置了args,那么docker鏡像中自帶的命令會(huì)使用該新入?yún)⒆鳛?其執(zhí)行時(shí)的入?yún)ⅰ?br>如果在容器配置中同時(shí)設(shè)置了command 與 args,那么docker鏡像中自帶的命令及 其入?yún)?huì)被忽略。容器啟動(dòng)時(shí)只會(huì)執(zhí)行配置中設(shè)置的命令,并使用配置中設(shè)置的入?yún)⒆鳛?命令的入?yún)ⅰ?br>參考答案:
https://kubernetes.io/zh/docs/tasks/inject-data-application/define-command-argument-container/