ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
创建 Pod 时,可以为其下的容器设置启动时要执行的命令及其入参。如果要**设置命令**,就填写在配置文件的 command 字段下,如果要设置**命令的入参**,就填写在配置文件的 args 字段下。**一旦 Pod 创建完成,该命令及其入参就无法再进行更改了。** command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"] 这两行可以实现覆盖DockerFile中的ENTRYPOINT功能。具体的**command代表ENTRYPOINT的命令行**,而**args代表具体参数**。 **如果要覆盖默认的 Entrypoint 与 Cmd,需要遵循如下规则:** 如果command和args均没有写,那么用Docker默认的配置。 如果command写了,但args没有写,那么Docker默认的配置会被忽略而且仅仅执行.yaml文件的command(不带任何参数的)。 如果command没写,但args写了,那么Docker默认配置的ENTRYPOINT的命令行会被执行,但是调用的参数是.yaml中的args。 如果如果command和args都写了,那么Docker默认的配置被忽略,使用.yaml的配置。 下面是prometheus:v2.16.0镜像中的CMD和ENTRYPOINT `docker image inspect e935122ab143` ``` "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.path=/prometheus", "--web.console.libraries=/usr/share/prometheus/console_libraries", "--web.console.templates=/usr/share/prometheus/consoles" ], "ArgsEscaped": true, "Image": "sha256:0a0d465929e42cdae24889984d2de89db8d9baa618704dd3baef077ac4ddd9f1", "Volumes": { "/prometheus": {} }, "WorkingDir": "/prometheus", "Entrypoint": [ "/bin/prometheus" ], ``` 以下是我希望在k8s中运行的prometheus使用的参数 ``` - args: - --storage.tsdb.retention.time=15d - --config.file=/etc/config/prometheus.yml - --storage.tsdb.path=/data - --web.console.libraries=/etc/prometheus/console_libraries - --web.console.templates=/etc/prometheus/consoles - --web.enable-lifecycle ```