Docker depo adını nasıl değiştirebilir veya resmi yeniden adlandırabilir?


568

Resmin depo adını değiştirmeye çalışıyorum:

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

Bu nedenle adı şöyle bir serverşeyle değiştirmek istiyorum myname/server:

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

Bunu nasıl yapabilirim?


5
REPOSITORY ve TAG arasındaki fark nedir?
Charlie Parker

@CharlieParker TAG genellikle deponun sürümü için kullanılır; örneğin, 10.1 etiketli depo mariadb'ı
Ian Hunter

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
Docker

Dockerhub'daki tüm depo adını değiştirmek istiyorum .. çok kötü, bu mümkün değil :(
danger89

Yanıtlar:


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

veya

docker image tag d583c3ac45fd myname/server:latest

Etiketler, tam resim adı ( d583c3ac45fd...) için yalnızca okunabilir takma adlardır .

Böylece, istediğiniz sayıda aynı resimle ilişkilendirebilirsiniz. Eski adı beğenmediyseniz, yeniden etiketledikten sonra kaldırabilirsiniz:

docker rmi server

Bu sadece kaldırır alias/tag. Yana d583c3ac45fddiğer ismi vardır, gerçek görüntü silinmez.


bu benim için işe yaramıyor. Docker etiketi myname / server'ı çalıştırdığımda: en son docker docker.io'nun başına geçmeyi uygun görür, böylece resim etiketi docker.io/myname/server:latest olur.
Scott

Ana işletim sistemi ve Docker sürümünüz nedir? Docker yüklemenizle ilgili bir şeyin etiket talimatını değiştirdiğinden şüpheleniyorum.
Andy

25
Ayrıca :latest, söz konusu resim adı için yalnızca bir etiket varsa , atlamanın iyi olduğunu görüyorum . Ama görüntü ismi denir oldukça çok kendine özgü olduğunu REPOSITORYçıkışında (ve görüntü değil) docker imagesadında bir komutla yeniden adlandırılması gerekiyor ise tagoysa TAGo çıktıda ayrı sütundur. Umarım bunu ve diğer ilgili şeyleri
temizlerler

Muhtemelen docker image tag from_server:version to_server:versionburada açıklandığı gibi olmasını istediğinizi unutmayın : docs.docker.com/engine/reference/commandline/image_tag
Traveler

20

Bir stenografi olarak koşabilirsiniz:

docker tag d58 myname/server:latest

d58IMAGE ID'nin ilk 3 karakterini temsil ettiği yerde , bu durumda ihtiyacınız olan tek şey budur.

Son olarak, eski görüntüyü aşağıdaki gibi kaldırabilirsiniz:

docker rmi server

1
Benim durumumda, tam kimliği kullanmak bir şekilde ekliyor: sonuna kadar son ve bulamadığını iddia eden bir hata veriyor. İlk 3 harf daha iyi çalışır. (yani docker tag d583c3ac45fd myname/server:latestçalışırken işe yaramaz docker tag d58 myname/server:latest.)
John Hamilton

8

Son zamanlarda Docker kayıt defterinden (docker.mycompany.com) bazı görüntüleri Artifactory'ye (docker.artifactory.mycompany.com) taşımak zorunda kaldım

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
Elbette, bu işe yarayacak, ama bu kişiye nedenini açıklamadınız. Docker etiketinin ne olduğu konusunda şaşkın görünüyorlar ... Docker'ı kullanmayı bildiklerini varsayarsak -h
Adam Kaplan

1

Kabul edilen cevap tekli yeniden adlandırmalar için harikadır, ancak burada aynı depoya sahip birden fazla görüntüyü bir kerede yeniden adlandırmanın (ve eski görüntüleri kaldırmanın) bir yolu vardır.

Formun eski resimleriniz varsa:

$ 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

Ve sen istiyorsun:

new_name/image_name_1
new_name/image_name_2

Sonra bu (içinde subbing kullanabilirsiniz OLD_REPONAME, NEW_REPONAMEve TAGuygun olarak):

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 - adı NEW_NAME Mevcut_name

Mevcut görüntü adını değiştirmek için.


5
Bu , yeni adla bir kap oluşturur . Resim adında hiçbir şey olmuyor .
jwodder
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.