“docker run”命令用于评估容器内的bash $变量

时间:2018-02-15 16:41:59

标签: bash docker environment-variables containers

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

E.g:

$ SOMEONE=host
$ docker run --env SOMEONE=busybox busybox echo "Hello $SOMEONE"
Hello host

如何输出Hello busybox

1 个答案:

答案 0 :(得分:3)

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

  • 要确保 内部shell,可以进行替换(echo本身没有任何此类功能!),我们需要明确地调用sh -c;否则,Docker将直接在容器内调用execlp("echo", "echo", "$SOMEONE", NUL),而实际上并没有进行任何替换。

因此:

docker run --env SOMEONE=busybox busybox sh -c 'echo "Hello $SOMEONE"'