“docker run”命令来评估容器内的 bash $variable

Rob*_*low 2 bash containers environment-variables docker

如何在 docker 容器内运行命令,使用docker run,其中在容器评估 bash 变量?

例如:

$ SOMEONE=host
$ docker run --env SOMEONE=busybox busybox echo "Hello $SOMEONE"
Hello host
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它输出Hello busybox

Cha*_*ffy 9

  • 为了防止从外壳发生替换,需要使用单引号,而不是双引号。

  • 为了确保有内壳是可以做的替代品(echo没有任何这样的功能本身!),我们需要显式调用sh -c; 否则,Docker 将直接execlp("echo", "echo", "$SOMEONE", NUL)在容器内部调用,实际上并没有进行任何替换。


因此:

docker run --env SOMEONE=busybox busybox sh -c 'echo "Hello $SOMEONE"'
Run Code Online (Sandbox Code Playgroud)