如何使用docker run
在docker容器中运行命令,其中bash变量在内容器中进行评估?
E.g:
$ SOMEONE=host
$ docker run --env SOMEONE=busybox busybox echo "Hello $SOMEONE"
Hello host
如何输出Hello busybox
?
答案 0 :(得分:3)
为了防止外壳发生替换,需要使用单引号,而不是双引号。
要确保 内部shell,可以进行替换(echo
本身没有任何此类功能!),我们需要明确地调用sh -c
;否则,Docker将直接在容器内调用execlp("echo", "echo", "$SOMEONE", NUL)
,而实际上并没有进行任何替换。
因此:
docker run --env SOMEONE=busybox busybox sh -c 'echo "Hello $SOMEONE"'