使用的缺点docker exec
是它需要一个正在运行的容器,因此docker inspect -f
如果不确定容器是否正在运行,可能会很方便。
范例#1。在指定的容器中输出以空格分隔的环境变量列表:
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{$value}} {{end}}' container_name
输出将如下所示:
ENV_VAR1=value1 ENV_VAR2=value2 ENV_VAR3=value3
范例#2。在换行符上输出每个环境变量和grep
所需的项目,例如,可以像这样检索mysql容器的设置:
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{println $value}}{{end}}' \
container_name | grep MYSQL_
将输出:
MYSQL_PASSWORD=secret
MYSQL_ROOT_PASSWORD=supersecret
MYSQL_USER=demo
MYSQL_DATABASE=demodb
MYSQL_MAJOR=5.5
MYSQL_VERSION=5.5.52
范例#3。让我们修改上面的示例,以获取可以直接在脚本中使用的bash友好输出:
docker inspect -f \
'{{range $index, $value := .Config.Env}}export {{$value}}{{println}}{{end}}' \
container_name | grep MYSQL
将输出:
export MYSQL_PASSWORD=secret
export MYSQL_ROOT_PASSWORD=supersecret
export MYSQL_USER=demo
export MYSQL_DATABASE=demodb
export MYSQL_MAJOR=5.5
export MYSQL_VERSION=5.5.52
如果您想更深入,请转到Go的文本/模板包文档,其中包含格式的所有详细信息。