How do I pass arguments to docker run in a CLI (Command Line Interface)?

柔情痞子 提交于 2021-01-28 13:01:36

问题


I need my image to start with this command:

docker run -it --rm --security-opt seccomp=./chrome.json <image_id>

I'm deploying it to Google Compute Engine: https://cloud.google.com/compute/docs/containers/deploying-containers

As far as I understand, I can't specify arguments there, so Google Cloud starts it with just docker run command.

How do I pass these arguments? Maybe I can specify those args in Dockerfile somehow?


回答1:


When you use the feature to deploy container directly on Compute Engine, you are limited to the definition of

  • Entry point
  • Args to pass at the entry point
  • Environment variables

That's all, you can't add additional/custom params.

One solution is, instead of using the built in feature, to use the container-optimized OS (COS) on your Compute Engine and to create a startup script to download and run the container with the docker args that you want

METADATA=http://metadata.google.internal/computeMetadata/v1
SVC_ACCT=$METADATA/instance/service-accounts/default
ACCESS_TOKEN=$(curl -H 'Metadata-Flavor: Google' $SVC_ACCT/token | cut -d'"' -f 4)
docker login -u oauth2accesstoken -p $ACCESS_TOKEN https://gcr.io
docker run … gcr.io/your-project/your-image

On the latest line, you can customize the run param in your startup script.

So now, for the update, you have to update the startup script and to reset your VM (or to create a new Compute Engine with COS and the new startup script; and to delete the previous one).

It's matter of tradeoff between the convenience of a built in feature and the customization capacity.



来源:https://stackoverflow.com/questions/65388567/how-do-i-pass-arguments-to-docker-run-in-a-cli-command-line-interface

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