gpt4 book ai didi

Docker:无法设置环境变量

转载 作者:行者123 更新时间:2023-12-02 18:46:30 24 4
gpt4 key购买 nike

即使我设置了环境变量 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

最佳答案

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

这就是所谓的“变量扩展”,我引用答案@larsks已给出here :

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

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

$ docker run -it alpine sh -c 'echo $HOME'
/root
  1. 它打印主机的 $HOME 变量,而不是容器的变量。在您的情况下 $FOO 不会在主机上退出,因此它会打印一个空行
  2. 它打印 $HOME (像字符串一样)
  3. 这有效,并打印容器的 $HOME 变量

您的案例示例:

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

谢谢@vmonteco用于指出用于调试的docker检查。如果您想了解有关容器实际执行的操作的更多信息,下面是针对前面讨论的 3 种不同情况设置的 CMD:

  1. "Cmd": ["echo"]
  2. "Cmd": ["echo","$FOO"]
  3. "Cmd": ["sh","-c","echo $FOO"]

关于Docker:无法设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48702422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com