作者:小TMM_ | 来源:互联网 | 2023-02-02 12:39
DOCKERFILE有一个ENTRYPOINT参数,在编写Kubernetes部署yaml文件时,在COMMAND的Container规范中有一个参数.
我无法弄清楚有什么区别以及如何使用它们?
1> Berk Soysal..:
Kubernetes为我们提供了有关如何使用这些命令的多种选择:
当您覆盖Kubernetes .yaml文件中的默认Entrypoint和Cmd时,这些规则适用:
如果不为Container提供命令或args,则使用Docker镜像中定义的默认值.
如果为Container提供命令但没有args,则仅使用提供的命令.默认的EntryPoint和Docker镜像中定义的默认Cmd将被忽略.
如果仅为Container提供args,则Docker镜像中定义的默认入口点将与您提供的args一起运行.
如果提供命令和args,则忽略Docker镜像中定义的默认入口点和默认Cmd.您的命令与您的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/
2> billwanjohi..:
关键的区别在于术语.Kubernetes认为Docker用于定义容器接口的术语很笨拙,因此他们使用了不同的重叠术语.由于绝大多数容器Kubernetes管弦乐队都是Docker,因此混乱不堪.
具体来说,docker入口点是kubernetes命令,docker命令是kubernetes args,如下所示:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes .
-------------------------------------------------------------------------------------
| 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如何使用它们也是正确的.关键是要了解任一系统中图像和运行规范之间的相互作用,并在谈到另一个时翻译术语.
当两者都是不同的时候,Docker的`Cmd`和Kubernetes的`command`确实是一个坏选择