任务很简单,我知道环境变量是(将)设置在容器内部,我想在我的内联运行命令中使用它。但是,该值不会填充:
docker run --rm --link other ubuntu printenv | grep OTHER_ENV_VAR_NAME && echo ${OTHER_ENV_VAR_NAME}
上述命令的当前输出为:
> OTHER_ENV_VAR_NAME=valueOfVariableInLinkedContainer
>
第二行的echo
输出为空。我期望得到的是:
> OTHER_ENV_VAR_NAME=valueOfVariableInLinkedContainer
> valueOfVariableInLinkedContainer
printenv
给出了正确的值,但传递给echo
的值不正确。我建议在我的主机上评估值,而不是在容器内。因此,我尝试在echo命令周围使用单引号和双引号,并使用$
转义\
但没有成功。
我的主机也是Ubuntu。
答案 0 :(得分:2)
为了在docker run的同一个CMD中管道和回显,使用shell命令(sh -c
)
docker run --rm --link other ubuntu sh -c 'printenv | grep OTHER_ENV_VAR_NAME && echo ${OTHER_ENV_VAR_NAME}'
如果不这样做,管道grep和echo将在主机 shell(执行docker run
的shell)中发生。
这不会回应任何事情,因为环境值仅在docker会话中设置。