Minusem korzystania docker exec
jest to, że wymaga działa pojemnik, tak docker inspect -f
może być przydatne, jeśli nie masz pewności, pojemnik jest uruchomiony.
Przykład # 1. wyjściowy lista przestrzeni oddzielonych zmienne środowiska w określonym zbiornika:
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{$value}} {{end}}' container_name
wyjście będzie wyglądać następująco:
ENV_VAR1=value1 ENV_VAR2=value2 ENV_VAR3=value3
Przykład # 2. Wyjście każdy var env na nowej linii i grep
potrzebne elementy, na przykład ustawienia pojemnika MySQL można pobrać tak: wyjście
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{println $value}}{{end}}' \
container_name | grep MYSQL_
wola:
MYSQL_PASSWORD=secret
MYSQL_ROOT_PASSWORD=supersecret
MYSQL_USER=demo
MYSQL_DATABASE=demodb
MYSQL_MAJOR=5.5
MYSQL_VERSION=5.5.52
Przykład # 3. Niech zmodyfikować powyższy przykład, aby uzyskać przyjazne bash wyjście, które można bezpośrednio wykorzystać w skryptach:
docker inspect -f \
'{{range $index, $value := .Config.Env}}export {{$value}}{{println}}{{end}}' \
container_name | grep MYSQL
wyjście wola:
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
Jeśli chcesz nurkować głębiej, a następnie przejść do Idź do text/template dokumentacji pakietu z wszystkimi szczegółami formatu.
Czy istnieje powód, dla którego nie chciałbyś używać env i grep? – aisbaa
Po prostu potrzebuję wartości. Jeśli dobrze zrozumiem, będę musiał przeanalizować wynik wywołania grep i wolałbym tego uniknąć. – Citronen
Myślałem, że zmienna, która została ustawiona w sesji exec nie wpływa na proces podstawowy lub kolejne sesje exec? –