You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Docker容器使其直接将参数传递给可执行文件?

配置Docker实现直接传递参数给CLI工具

你需要通过ENTRYPOINT和CMD的组合来实现这个需求,以下是具体方案:

问题原因

你之前用CMD ["bash", "foo-cli"]的配置会报错,是因为当你执行docker run -t foo "--help"时,Docker会把"--help"替换掉CMD里的第一个参数(也就是bash),尝试直接执行--help这个"命令",自然找不到对应的可执行文件,所以抛出路径错误。

解决方案

方案1:直接指定ENTRYPOINT为CLI工具(推荐)

如果foo-cli已经在容器的$PATH中,直接用ENTRYPOINT固定执行程序,CMD设置默认参数:

ENTRYPOINT ["foo-cli"]
CMD ["--help"]  # 可选,当不传递任何参数时,默认执行foo-cli --help

这样执行docker run -t foo "--help"时,Docker会把"--help"作为参数传递给ENTRYPOINT指定的foo-cli,最终执行foo-cli --help,就能得到预期的yay it works输出。

方案2:通过bash中转(适用于需要shell环境的场景)

如果foo-cli依赖shell环境才能运行,可通过bash -c的方式传递参数:

ENTRYPOINT ["bash", "-c", "foo-cli \"$@\"", "--"]
CMD ["--help"]

这里的"--"是让bash将后续所有参数都传给$@,确保你通过docker run传递的参数能正确传递给foo-cli。

验证效果

执行以下命令:

docker run -t foo "--help"

会输出:

yay it works

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:55:22