डॉकर रिपॉजिटरी नाम या नाम बदलने की छवि को कैसे बदलें?


568

मैं छवि का रिपॉजिटरी नाम बदलने की कोशिश कर रहा हूं:

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

इसलिए मैं नाम serverको कुछ इस तरह बदलना चाहता हूं myname/server:

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

मैं यह कैसे कर सकता हूँ?


5
REPOSITORY और TAG में क्या अंतर है?
चार्ली पार्कर

@CharlieParker TAG का उपयोग आम तौर पर भंडार के संस्करण के लिए किया जाता है - उदाहरण के लिए, 10.1 के साथ भंडार मालाडब
इयान हंटर

नीचे दिए गए docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
डॉक

मैं डॉक्यूबर में पूरे रिपॉजिटरी नाम को बदलना चाहूंगा .. बहुत बुरा जो संभव नहीं है:
खतरे 89

जवाबों:


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

या

docker image tag d583c3ac45fd myname/server:latest

पूर्ण छवि नाम के लिए टैग केवल मानव-पठनीय उपनाम हैं ( d583c3ac45fd...)।

इसलिए आप उनमें से कई को उसी छवि के साथ जोड़ सकते हैं जो आपको पसंद है। यदि आप पुराने नाम को पसंद नहीं करते हैं, तो आप इसे पुनः प्राप्त करने के बाद हटा सकते हैं:

docker rmi server

वह सिर्फ हटा देगा alias/tag। चूंकि d583c3ac45fdअन्य नाम हैं, इसलिए वास्तविक छवि को हटाया नहीं जाएगा।


यह मेरे लिए काम नहीं करता है। जब मैं docker टैग myname / server को चलाता हूं: नवीनतम docker docker.io को प्रीपेन्ड करने के लिए फिट देखता है, इसलिए छवि टैग docker.io/myname/server:latest पर समाप्त होता है।
स्कॉट

आपका होस्ट OS और Docker संस्करण क्या है? मुझे संदेह है कि आपके डॉकर इंस्टॉलेशन के बारे में कुछ टैग निर्देश को संशोधित कर रहा है।
एंडी

25
मुझे यह भी लगता है कि :latestदांव लगाना ठीक है अगर छवि नाम के लिए केवल एक टैग दांव पर है। लेकिन यह बहुत ही आसान है कि REPOSITORYआउटपुट में छवि नाम को (और छवि नहीं) docker imagesकहा जाता है, tagजबकि इसका नाम बदलने के लिए एक कमांड के साथ नाम बदलने की आवश्यकता होती TAGहै जबकि उस आउटपुट में एक अलग कॉलम होता है। मुझे आशा है कि वे इस और अन्य संबंधित चीजों को साफ करेंगे ...
गणितज्ञ

ध्यान दें कि आप शायद docker image tag from_server:version to_server:versionयहाँ वर्णित के रूप में चाहते हैं: docs.docker.com/engine/reference/commandline/image_tag
ट्रैवलर

20

शॉर्टहैंड के रूप में आप चला सकते हैं:

docker tag d58 myname/server:latest

जहां d58IMAGE ID के पहले 3 वर्णों का प्रतिनिधित्व करता है, इस मामले में, आपको बस यही चाहिए।

अंत में, आप पुरानी छवि को निम्नानुसार निकाल सकते हैं:

docker rmi server

1
मेरे मामले में, किसी भी तरह पूर्ण आईडी का उपयोग करना: इसके अंत तक नवीनतम होता है और यह दावा करने में त्रुटि देता है कि यह नहीं मिल सका। पहले 3 अक्षर बहुत बेहतर काम करते हैं। (यानी docker tag d583c3ac45fd myname/server:latestकाम करते समय काम नहीं docker tag d58 myname/server:latestकरता है।)
जॉन हैमिल्टन

8

हाल ही में मुझे डॉकर रजिस्ट्री (docker.mycompany.com) से आर्टिफ़ैक्टिव (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
ज़रूर, यह काम करेगा, लेकिन आपने इस व्यक्ति को क्यों नहीं समझाया। वे इस बात को लेकर असमंजस में हैं कि डॉकटर टैग क्या है ... मान लें कि वे डॉक-एच का उपयोग करना जानते हैं
एडम कापलान

1

स्वीकार किए गए उत्तर एकल नामकरण के लिए बहुत अच्छा है, लेकिन यहां कई छवियों का नाम बदलने का एक तरीका है जो एक ही बार में एक ही भंडार है (और पुरानी छवियों को हटा दें)।

यदि आपके पास फ़ॉर्म की पुरानी छवियां हैं:

$ 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

और आप चाहते हैं:

new_name/image_name_1
new_name/image_name_2

तो फिर तुम इस (में subbing उपयोग कर सकते हैं OLD_REPONAME, NEW_REPONAMEऔर TAGउचित रूप में):

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 Existing_name

मौजूदा छवि नाम बदलने के लिए।


5
यह नए नाम के साथ एक कंटेनर बनाता है । छवि नाम के साथ कुछ नहीं होता है ।
jwodder
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.