Dockerfileには[〜#〜] entrypoint [〜#〜]のパラメーターがあり、KubernetesデプロイメントYAMLファイルの作成中に、コンテナー仕様に[〜#〜] command [ 〜#〜]。
私は違いが何であり、それぞれがどのように使用されるのかを理解できませんか?
Kubernetesは、これらのコマンドの使用方法に関する複数のオプションを提供します。
Kubernetes .yamlファイルのデフォルトのエントリポイントとCmdをオーバーライドする場合、次のルールが適用されます。
例を次に示します:
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/
主な違いは用語です。 Kubernetesは、コンテナへのインターフェイスを定義するためにDockerが使用した用語は扱いにくいと考えたため、異なるoverlapping用語を使用しました。 Kubernetesオーケストラのコンテナーの大部分はDockerであるため、混乱が多くあります。
具体的には、ここに示すように、Dockerエントリポイントはkubernetesコマンドであり、dockerコマンドはkubernetes argsです: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#注 。
-------------------------------------------------------------------------------------
| Description | Docker field name | Kubernetes field name |
-------------------------------------------------------------------------------------
| The command run by the container | Entrypoint | command |
| The arguments passed to the command | Cmd | args |
-------------------------------------------------------------------------------------
Kubernetesがこれらのランタイムオプションを使用する方法についての@Berkの説明は正しいですが、用語を翻訳する限り、docker runがそれらを使用する方法についても正しいです。重要なのは、どちらのシステムでもイメージと実行仕様の間の相互作用を理解し、他のシステムと言えば用語を翻訳することです。