1. ホーム
  2. docker

[解決済み] Docker ENTRYPOINTとKubernetesコンテナ仕様COMMANDの違い?

2023-02-21 07:49:38

質問

Dockerfileのパラメータに エントリポイント というパラメータがあり、KubernetesのデプロイメントYAMLファイルを書いているときに、Container specにある COMMAND .

何が違うのか、それぞれどのように使われるのかがわからないのですが?

どのように解決するのですか?

Kubernetesは、これらのコマンドを使用する方法について複数の選択肢を提供しています。

Kubernetes .yaml ファイルでデフォルトの Entrypoint と Cmd をオーバーライドすると、これらのルールが適用されます。

  • コンテナに対してコマンドまたはアーギュメントを指定しない場合、Docker イメージで定義されたデフォルトが使用されます。 Docker イメージで定義されたものが使用されます。
  • コンテナに args のみを指定した場合、Docker イメージで定義されたデフォルトの Entrypoint が、指定された引数で実行されます。
  • コンテナに対してコマンドを指定した場合、指定したコマンドのみが使用されます。 のみが使用されます。Docker イメージで定義されたデフォルトの EntryPoint とデフォルトの 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/