Обратной стороной использования 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. Выведите каждую переменную env в новой строке и 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 со всеми подробностями о формате.