Wadą używania docker exec
jest to, że wymaga działającego kontenera, więc docker inspect -f
może być przydatne, jeśli nie masz pewności, że kontener działa.
Przykład 1. Wyprowadź listę rozdzielonych spacjami zmiennych środowiskowych w określonym kontenerze:
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{$value}} {{end}}' container_name
wynik będzie wyglądał następująco:
ENV_VAR1=value1 ENV_VAR2=value2 ENV_VAR3=value3
Przykład nr 2. Wypisz każdą zmienną env w nowej linii i grep
potrzebne elementy, na przykład ustawienia kontenera mysql można pobrać w następujący sposób:
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{println $value}}{{end}}' \
container_name | grep MYSQL_
wyświetli:
MYSQL_PASSWORD=secret
MYSQL_ROOT_PASSWORD=supersecret
MYSQL_USER=demo
MYSQL_DATABASE=demodb
MYSQL_MAJOR=5.5
MYSQL_VERSION=5.5.52
Przykład nr 3. Zmodyfikujmy powyższy przykład, aby uzyskać przyjazne dla basha wyjście, które może być bezpośrednio użyte w twoich skryptach:
docker inspect -f \
'{{range $index, $value := .Config.Env}}export {{$value}}{{println}}{{end}}' \
container_name | grep MYSQL
wyświetli:
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 zagłębić się głębiej, przejdź do dokumentacji pakietu tekstowego / szablonu Go ze wszystkimi szczegółami formatu.