Docker come modificare il nome del repository o rinominare l'immagine?


569

Sto cercando di cambiare il nome del repository dell'immagine:

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

Quindi voglio cambiare il nome serverin qualcosa del tipo myname/server:

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

Come posso fare questo?


5
qual è la differenza tra REPOSITORY e TAG?
Charlie Parker,

@CharlieParker TAG viene in genere utilizzato per la versione del repository, ad esempio repository mariadb con tag 10.1
Ian Hunter

Segui la sintassi dal tag docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker

Vorrei cambiare l'intero nome del repository in dockerhub .. peccato che non sia possibile :(
danger89

Risposte:


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

o

docker image tag d583c3ac45fd myname/server:latest

I tag sono solo alias leggibili dall'uomo per il nome completo dell'immagine ( d583c3ac45fd...).

Quindi puoi averne tanti associati alla stessa immagine che desideri. Se non ti piace il vecchio nome, puoi rimuoverlo dopo averlo ricodificato:

docker rmi server

Questo rimuoverà semplicemente il file alias/tag. Poiché d583c3ac45fdha altri nomi, l'immagine effettiva non verrà eliminata.


questo non funziona per me. Quando eseguo il tag docker myname / server: l'ultima docker è adatta per anteporre docker.io, quindi il tag immagine finisce per essere docker.io/myname/server:latest.
Scott,

Qual è il tuo sistema operativo host e la versione Docker? Sospetto che qualcosa sull'installazione di Docker stia modificando le istruzioni del tag.
Andy,

25
Trovo anche che omettere vada :latestbene se c'è in gioco un solo tag per il nome dell'immagine. Ma è abbastanza idiosincratico che il nome dell'immagine sia chiamato REPOSITORY(e non un'immagine) nell'output di docker imagesmentre deve essere rinominato con un comando chiamato tagconsiderando che TAGè una colonna separata in quell'output. Spero che ripuliscano questa e altre cose correlate ...
Mathanter

Si noti che probabilmente si desidera docker image tag from_server:version to_server:versioncome descritto qui: docs.docker.com/engine/reference/commandline/image_tag
Viaggiatore

20

Come stenografia puoi eseguire:

docker tag d58 myname/server:latest

Dove d58rappresenta i primi 3 caratteri dell'ID IMMAGINE, in questo caso, è tutto ciò che serve.

Infine, puoi rimuovere la vecchia immagine come segue:

docker rmi server

1
Nel mio caso, l'utilizzo dell'ID completo in qualche modo aggiunge: l'ultimo alla fine e dà un errore sostenendo che non è stato possibile trovarlo. Le prime 3 lettere funzionano molto meglio. (cioè docker tag d583c3ac45fd myname/server:latestnon funziona mentre docker tag d58 myname/server:latestfunziona.)
John Hamilton,

8

Di recente ho dovuto migrare alcune immagini dal registro Docker (docker.mycompany.com) a Artifactory (docker.artifactory.mycompany.com)

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
Certo, funzionerà, ma non hai spiegato a questa persona perché. Sembrano essere confusi su cosa sia un tag Docker ... Supponendo che sapessero usare docker -h
Adam Kaplan,

1

La risposta accettata è ottima per i singoli nomi, ma qui è un modo per rinominare più immagini che hanno lo stesso repository in una sola volta (e rimuovere le vecchie immagini).

Se hai vecchie immagini del modulo:

$ 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

E tu vuoi:

new_name/image_name_1
new_name/image_name_2

Quindi è possibile utilizzare questo (subbing in OLD_REPONAME, NEW_REPONAMEe TAGse del caso):

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


0

Per rinominare un'immagine, assegnagli un nuovo tag, quindi rimuovi il vecchio tag usando il comando 'rmi':

$ docker tag $ docker rmi

Questo secondo passaggio è spaventoso, poiché "rmi" significa "rimuovi immagine". Tuttavia, la finestra mobile non rimuoverà effettivamente l'immagine se ha altri tag. Cioè, se dovessi seguirlo immediatamente con: docker rmi, rimuoverà effettivamente l'immagine (supponendo che non ci siano altri tag assegnati all'immagine)


-7

docker run -it --name NEW_NAME Nome_esistente

Per modificare il nome dell'immagine esistente.


6
Ciò crea un contenitore con il nuovo nome. Non succede nulla con il nome dell'immagine .
jwodder,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.