ความแตกต่างระหว่างการลงทะเบียนรีจิสทรีและที่เก็บข้อมูล


147

ฉันสับสนเกี่ยวกับความแตกต่างระหว่างการลงทะเบียนนักเทียบท่าและที่เก็บข้อมูล ดูเหมือนว่าเอกสารของนักเทียบท่าใช้คำสองคำสลับกันได้ นอกจากนี้บางครั้งที่เก็บจะเรียกว่ารูปภาพเช่นนี้จากเอกสารของพวกเขา

ในการที่จะผลักที่เก็บไปยังรีจิสตรีของมันคุณต้องตั้งชื่อรูปภาพหรือกำหนดคอนเทนเนอร์ของคุณให้เป็นรูปภาพที่มีชื่อตามที่เราเห็นที่นี่

ตอนนี้คุณสามารถพุชที่เก็บนี้ไปยังรีจิสตรีที่กำหนดโดยชื่อหรือแท็ก

คุณจะผลักที่เก็บไปยังรีจิสตรีได้อย่างไร? คุณไม่ผลักรูปภาพไปยังที่เก็บ?


4
ภาพเกี่ยวกับนักเทียบท่าเทียบกับที่เก็บนักเทียบท่า?
Charlie Parker

สำหรับรูปภาพและที่เก็บ: stackoverflow.com/questions/31115098/…
wisbucky

1
ถ้าคุณรู้gitแล้ว - Docker Registry (ค่าเริ่มต้นคือhub.docker.com) => GitHub ( github.com); - ที่เก็บ Docker => ที่เก็บ Git; - Docker Tag => Git Ref (สาขา / แท็ก)
go2null

ในการทำแผนที่ให้ดีขึ้น Docker to Git: • Registry Docker = Git Server • Docker Repository = Git Repository • Tag Docker = Git Tag (มากหรือน้อย)
Simon Woodside

คำตอบ:


171

นักลงทะเบียนรีจิสทรีเป็นบริการที่จัดเก็บภาพนักเทียบท่าของคุณ

รีจิสทรีของนักเทียบท่าสามารถโฮสต์โดยบุคคลที่สามในฐานะที่เป็นรีจิสทรีสาธารณะหรือส่วนตัวเช่นหนึ่งในการลงทะเบียนต่อไปนี้:

หรือคุณสามารถโฮสต์รีจิสตรี Registry Docker ได้ด้วยตัวเอง
(ดูhttps://docs.docker.com/ee/dtr/ สำหรับรายละเอียดเพิ่มเติม)

พื้นที่เก็บข้อมูลนักเทียบท่าคือชุดของภาพนักเทียบท่าที่แตกต่างกันที่มีชื่อเดียวกันที่มีแท็กที่แตกต่างกัน แท็กคือตัวระบุตัวเลขและตัวอักษรของภาพภายในที่เก็บ

ยกตัวอย่างเช่นดูhttps://hub.docker.com/r/library/python/tags/ มีแท็กที่แตกต่างกันมากมายสำหรับอิมเมจไพ ธ อนอย่างเป็นทางการแท็กเหล่านี้เป็นสมาชิกทั้งหมดของที่เก็บไพ ธ อนอย่างเป็นทางการบน Docker Hub Docker Hub เป็น Docker Registry ที่โฮสต์โดย Docker

หากต้องการอ่านเพิ่มเติม:


11
สิ่งประดิษฐ์เป็นสิ่งหนึ่งที่จะเพิ่มในรายการ;) เราใช้มัน
buildmaestro

2
และนั่นคือการเชื่อมโยงสำหรับ Artifactory - การjfrog.com/confluence/display/RTF/Docker+Registry
JBaruch

1
ความแตกต่างระหว่างพื้นที่เก็บข้อมูลและภาพในนักเทียบท่าคืออะไร?
Charlie Parker

1
พื้นที่เก็บข้อมูลสามารถจัดเก็บภาพที่แตกต่างหลายภาพที่ทำเครื่องหมายด้วยแท็ก
Nemanja Trifunovic

2
ทำไมการมีภาพเดียวจึงมีหลายแท็ก
Charlie Parker

64

จากหนังสือเล่มนี้โดยใช้ Docker การพัฒนาและการปรับใช้ซอฟต์แวร์ด้วยตู้คอนเทนเนอร์

การลงทะเบียนที่เก็บรูปภาพและแท็ก

มีระบบลำดับชั้นสำหรับจัดเก็บรูปภาพ ใช้คำศัพท์ต่อไปนี้:

Registry

บริการที่รับผิดชอบการโฮสต์และแจกจ่ายรูปภาพ รีจิสตรีเริ่มต้นคือ Docker Hub

กรุ

คอลเลกชันของรูปภาพที่เกี่ยวข้อง (โดยปกติจะให้แอพพลิเคชั่นหรือบริการเดียวกันรุ่นต่าง ๆ )

แท็ก

ตัวบ่งชี้ตัวเลขและตัวอักษรที่แนบกับรูปภาพภายในที่เก็บข้อมูล (เช่น 14.04 หรือเสถียร)

ดังนั้นคำสั่งdocker pull amouat/revealjs:latestจะดาวน์โหลดอิมเมจที่ติดแท็กล่าสุดภายในที่amouat/revealjsเก็บข้อมูลจากรีจิสทรี Docker Hub


1
ดังนั้นหนึ่งสามารถมีหลายแท็กสำหรับภาพเดียว?
Charlie Parker

1
@ charlie ใช่ ตัวอย่างเช่นตอนนี้ubuntu:latestและubuntu:16.04มีเหมือนกันImage IDซึ่งหมายความว่าพวกเขาเป็นเพียงหลายแท็กสำหรับภาพเดียวกัน
wisbucky

ในกรณีที่การหยุดพักอยู่ในเอกสารประกอบของdocker pullซึ่งอ่านบางส่วน: "ในการดาวน์โหลดภาพบางภาพหรือชุดภาพ (เช่นที่เก็บ) ให้ใช้docker pullหากไม่มีแท็กไว้ Docker Engine จะใช้:latestแท็กเป็นค่าเริ่มต้น " อย่างไรหนึ่งจะ "ดาวน์โหลด ... ชุดภาพ (เช่นพื้นที่เก็บข้อมูล)"? 🤔
Laird Nelson

1
ข้อมูลสุ่ม: URL รีจิสตรีเริ่มต้นคือ docker.io
yosefrow

1
ฉันเห็นภาพนี้เหมือนต้นไม้ที่มีรีจิสตรีเป็นรากที่มีที่เก็บข้อมูลลูกหลายรายการและที่เก็บเหล่านี้แต่ละแห่งมีอิมเมจ: แท็กเป็นชายด์ แต่ละระดับเหล่านี้มีบทบาทเฉพาะ - รีจิสตรีนั้นเปรียบเสมือนตำแหน่งโฮสต์และที่เก็บเป็นไดเร็กทอรีของรูปภาพ ความเข้าใจของฉันถูกต้องหรือไม่
Ultrablendz

12

การเสริมข้อมูล:

  • คุณมักจะผลักดันที่เก็บไปยังรีจิสทรี (และภาพทั้งหมดที่เป็นส่วนหนึ่งของมัน) แต่คุณสามารถผลักภาพเดียวไปยังรีจิสทรี docker pushในทุกกรณีที่คุณใช้
  • ภาพมีรหัสรูปภาพ 12 หลักฐานสิบหก แต่ถูกระบุโดย: namespace/repo-name:tag
  • ชื่อเต็มของรูปภาพสามารถเลือกนำหน้าด้วยชื่อโฮสต์และพอร์ตของรีจิสเตอร์: myregistryhost:5000/namespace/repo-name:tag
  • หลักการตั้งชื่อทั่วไปคือการใช้ชื่อผู้ใช้รีจิสตรีของคุณเป็นสิ่งที่ฉันเรียกว่า "namespace"

3
ฉันได้สิ่งที่คุณพูด แต่ในทางเทคนิคแล้วไม่มีสิ่งเช่นimage-nameนั้น รูปแบบที่ควรจะเป็นuser-name/repo-name:tagตามเอกสารเทียบท่า (ฉันหวังว่านักเทียบท่าใช้คำศัพท์ที่ดีกว่ามันค่อนข้างสับสนและไม่สอดคล้องกันตลอดเวลา)
wisbucky

@wiscucky ขอบคุณ! ฉันปรับปรุงคำตอบของฉัน แน่นอนว่าเอกสารไม่ดีเมื่อฉันตอบคำถามนี้เมื่อหนึ่งปีก่อน ตัวอย่างเช่นย้อนกลับไปแล้วฉันสร้างปัญหาขึ้นที่ repot github นักเทียบท่าเนื่องจากอภิธานศัพท์นักเทียบท่าไม่มี "เลเยอร์" และ "เนมสเปซ" (!)
Paulo Merson

1
และนักเทียบท่าทำงานยังที่อยู่ IP ของการลงทะเบียนสาธารณะอย่างไรเมื่อคุณใส่ nimmis / docker-alpine-java: ล่าสุด
Adam

1
Oooops -docker info |grep Registry
Adam

2

พื้นที่เก็บข้อมูลนักเทียบท่าเป็นชุดที่น่ารักของและ registryimage

docker tag foo <registry>/<image>:<tag>

เป็นเช่นเดียวกับ

docker tag foo <repository>:<tag>

0

Docker Registry เป็นบริการที่คุณสามารถโฮสต์ด้วยตัวคุณเอง (เชื่อถือได้และเป็นส่วนตัว) หรือคุณสามารถปล่อยให้ Docker Hub เป็นโฮสต์สำหรับบริการนี้ได้ โดยปกติหากซอฟต์แวร์ของคุณเป็นเชิงพาณิชย์คุณจะได้โฮสต์นี้เป็นรีจิสทรี "ส่วนตัวและเชื่อถือได้" สำหรับผู้พัฒนา Java สิ่งนี้คล้ายกับการตั้งค่า Maven Artifactory

Docker Repository คือชุดของภาพ "แท็ก" ตัวอย่างคือคุณอาจติดแท็ก 5 ubuntu:latestภาพ:

a) เครื่องมือแก้ไขนาโน (image1_tag: v1)

b) ซอฟต์แวร์เฉพาะ 1 (image1_tag: v2)

c) Sudo (image1_tag: v3)

d) apache http daemon (image1_tag: v4)

e) tomcat (image1_tag: v5)

คุณสามารถใช้docker pushคำสั่งเพื่อส่งรูปภาพด้านบนไปยังที่เก็บของคุณ ตราบใดที่ชื่อที่เก็บตรงกับชื่อพวกเขาจะถูกผลักดันประสบความสำเร็จและปรากฏภายใต้พื้นที่เก็บข้อมูลที่คุณเลือกและติดแท็กอย่างถูกต้อง

ตอนนี้คำถามของคุณคือ "ดังนั้นที่เก็บนี้โฮสต์อยู่ที่ไหน / ใครจัดการบริการ" นั่นคือสิ่งที่ Docker Registry เข้ามาในรูปภาพ โดยค่าเริ่มต้นคุณจะได้รับการลงทะเบียนฮับรีจิสตรี (โอเพ่นซอร์ส) ซึ่งคุณสามารถใช้เก็บที่เก็บส่วนตัว / สาธารณะของคุณ ดังนั้นหากไม่มีการดัดแปลงรูปภาพของคุณจะถูกส่งไปยังพื้นที่เก็บข้อมูลส่วนตัวของคุณในศูนย์กลางนักเทียบท่า ตัวอย่างเอาต์พุตเมื่อคุณกดแท็กรูปภาพของคุณมีดังต่อไปนี้:

docker@my-docker-vm:/$ docker push mydockerhub/my-helloworld-repo:my_tag
The push refers to repository [docker.io/mydockerhub/my-helloworld-repo]
bf41e934d39d: Pushed
70d93396f87f: Pushed
6ec525dfd060: Pushed
705419d10b13: Pushed
a4aaef726d02: Pushed
04964fddc946: Pushed
latest: digest: sha256:eb93c92351bce785aa3ec0de489cfeeaafd55b7d90adf95ecea02629b376e577 size: 1571
docker@my-docker-vm:/$

และถ้าคุณพิมพ์ทันทีdocker images --digests -aคุณสามารถยืนยันได้ว่าแท็กรูปภาพที่ถูกพุชของคุณกำลังแสดงลายเซ็นใหม่กับที่เก็บส่วนตัวที่จัดการโดย registry hub huber


"คำสั่ง docker push เพื่อส่งรูปภาพด้านบนแต่ละภาพไปยังที่เก็บข้อมูลของคุณ" - คุณไม่ต้องส่งภาพไปยังที่เก็บ แต่เป็นที่เก็บเพื่อลงทะเบียน หรือฉันผิด
The Impaler

0

Docker Hub และบริการโฮสต์พื้นที่เก็บข้อมูลของบุคคลที่สามอื่น ๆ เรียกว่า“ registries” รีจิสตรีเก็บชุดของที่เก็บ

เนื่องจากรีจีสทรีสามารถมีที่เก็บข้อมูลจำนวนมากและที่เก็บสามารถมีอิมเมจเดียวกันหลายเวอร์ชันซึ่งมีแท็กแต่ละเวอร์ชัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.