How to pass arguments to Docker container in Kubernetes or OpenShift through command line?

拈花ヽ惹草 提交于 2021-01-28 04:22:25

问题


I have a bash script in a Docker image to which I can pass a command line argument through docker run (having specified the bash script in ENTRYPOINT and a default parameter in CMD like in this answer). So I would run something like

docker run my_docker_test argument_1

Now I would like to deploy multiple (ca. 50) containers to OpenShift or Kubernetes, each with a different value of the argument. I understand that in Kubernetes I could specify the command and args in the object configuration yaml file. Is there a possibility to pass the argument directly from the command line like in docker run, e.g. passing to kubectl or oc, without the need to create a new yaml file each time I want to change the value of the argument?


回答1:


The following command should do it:

kubectl run my-app --image=my_docker_test -- argument_1



回答2:


The right answer is from @Jonas but you can also use environment variables in your yaml file as stated below:

As an alternative to providing strings directly, you can define arguments by using environment variables

env:
- name: ARGUMENT
  value: {{ argument_1 }}
args: ["$(ARGUMENT)"]

Where {{ argument_1 }} is an environment variable.




回答3:


I think the best way is to define them in your manifest (yaml file) in the container level, although environmental variables also work.

If you spawn multiple containers in your pod (not usually recommended but sometimes useful) I think the environmental variables is messy as they are defined on a pod level.

Note: If you do define environmental variables they are parsed as strings so you need to put numeric values in quotes.

containers:
- name: <foo>
  image: <bar>:latest
  args: ["<argumet_value>"]


来源:https://stackoverflow.com/questions/59093384/how-to-pass-arguments-to-docker-container-in-kubernetes-or-openshift-through-com

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!