946 Stimmen

Docker, wie Ändere ich den Repository-Namen oder benenne das Bild um?

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

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
server              latest              d583c3ac45fd        vor 26 Minuten      685.5 MB

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

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
myname/server       latest              d583c3ac45fd        vor 26 Minuten      685.5 MB

Wie kann ich das tun?

15voto

Deepanshu Mehta Punkte 257

Einfach

Ändern Sie den Bildnamen (oder Repository-Namen) mit IMAGE ID:

docker tag

4voto

User Punkte 1044
docker image tag #imageId myname/server:latest

Dies funktioniert für mich

4voto

Gupta Punkte 7043

Wie benenne ich ein Bild um?

Um ein Bild zu kopieren oder das vorhandene Bild umzubenennen, müssen Sie lediglich ein neues Tag oder Repository aus dem vorhandenen erstellen. Dies können Sie mit dem docker tag Befehl tun.


Syntax/Befehl: docker tag QUELLE_BILD[:TAG] ZIEL_BILD[:TAG]

#=> docker images
REPOSITORY                    TAG                   IMAGE ID       CREATED        SIZE
ubuntu-git                    latest                c0aaaba33a60   18 Stunden ago   208MB

docker tag ubuntu-git:latest ubuntu-git:latest-neues-tag

#=> docker images
REPOSITORY                    TAG                   IMAGE ID       CREATED        SIZE
ubuntu-git                    latest                c0aaaba33a60   18 Stunden ago   208MB
ubuntu-git                    latest-neues-tag        c0aaaba33a60   18 Stunden ago   208MB

4voto

Ted Tramonte Punkte 43

Stand 2022 haben keine der Top-Antworten wirklich explizit erläutert, wie man "einfach" jedes Tag für ein bestimmtes Repository umbenennen könnte, um die Tags eines Repositories in ein anderes Repository zu migrieren. Bensuperpcs Antwort hat mich zu diesem Oneliner geführt, der mir geholfen hat, mein GitLab-Register nach Quay zu verschieben.

Zuerst können Sie bei Bedarf alle Bilder auf einmal abrufen:

docker pull oldregistry.example.com/mein-bild --all-tags

Der Oneliner:

docker image list oldregistry.example.com/mein-bild --format "{{.Tag}}" | xargs -r -P$(nproc) -I {} docker image tag oldregistry.example.com/mein-bild:{} newregistry.example.com/mein-bild:{}

Zum Schluss:

docker push newregistry.example.com/mein-bild --all-tags

Vergessen Sie nicht, docker login vor den pull/push-Befehlen zu verwenden, falls erforderlich.

2voto

ascendants Punkte 1743

Die akzeptierte Antwort ist großartig für einzelne Umbenennungen, aber hier ist eine Möglichkeit, mehrere Bilder auf einmal umzubenennen, die denselben Repository-Namen haben (und die alten Bilder zu entfernen).

Wenn Sie alte Bilder haben, die in etwa so aussehen:

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

Und Sie möchten:

new_name/image_name_1
new_name/image_name_2

Dann können Sie dies verwenden (ersetzen Sie OLD_REPONAME, NEW_REPONAME und TAG entsprechend):

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

# extrahiere Bildnamen, z.B. "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}  # Diese Zeile auslassen, wenn Sie das alte Bild behalten möchten
done

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X