HOWTO · Docker

Benennen Sie ein Image in Docker um

In diesem Artikel wird erläutert, wie Sie ein Image mit Docker umbenennen.

Auf dieser Seite

Docker benennt ein Image nicht direkt um. Um einem vorhandenen Image ohne Neuerstellung einen weiteren Repository-Namen oder Tag zu geben, fügen Sie mit docker image tag (auch als docker tag verfügbar) eine zweite Referenz hinzu. Quelle und Ziel verweisen anschließend auf dieselbe Image-ID. Nachdem Sie die neue Referenz überprüft haben, können Sie die alte entfernen.

Namen und Tags von Docker-Images verstehen

Eine Image-Referenz hat üblicherweise die Form [HOST[:PORT]/]NAMESPACE/REPOSITORY[:TAG]. Registry-Host und Namespace sind optional. Wenn Sie keinen Tag angeben, verwendet Docker latest. Ein Tag ist eine lesbare Referenz auf ein Image und keine zusätzliche Kopie seiner Layer. Durch das Ändern eines Tags ändern sich die Namen, unter denen Sie auf das Image verweisen können; ein Container wird dadurch weder umbenannt noch das Image neu erstellt.

Zum Beispiel können local-api:latest und registry.example/team/api:1.0 zwei Referenzen auf dasselbe lokale Image sein. Ersetzen Sie diese Beispielreferenzen durch Namen, die zu Ihrem Repository und Ihrer Registry passen. Wenn Sie lokal einen Registry-Namen hinzufügen, wird das Image nicht hochgeladen. Verwenden Sie bei Bedarf zusätzlich docker image push, um es zu veröffentlichen.

Einem Image einen neuen Tag hinzufügen

Verwenden Sie den vorhandenen Image-Namen als Quelle und die gewünschte Referenz als Ziel:

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

source='local-api:latest'
target='registry.example/team/api:1.0'
printf 'docker image tag %s %s\n' "$source" "$target"

Führen Sie dieses Beispiel aus, um den Befehl mit den Beispielreferenzen auszugeben. Die unveränderte Befehlsvorlage und ihre englischen Beispielbezeichnungen bleiben erhalten. Um Ihrem Image einen neuen Tag zuzuweisen, führen Sie docker image tag local-api:latest registry.example/team/api:1.0 in einer Shell aus, in der Docker auf dieses Image zugreifen kann. Bei Erfolg gibt der Befehl üblicherweise keinen Text aus; ein Exit-Status ungleich null bedeutet, dass Docker den Tag nicht zuweisen konnte. Das oben ausgegebene Beispiel ist lediglich eine Befehlsvorlage und stellt keine Verbindung zu einem Docker-Daemon her.

Sie können auch eine Image-ID als Quelle verwenden: docker image tag IMAGE_ID registry.example/team/api:1.0. Mit docker image ls --no-trunc können Sie IDs anzeigen. Eine verkürzte ID muss das gewünschte Image eindeutig identifizieren; gehen Sie nicht davon aus, dass eine bestimmte Zeichenanzahl genügt. Mit der vollständigen ID vermeiden Sie Mehrdeutigkeiten.

Den neuen Tag überprüfen und den alten entfernen

Mit docker image ls können Sie passende Referenzen auflisten. Um die Image-IDs zu vergleichen, prüfen Sie jede Referenz mit docker image inspect --format '{{.Id}}' local-api:latest und docker image inspect --format '{{.Id}}' registry.example/team/api:1.0. Stimmen die IDs überein, verweisen beide Namen auf dasselbe lokale Image. Die Befehle setzen voraus, dass die Images im abgefragten Docker-Daemon vorhanden sind.

Nachdem Sie die neue Referenz bestätigt haben, entfernen Sie den alten Namen mit docker image rm local-api:latest. Damit wird diese Referenz entfernt. War sie die letzte Referenz auf das Image, kann Docker das Image auch aus dem lokalen Speicher entfernen. Lassen Sie einen weiteren Tag bestehen, wenn Sie eine benannte Referenz behalten möchten, und prüfen Sie vor dem Ausführen, welches Image Sie entfernen.

Häufige Fragen und Einschränkungen

Wird das Image durch das Ändern des Tags neu erstellt oder hochgeladen? Nein. Ein neuer Tag erzeugt eine lokale Referenz. Dadurch werden weder die Image-Inhalte neu erstellt noch das Image in eine Registry übertragen. Erstellen und Hochladen sind separate Vorgänge.

Sind ein Image und ein Container dasselbe? Nein. Ein Image ist eine Vorlage, aus der Container erstellt werden. Das Ändern eines Image-Tags benennt keine daraus erstellten Container um. Containernamen lassen sich separat mit docker rename verwalten.

Warum findet Docker die Quelle nicht? Prüfen Sie die Schreibweise und den Tag und vergewissern Sie sich, dass das Image im Daemon vorhanden ist, den Ihr Docker-Kontext auswählt. Eine kurze Image-ID muss das gewünschte Image eindeutig identifizieren. Wenn der Zielname eine Registry enthält, beachten Sie, dass das Tagging allein das Image nicht veröffentlicht.