La desventaja de usar docker exec
es que requiere un contenedor en ejecución , por lo que docker inspect -f
puede ser útil si no está seguro de que un contenedor se esté ejecutando.
Ejemplo 1. Salida de una lista de variables de entorno separadas por espacios en el contenedor especificado:
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{$value}} {{end}}' container_name
la salida se verá así:
ENV_VAR1=value1 ENV_VAR2=value2 ENV_VAR3=value3
Ejemplo # 2. Imprima cada variable de entorno en una nueva línea y grep
los elementos necesarios, por ejemplo, la configuración del contenedor mysql podría recuperarse así:
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{println $value}}{{end}}' \
container_name | grep MYSQL_
dará salida:
MYSQL_PASSWORD=secret
MYSQL_ROOT_PASSWORD=supersecret
MYSQL_USER=demo
MYSQL_DATABASE=demodb
MYSQL_MAJOR=5.5
MYSQL_VERSION=5.5.52
Ejemplo # 3. Modifiquemos el ejemplo anterior para obtener una salida amigable de bash que se pueda usar directamente en sus scripts:
docker inspect -f \
'{{range $index, $value := .Config.Env}}export {{$value}}{{println}}{{end}}' \
container_name | grep MYSQL
dará salida:
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
Si desea profundizar más, vaya a la documentación del paquete de texto / plantilla de Go con todos los detalles del formato.