如何将参数附加到容器命令?

时间:2017-04-13 15:43:50

标签: docker kubernetes

我使用Dockerfile构建了应用程序,用于定义:

CMD node dist/bin/index.js

我想"追加"在Dockerfile中定义的命令参数,即我想以node dist/bin/index.js foo执行程序。

土地上,我可以通过以下方式实现这一目标:

docker build --tag test .
docker run test foo 

我无法使用command,因为这会覆盖ENTRYPOINT。我无法使用args,因为这会覆盖cmd中定义的Dockerfile。看来我唯一的选择是:

cmd: ["node", "dist/bin/index.js", "foo"]

有没有办法在不重新定义整个Docker CMD定义的情况下将参数附加到容器命令?

4 个答案:

答案 0 :(得分:1)

无法追加。您可以在container.spec上设置command:args:。您可以在此处详细了解如何覆盖CMD / ENTRYPOINT:https://kubernetes.io/docs/concepts/configuration/container-command-args/

答案 1 :(得分:1)

使用Dockerfile中的可选参数,您也许可以实现相同的效果:

ENV YOUR_OPTIONAL_PARAM
CMD node dist/bin/index.js $YOUR_OPTIONAL_PARAM

答案 2 :(得分:0)

我没有办法达到你想要的效果,除了你提到的设置cmd之外。

答案 3 :(得分:0)

如果我误解了您的问题,请告诉我,但如果您只想将参数传递给POD,则可以在入口点脚本中运行命令,并使用传递给该命令的容器的环境变量。这应该适用于任何Pod规范(例如,作为部署描述的一部分)。

实施例

apiVersion: v1
kind: Pod
metadata:
  name: envar-demo
  labels:
    purpose: demonstrate-envars
spec:
  containers:
  - name: envar-demo-container
    image: gcr.io/google-samples/node-hello:1.0
    env:
    - name: DEMO_GREETING
      value: "Hello from the environment"

有关详情,请参阅此doc