首页 > 解决方案 > 通过带有参数的 docker run 命令覆盖 Dockerfile CMD

问题描述

我有一个带有 CMD 的 Dockerfile。我想通过 docker run 命令覆盖此命令,但在我的命令中有参数。命令是这样的: MyAppName -DataBase myDataBase -Port myPort -AnotherARG arg 任何容器启动中的参数都是不同的,这意味着我不能在每次容器启动时提供所有参数(有很多参数)我该怎么做这个?谢谢

标签: docker

解决方案


那么问题是什么?

如果每次启动时命令行都完全不同,您最好CMD不要ENTRYPOINT在您的中声明Dockerfile,而是在每次启动时提供:

docker run -it ubuntu /bin/sh -c "echo Hello World"

如果有共同的部分,假设您总是需要一个外壳,但参数不同,那么您可以ENTRYPOINT声明Dockerfile

Dockerfile

FROM ubuntu
....
ENTRYPOINT ['/bin/sh']

并在启动时提供剩余的参数:

docker run -it mycontainer -c 'Hello World!

你需要记住:

  • 提供的参数docker run连接到Dockerfile'sENTRYPOINT

  • 参数,在docker runoverrideDockerfile中提供CMD

  • 您应该使用ENTRYPOINT ['blah', 'blah']语法而不是ENTRYPOINT blah blahinDockerfile以使其正常工作


推荐阅读