Der Nachteil docker exec
der Verwendung ist, dass es ein läuft Behälter erfordert, so könnte docker inspect -f
nützlich sein, wenn Sie ein Container nicht sicher sind, ausgeführt wird.
Beispiel # 1. Ausgabe einer Liste durch Leerzeichen getrennte Umgebungsvariablen im angegebenen Container:
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{$value}} {{end}}' container_name
die Ausgabe wie folgt aussehen:
ENV_VAR1=value1 ENV_VAR2=value2 ENV_VAR3=value3
Beispiel # 2.
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{println $value}}{{end}}' \
container_name | grep MYSQL_
ausgeben wird: Ausgang jeder env var auf neue Linie und grep
die benötigten Elemente, beispielsweise die Einstellungen des mysql-Container wie dies könnte abgerufen
MYSQL_PASSWORD=secret
MYSQL_ROOT_PASSWORD=supersecret
MYSQL_USER=demo
MYSQL_DATABASE=demodb
MYSQL_MAJOR=5.5
MYSQL_VERSION=5.5.52
Beispiel # 3. Nehmen wir das Beispiel oben ändern, um eine bash freundliche Ausgabe zu erhalten, die direkt in Ihre Skripte verwendet werden können:
docker inspect -f \
'{{range $index, $value := .Config.Env}}export {{$value}}{{println}}{{end}}' \
container_name | grep MYSQL
AUSGABE:
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
Wenn Sie tiefer tauchen, dann gehen Sie zu Go's text/template Paket-Dokumentation mit allen Details des Formats.
Gibt es einen Grund, warum nicht env und grep verwenden möchten? – aisbaa
Ich brauche nur den Wert. Wenn ich das richtig verstehe, müsste ich die Ausgabe des Grep-Calls parsen, und das würde ich lieber vermeiden. – Citronen
Ich hatte gedacht, dass Variable, die in einer exec-Sitzung gesetzt wurde, nicht den primären Prozess oder nachfolgende exec-Sitzungen beeinflusst? –