2017-06-24 3 views
6

In Anbetracht der folgenden Liste von Bildern, wie würde ich das neueste der Tags abrufen? (0.0.268) Ich denke, es ist möglich, mit einer Kombination von bash und Go-Vorlage, aber ich kann es nicht herausgefunden ...Wie wird das neueste Tag für ein Bild abgerufen?

my-Bild 0.0.1 fd704b8d675e
my-Bild 0.0.2 9294a62d2c38
my-Bild 0.0.9 325326e8f7a2
my-Bild 0.0.10 b97c64b198d9
my-Bild 0.0.268 8a89b5fac348

Zum Beispiel:
Durch den folgenden Befehl ausführen (bx cr ist ein IBM Bluemix CLI):

tagsList=$(bx cr images --format "{{if (eq .Repository \"myregistry/mynamespace/myimage\")}} {{.Tag}}{{end}}") 

Das Echo $tagsList ist:

0.0.10 0.0.12 0.0.13 0.0.14 0.0.15 0.0.3 0.0.4 0.0.5 0.0.7 

Aus dieser Liste ich den neuesten Tag benötigen, die 0.0.15 ist.

+1

könnten Sie das verwenden, bevor die Filter ein Bild vor oder nach einer bestimmten Zeit erstellt zu holen. https://docs.docker.com/engine/reference/commandline/images/#filtering –

+1

Es muss dynamischer sein ... Ich kann keinen Zeitrahmen angeben. –

+0

Ich denke, ich habe eine Lösung. Wird meine Antwort aktualisieren –

Antwort

5

den letzten Tag Um <major_version>.<medium_version>.<minor_version>:

datei.txt:

my-image 0.10.1 fd704b8d675e 
my-image 2.0.2 9294a62d2c38 
my-image 0.0.9 325326e8f7a2 
my-image 10.0.3 b97c64b198d9 
my-image 10.0.10 b97c64b198d9 
my-image 0.0.268 8a89b5fac348 
my-image 10.0.6 b97c64b198d9 

last_tag.sh:

#!/usr/bin/env bash 

cut -d' ' -f2 file.txt \ 
    | sort -t . -k1,1 -k2,2 -k3,3 -nr \ 
    | head -1 

-t .: präzise das Trennzeichen .
-k n,n: Sortieren für die Spalte n th (1-basiert)
-nr: Sortiernummer (kein String) in abnehmender Reihenfolge
-k1,1 -k2,2 -k3,3: Sortieren, um Spalte 1 , Spalte 2, Spalte 3, , dh Hauptversion, mittlere Version dann Nebenversion.

Ausgang:

10.0.10 
+2

Danke euch beiden! –

Verwandte Themen