51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

k8s 的 command- args 区别

爱的方式

apiVersion: v1
kind: Pod
metadata:
  name: command-args
spec:
  # hostNetwork: true
  containers:
  - name: web
    image: nginx:1.25.1-alpine
    # 类似于Dockerfile的ENTRYPOINT指令。
    # command: ["tail","-f","/etc/hosts"]
    # 类似于Dockerfile的CMD指令。
    # args: ["sleep","3600"]
    command:
    - "tail"
    - "-f"
    args:
    - "/etc/hosts"

--

Dockerfile的ENTRYPOINT 和 CMD

CMD指令和ENTRYPOINT指令的作用都是为镜像指定容器启动后的命令,那么它们两者之间有什么各自的优点呢?

为了更好地对比CMD指令和ENTRYPOINT指令的差异,我们这里再列一下这两个指令的说明:

CMD

支持三种格式

CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;

CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;

CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数;

指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。

如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。

ENTRYPOINT

两种格式:

ENTRYPOINT ["executable", "param1", "param2"]

ENTRYPOINT command param1 param2(shell中执行)。

配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。

每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效

赞(7)
未经允许不得转载:工具盒子 » k8s 的 command- args 区别