加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Docker容器具有入口变量扩展和CMD参数

发布时间:2020-12-16 03:32:30 所属栏目:安全 来源:网络整理
导读:我想创建一个Docker Image,作为一个可执行文件,用户将一个令牌作为一个环境变量传递给它.可执行文件具有用户应通过停靠点CMD(通过Env进行认证来考虑git)的子命令. 然而,Docker没有将CMD附加到入口点. Dockerfile的相关部分如下所示: ENTRYPOINT ["/bin/sh",

我想创建一个Docker Image,作为一个可执行文件,用户将一个令牌作为一个环境变量传递给它.可执行文件具有用户应通过停靠点CMD(通过Env进行认证来考虑git)的子命令.
然而,Docker没有将CMD附加到入口点.
Dockerfile的相关部分如下所示:

ENTRYPOINT ["/bin/sh","-c","/usr/bin/mycmd --token=$MY_TOKEN"]
CMD ["pull","stuff"]

所以如果这个容器执行没有任何CMD覆盖和秘密作为MY_TOKEN变量,我会期望

mycmd --token=secret pull stuff

被执行.如果用户启动具有覆盖的容器,例如

docker run -it -e MY_TOKEN=secret myimage push junk

我会期望的

mycmd --token=secret push junk

被执行.然而,如上所述,只有mycmd –token = secret被执行,CMD被忽略 – 无论我在启动时是否覆盖它,或者在Dockerfile中设置它.

最佳答案
使用/ bin / sh -c“脚本”语法,-c参数之后的任何内容都将成为脚本的参数.您可以使用$0和$@与他们的/ bin / sh脚本一起达到它们:

ENTRYPOINT ["/bin/sh","exec /usr/bin/mycmd --token=$MY_TOKEN $0 $@"]
CMD ["pull","stuff"]

请注意,您还可以将您的entrypoint更改为添加到运行exec /usr/bin/mycmd –token = $MY_TOKEN“$@”的映像的shell脚本,并使用docker的exec语法执行该shell脚本:

ENTRYPOINT ["/entrypoint.sh"]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读