Dockerfile 有一个 ENTRYPOINT 参数,在编写 Kubernetes 部署 YAML 文件时,容器规范中有一个 COMMAND 参数。
我无法弄清楚有什么区别以及如何使用它们?
原文由 tusharfloyd 发布,翻译遵循 CC BY-SA 4.0 许可协议
Dockerfile 有一个 ENTRYPOINT 参数,在编写 Kubernetes 部署 YAML 文件时,容器规范中有一个 COMMAND 参数。
我无法弄清楚有什么区别以及如何使用它们?
原文由 tusharfloyd 发布,翻译遵循 CC BY-SA 4.0 许可协议
主要区别在于术语。 Kubernetes 认为 Docker 用来定义容器接口的术语很尴尬,所以他们使用了不同的、 重叠 的术语。由于 Kubernetes 编排的绝大多数容器都是 Docker,因此混乱比比皆是。
具体来说,docker 入口点是 kubernetes 命令,docker 命令是 kubernetes args,如此 处所示。
-------------------------------------------------------------------------------------
| Description | Docker field name | Kubernetes field name |
-------------------------------------------------------------------------------------
| The command run by the container | Entrypoint | command |
| The arguments passed to the command | Cmd | args |
-------------------------------------------------------------------------------------
@Berk 对 Kubernetes 如何使用这些运行时选项的描述是正确的,但对于 docker run 如何使用它们也是正确的,只要您翻译这些术语。关键是要了解任一系统中映像和运行规范之间的相互作用,并在谈到另一个时翻译术语。
原文由 billkw 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答2.4k 阅读✓ 已解决
2 回答771 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答1.4k 阅读
1 回答1.6k 阅读
1 回答1.2k 阅读
1 回答1.6k 阅读
Kubernetes 为我们提供了如何使用这些命令的多种选择:
当您覆盖 Kubernetes .yaml 文件中的默认入口点和 Cmd 时,这些规则适用:
这是一个例子:
Dockerfile:
Kubernetes yaml 文件:
https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/