Недоліком використання 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 var у новий рядок та 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. Давайте модифікуємо приклад вище, щоб отримати вигідний вихід, який можна безпосередньо використовувати у ваших сценаріях:
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 з усіма деталями формату.