一尘不染

Docker ENTRYPOINT和Kubernetes容器规范COMMAND之间的区别?

docker

Dockerfile有一个用于 ENTRYPOINT 的参数,并且在编写Kubernetes部署YAML文件时,在Container规范中有一个用于
COMMAND 的参数。

我不知道有什么区别以及如何使用它们?


阅读 527

收藏
2020-06-17

共1个答案

一尘不染

Kubernetes为我们提供了有关如何使用这些命令的多种选择:

当您覆盖Kubernetes .yaml文件中的默认Entrypoint和Cmd时,将应用以下规则:

  • 如果不为容器提供命令或args,则使用Docker映像中定义的默认值。
  • 如果仅为容器提供args,则Docker映像中定义的默认Entrypoint将与您提供的args一起运行。
  • 如果提供容器的命令,则仅使用提供的命令。Docker映像中定义的默认EntryPoint和默认Cmd将被忽略。您的命令在提供的args下运行(如果没有提供args,则不提供args)。

这是一个例子:

Dockerfile:

FROM alpine:latest
COPY "executable_file" /
ENTRYPOINT [ "./executable_file" ]

Kubernetes yaml文件:

 spec:
    containers:
      - name: container_name
        image: image_name
        args: ["arg1", "arg2", "arg3"]

https://kubernetes.io/docs/tasks/inject-data-application/define-command-
argument-container/

2020-06-17