在内联运行命令中访问容器环境variables
这个任务非常简单,我知道一个环境variables是(将)在容器中设置,我想在我的内联运行命令中使用它。 但是,该值不会被填充:
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
的值是不正确的。 我build议价值评估在我的主机上,而不是在容器内。 因此,我尝试在echo命令周围使用单引号和双引号,并且没有成功地转义$
using。
我的主机也是Ubuntu。
为了在docker运行的同一CMD中pipe道和回显,使用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会话中设置。