Docker, wie man den Repository-Namen ändert oder das Image umbenennt?


568

Ich versuche, den Repository-Namen des Bildes zu ändern:

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
server              latest              d583c3ac45fd        26 minutes ago      685.5 MB

Daher möchte ich den Namen serverin etwas ändern wie myname/server:

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
myname/server       latest              d583c3ac45fd        26 minutes ago      685.5 MB

Wie kann ich das machen?


5
Was ist der Unterschied zwischen REPOSITORY und TAG?
Charlie Parker

@CharlieParker TAG wird normalerweise für die Version des Repositorys verwendet - z. B. Repository Mariadb mit Tag 10.1
Ian Hunter

Befolgen Sie die Syntax vom Docker-Tag --help cmd unten:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
anandchaugule

Ich möchte die Änderung des gesamten Repository-Namens in Dockerhub .. Schade, dass nicht möglich ist :(
Gefahr89

Antworten:


1034
docker image tag server:latest myname/server:latest

oder

docker image tag d583c3ac45fd myname/server:latest

Tags sind nur für Menschen lesbare Aliase für den vollständigen Bildnamen ( d583c3ac45fd...).

Sie können also so viele davon mit demselben Bild verknüpfen, wie Sie möchten. Wenn Ihnen der alte Name nicht gefällt, können Sie ihn entfernen, nachdem Sie ihn erneut markiert haben:

docker rmi server

Das wird nur die entfernen alias/tag. Da d583c3ac45fdes andere Namen hat, wird das eigentliche Bild nicht gelöscht.


das funktioniert bei mir nicht Wenn ich das Docker-Tag myname / server ausführe: Das neueste Docker hält es für angebracht, docker.io voranzustellen, sodass das Image-Tag docker.io/myname/server:latest lautet.
Scott

Was ist Ihr Host-Betriebssystem und Ihre Docker-Version? Ich vermute, dass etwas an Ihrer Docker-Installation die Tag-Anweisung ändert.
Andy

25
Ich finde auch, dass das Weglassen :latestin Ordnung ist, wenn nur ein Tag für den Bildnamen auf dem Spiel steht. Es ist jedoch sehr eigenwillig, dass der Bildname REPOSITORYin der Ausgabe von (und nicht als Bild) bezeichnet wird, docker imageswährend er mit einem Befehl namens "while" umbenannt werden muss, tagwährend TAGin dieser Ausgabe eine separate Spalte vorhanden ist. Ich hoffe, sie
räumen

Beachten Sie, dass Sie wahrscheinlich docker image tag from_server:version to_server:versionwie hier beschrieben möchten : docs.docker.com/engine/reference/commandline/image_tag
Traveller

20

Als Abkürzung können Sie laufen:

docker tag d58 myname/server:latest

Wobei d58die ersten 3 Zeichen der BILD-ID stehen, in diesem Fall ist das alles, was Sie brauchen.

Schließlich können Sie das alte Bild wie folgt entfernen:

docker rmi server

1
In meinem Fall hängt die Verwendung der vollständigen ID irgendwie an: spätestens bis zum Ende und gibt einen Fehler aus, der besagt, dass sie nicht gefunden werden konnte. Die ersten 3 Buchstaben funktionieren viel besser. (dh docker tag d583c3ac45fd myname/server:latestfunktioniert nicht, während docker tag d58 myname/server:latestfunktioniert.)
John Hamilton

8

Vor kurzem musste ich einige Bilder aus der Docker-Registrierung (docker.mycompany.com) nach Artifactory (docker.artifactory.mycompany.com) migrieren.

docker pull docker.mycompany.com/something/redis:4.0.10
docker tag docker.mycompany.com/something/redis:4.0.10 docker.artifactory.mycompany.com/something/redis:4.0.10
docker push docker.artifactory.mycompany.com/something/redis:4.0.10

6
docker tag CURRENT_IMAGE_NAME DESIRED_IMAGE_NAME

2
Sicher, das wird funktionieren, aber Sie haben dieser Person nicht erklärt, warum. Sie scheinen verwirrt darüber zu sein, was ein Docker-Tag ist ... Vorausgesetzt, sie wussten, wie man Docker -h verwendet
Adam Kaplan

1

Die akzeptierte Antwort eignet sich hervorragend für einzelne Umbenennungen. Hier finden Sie jedoch eine Möglichkeit, mehrere Bilder mit demselben Repository gleichzeitig umzubenennen (und die alten Bilder zu entfernen).

Wenn Sie alte Bilder des Formulars haben:

$ docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
old_name/image_name_1    latest              abcdefghijk1        5 minutes ago      1.00GB
old_name/image_name_2    latest              abcdefghijk2        5 minutes ago      1.00GB

Und du willst:

new_name/image_name_1
new_name/image_name_2

Dann können Sie diese ( die Haftung verbessernde in Verwendung OLD_REPONAME, NEW_REPONAMEund je TAGnach Bedarf):

OLD_REPONAME='old_name'
NEW_REPONAME='new_name'
TAG='latest'

# extract image name, e.g. "old_name/image_name_1"
for image in $(docker images | awk '{ if( FNR>1 ) { print $1 } }' | grep $OLD_REPONAME)
do \
  OLD_NAME="${image}:${TAG}" && \
  NEW_NAME="${NEW_REPONAME}${image:${#OLD_REPONAME}:${#image}}:${TAG}" && \
  docker image tag $OLD_NAME $NEW_NAME && \
  docker rmi $image:${TAG}  # omit this line if you want to keep the old image
done


-7

Docker run -it --name NEW_NAME Bestehender_Name

So ändern Sie den vorhandenen Bildnamen.


5
Dadurch wird ein Container mit dem neuen Namen erstellt. Es passiert nichts , mit dem Bildnamen.
Jwodder
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.