Docker exec 引用变量

Ben*_*Ben 8 bash escaping docker dockerfile

我想知道是否有办法做到这一点

假设dockerfile包含这一行,它指定了可执行文件的路径

ENV CLI /usr/local/bin/myprogram

我希望能够通过exec命令使用 ENV 变量名调用这个程序。

例如 docker exec -it <my container> 'echo something-${CLI} 期待 something-/usr/local/bin/myprogram

然而,返回:

OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"${CLI} do something\": executable file not found in $PATH": unknown

Ben*_*Ben 13

好的,我找到了一种方法,您需要做的就是使用 bash 评估命令

docker exec -it <container id> bash -c 'echo something-${CLI}'

返回 something-/usr/local/bin/myprogram

如果CLI容器中还没有设置环境变量,也可以传入如:

docker exec -it -e CLI=/usr/local/bin/myprogram <container id> bash -c 'echo something-${CLI}'

查看帮助文件:

 docker exec --help

 Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

 Run a command in a running container

Options:
-d, --detach               Detached mode: run command in the background
-e, --env list             Set environment variables
....
Run Code Online (Sandbox Code Playgroud)