Comment obtenir la variable ENV lors de l'exécution de Docker Inspect
Je me demande comment j'obtiens une variable d'Environnement de docker inspecter.
quand je lance
docker inspect -f "{{.Config.Env.PATH}} " 1e2b8689cf06
j'ai le
FATA[0000] template: :1:9: executing "" at <.Config.Env.PATH>: can't evaluate field PATH in type interface {}
source d'informationauteur Trind
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir directement avec une commande similaire à
qui montre pour moi
Vous remarquerez que le remplacement de la
1
par0
commedonne
En fait, j'avais remarqué ce qui suit pour les différents
docker inspect
d'une façon plus générale, pour plus de précision d'affichageRemarque:
docker inspect -f
fonctionne et qui est la plus courte, bien sûr, j'ai posté les "vieux" de la syntaxe.Cela ne semble pas être possible, vous pouvez lister les variables d'environnement, mais pas seulement.
De la docker s'engager doc
Vous pouvez l'imprimer:
(en)
Ajouter un
grep PATH
et vous pourriez obtenir uniquement lesPATH=xxx
valeur.user2915097 mentionne dans les commentaires jq, un léger et flexible de ligne de commande JSON processeurutilisé dans l'article "Docker Inspecter Modèle De Magie " pour formater joliment la nécessaire domaine:
Une pratique qui ne nécessite pas d'outils externes:
Certes ce n'est pas à l'aide de
docker inspect
mais toujours..J'ai trouver de mieux analyser pour la variable d'environnement nom votre intérêt de s'appuyer sur l'index.
Pour ceux qui recherchent un modèle uniquement solution à l'aide de seulement docker inspecter (lorsque vous ne pouvez pas simplement shell et grep, etc.), l'exemple suivant fonctionne (comme de docker 1.11+):
Exemple de conteneur:
Extrait
SOME_VAR
avec:Si vous voulez être en mesure de vérifier le succès de l'opération, vous pourriez aller avec:
Cela va ouvrir un shell interne est exécuté et retour selon si trouvé:
Cette solution nécessite
grep
(avec l'option-P),sed
et la capacité de pipeline, mais résout les 2 problèmes que la plupart des autres solutions ne le sont pas.Tout d'abord, il effectue la correspondance exacte sur le nom de la variable. Par exemple, si vous avez des variables suivantes:
Vous allez recevoir
value
.Deuxièmement, il gère correctement les cas où la valeur de la variable contient
=
caractères. Par exemple:Va bien obtenir vous
-Drebel.stats=false
au lieu defalse
.