热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Docker:无法设置env变量

如何解决《Docker:无法设置env变量》经验,为你挑选了1个好方法。

即使我已经设置了env var FOO也没有显示:

$ docker run -e FOO=foofoo ubuntubr echo $PATH
/bin:/usr/ucb:/usr/bin:/usr/sbin:/sbin:/usr/etc:/etc
$ docker run -e FOO=foofoo ubuntubr echo $FOO
$ 

我做错了什么?

但我能够修改路径:

docker run -e PATH=/nopath ubuntubr echo $PATH
docker: Error response from daemon: OCI runtime create failed: container_linux.go:296: starting container process caused "exec: \"echo\": executable file not found in $PATH": unknown.
ERRO[0000] error waiting for container: context canceled 

那为什么不是docker run -e FOO=foofoo ubuntubr echo $FOO不打印foofoo



1> tgogos..:

变量已设置.您尝试验证它们已设置的方式是错误的.

它被称为"变量扩展",我引用@larsks在这里给出的答案:

$ docker run -it alpine echo $HOME
/home/lars

$ docker run -it alpine echo '$HOME'
$HOME

$ docker run -it alpine sh -c 'echo $HOME'
/root

    它打印$HOME主机的变量,而不是容器的变量.在您的情况下$FOO,不会在主机上退出,因此它会打印一个空行

    它打印$HOME(像一个字符串)

    这工作,并打印$HOME容器的变量

案例示例:

$ docker run -e FOO=foofoo alpine sh -c 'echo $FOO'
foofoo

感谢@vmonteco指出要docker inspect进行调试.如果您想了解有关容器实际执行情况的更多信息,请CMD参阅前面讨论的3种不同情况的设置:

    "Cmd": ["echo"]

    "Cmd": ["echo","$FOO"]

    "Cmd": ["sh","-c","echo $FOO"]


推荐阅读
author-avatar
依然2502927101
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有