Registry/Repository:Tags¶
Über Repositories in einer (Docker) Registry können unterschiedliche Images aus einem Image-Fundus bereitgestellt werden.
Die Tags spezifizieren die genaue Version des Image. Im Grunde sollte man - auch für spätere Umsetzungen mit eigenen Registries - die komplette technische Beschreibung - den Pfad zu einem Image - wie folgt kennen.
Die Pfade werden dann beim pull | push genutzt.
Registry|IP : Port / Vendorname/Repository : Tag # Struktur / Erkl.
----------- ---- --------------------- ---
ubuntu # Official Image
ubuntu/apache2 # ubuntu hier Vendor
kasmweb/core-ubuntu-jammy : 1.15.0-rolling # spezifischer Tag
hub.example.org : 5000 / joebrandes/myubuntu : 1.0 # Private Registry
Was passiert bei einem docker pull ubuntu?
Registry (oder IP): Standard-Registry der Docker Umgebung wird genutzt
Die Default Domain docker.io (aka „Docker Hub“) ist hart verdrahtet. Das soll bewirken, dass der obige Pull auf allen Docker Systemen dieselbe Aktion durchführt. Im Enterprise Segment haben da manche Firmen (siehe z.B. Red Hat) andere Vorstellungen ;-).
Siehe auch: in
docker system infotaucht Registry-Pfad nicht mehr auf!Port: Standard-Port bzw. nach Konfiguration Privater Registries
Vendorname/Repository: hier nur Repository weil Official Image!
Als Pfad zum Docker Hub: https://hub.docker.com/_/ubuntu (den Unterstrich beachten)
Tag: Wenn der Tag weggelassen wird, dann versucht das System den Tag latest zu nutzen!
Beispielhaft Übersicht (online - Images Centos): https://hub.docker.com/_/ubuntu/tags
Hinweis
Auf dieser Übersicht sahen angemeldete Docker Hub User auch immer die Sicherheitsanalysieren zu den Images! Über Docker Scout stehen diese Infos heute (wieder) Allen zur Verfügung.
Das lässt sich auch in der Kommandozeile zaubern - allerding will Docker das eigentlich nicht! Man soll doch bitte die Weboberfläche nutzen.
Für Registry Version 2:
# Einfache Abrage per wget und grep
wget -q -O - "https://hub.docker.com/v2/namespaces/library/repositories/debian/tags?page_size=100" |
grep -o '"name": *"[^"]*' |
grep -o '[^"]*$'
# statt grep jetzt mit jq - sollte eh installiert sein
wget -q -O - "https://hub.docker.com/v2/namespaces/library/repositories/debian/tags?page_size=100" |
jq -r '.results[].name'
# bei nicht offiziellen Images wird der Pfad entsprechend angepasst:
wget -q -O - "https://hub.docker.com/v2/namespaces/kasmweb/repositories/dekstop/tags?page_size=100" |
jq -r '.results[].name'
# Anzahl der Tags:
wget -q -O - "https://hub.docker.com/v2/namespaces/kasmweb/repositories/dekstop/tags?page_size=100" |
jq -r '.count'
# Curl version mit Schleife
# ===================================================
# ließe sich als function oder shell-script erweitern
i=0
while [ $? == 0 ]
do
i=$((i+1))
curl https://registry.hub.docker.com/v2/repositories/library/ubuntu/tags/?page=$i 2>/dev/null | jq '."results"[]["name"]'
done
Für Registry Version 1:
(Anm.: Tool jq genutzt für lesbare Darstellung)
curl -sL https://index.docker.io/v1/repositories/library/centos/tags | jq '.[].name'
"latest"
"5"
"5.11"
"6"
"6.10"
"6.6"
"6.7"
"6.8"
"6.9"
"7"
"7.0.1406"
"7.1.1503"
"7.2.1511"
"7.3.1611"
"7.4.1708"
"7.5.1804"
"7.6.1810"
...
Für eigene Images gerne ein eigenes Präfix/Vendorname für die Images nutzen:
joebrandes/alpine:15.0