Docker CMD(命令)和 ARGS(参数)使用整理
总览
K8S集群创建Pod时,可以为其下的容器设置启动时要执行的命令及其参数。设置命令,就填写在配置文件的command字段下,如果要设置命令的参数,就填写在配置文件的args字段下。一旦Pod创建完成,该命令及其入参无法再进行更改。
配置文件中设置了容器启动时要执行的命令及其参数,那么容器镜像中自带的命令 与参数将会被覆盖而不再执行。如果配置文件中只是设置了入参,却没有设置其对应的命令,那么容器镜像中自带的命令会使用该新参数作为其执行时的参数。
Docker 与 Kubernetes中对应的字段名称。
描述 | Docker 字段名称 | Kubernetes 字段名称 |
---|---|---|
容器运行的命令 | Entrypoint | command |
传递给命令的参数集合 | Cmd | args |
规则
如果要覆盖默认的 Entrypoint 与 Cmd,需要遵循如下规则:
如果在容器配置中没有设置command 或者 args,那么将使用Docker镜像自带的命 令及其入参。
如果在容器配置中只设置了command但是没有设置args,那么容器启动时只会执行该 命令,Docker镜像中自带的命令及其入参会被忽略。
如果在容器配置中只设置了args,那么Docker镜像中自带的命令会使用该新入参作为 其执行时的入参。
如果在容器配置中同时设置了command 与 args,那么Docker镜像中自带的命令及 其入参会被忽略。容器启动时只会执行配置中设置的命令,并使用配置中设置的入参作为 命令的入参。
参考答案:
https://kubernetes.io/zh/docs/tasks/inject-data-application/define-command-argument-container/
原文地址:https://blog.51cto.com/michaelkang/2449082
时间: 2024-11-12 00:45:06