在内联运行命令中访问容器环境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会话中设置。