Angenommen, ich habe ein Bild, als das ich markieren möchte 0.10.24
(in meinem Fall ist es ein Bild, das Node.js 0.10.24 enthält). Ich habe dieses Image mit einer Docker-Datei erstellt und ausgeführt docker build
und ein Tag mithilfe des -t
Parameters bereitgestellt .
Ich gehe davon aus, dass ich eines Tages zusätzliche Versionen dieses Bildes haben werde, also werde ich den Prozess erneut ausführen, nur mit einem anderen Tag-Namen.
So weit, ist es gut. Das funktioniert super und gut und alles ist gut.
Aber, und hier fangen Probleme an, ich möchte auch immer die neueste Image-Anzeige latest
zusätzlich haben. Ich muss also dem gleichen Bild zwei Namen geben.
Wie mache ich das? Muss ich wirklich docker build
genau dieselbe Version erneut ausführen , aber dieses Mal ein anderes Tag verwenden, gibt es eine bessere Option?
Antworten:
Sie können beim Erstellen des Bildes mehrere Tags verwenden:
Referenz: https://docs.docker.com/engine/reference/commandline/build/#tag-image-t
quelle
:latest
Teil auch weglassen, da dies die Standardeinstellung ist:docker build -t whenry/fedora-jboss -t whenry/fedora-jboss:v2.1 .
Sobald Sie Ihr Bild haben, können Sie verwenden
Erstellen und kennzeichnen Sie das Bild mit creack / node: latest
Fügen Sie ein neues Tag hinzu
Sie können dies verwenden und den Teil -t vom Build überspringen
quelle
creack/node:latest
, das Sie dann mitdocker tag creack/node:latest creack/node:0.10.24
REV=$(hg identify --num)
docker tag -f $ID creack/node:latest
das Tagging mit dem neuesten erzwingen (falls ein vorheriges Bild bereits das neueste war)Hier ist mein Bash-Skript
Sie können dann Bilder ohne Tags entfernen, wenn Sie dieselbe Version mit neu erstellt haben
Verknüpfung
oder
oder
Bereinigungsbefehle :
Docker 1.13 führt Bereinigungsbefehle ein. So entfernen Sie alle nicht verwendeten Container, Images, Netzwerke und Volumes:
oder einzeln:
quelle
awk '{print $3}'
funktioniert, aber nichtawk "{print $3}"
so, der Befehl, den ich benutze, istdocker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
-f
Option existiert nicht mehr indocker tag
. Verwendung ist nurdocker tag IMAGE[:TAG] IMAGE[:TAG]
docker push
nachdocker build & docker run
, pushen Sie mit:latest
oder${VERSION}
?ID=$(docker build -t creack/node .)
funktioniert seitdem nicht mehr bei mirID
es die Ausgabe des Builds enthält.Also benutze ich dieses kleine BASH-Skript:
quelle
-q
/--quiet
zubuild
wie in erwähnt diese AntwortGrep einfach die ID von
docker images
:Benötigt keine temporäre Datei und liefert die vollständige Build-Ausgabe . Sie können es weiterhin in
/dev/null
eine Protokolldatei umleiten .quelle
Variation von Aarons Antwort. Verwendung von sed ohne temporäre Dateien
quelle