Perbedaan antara register dan repositori Docker


147

Saya bingung perbedaan antara pendaftar docker dan repositori. Sepertinya dokumentasi Docker menggunakan dua kata secara bergantian. Juga, repositori kadang-kadang disebut sebagai gambar, seperti ini dari dokumen mereka:

Untuk mendorong repositori ke dalam registri, Anda harus menamai gambar atau menempatkan wadah Anda ke gambar bernama seperti yang kita lihat di sini.

Sekarang Anda dapat mendorong repositori ini ke registri yang ditunjuk dengan namanya atau tag.

Bagaimana Anda bisa mendorong repositori ke registri? Apakah Anda tidak mendorong gambar ke repositori?


4
bagaimana dengan gambar buruh pelabuhan vs repositori buruh pelabuhan?
Charlie Parker


1
jika Anda tahu git, maka - Docker Registry (default adalah hub.docker.com) => GitHub ( github.com); - Docker Repository => Git Repository; - Docker Tag => Git Ref (Cabang / Tag)
go2null

Untuk memetakan Docker ke Git dengan lebih baik: • Docker Registry = Git Server • Docker Repository = Git Repository • Docker Tag = Git Tag (kurang lebih)
Simon Woodside

Jawaban:


170

Registri Docker adalah layanan yang menyimpan gambar buruh pelabuhan Anda.

Registri Docker dapat di-host oleh pihak ketiga, sebagai registri publik atau pribadi, seperti salah satu pendaftar berikut:

atau Anda dapat meng-host registri buruh pelabuhan sendiri
(lihat https://docs.docker.com/ee/dtr/ untuk rincian lebih lanjut).

Repositori Docker adalah kumpulan gambar docker berbeda dengan nama yang sama, yang memiliki tag berbeda. Tag adalah pengidentifikasi alfanumerik dari gambar dalam repositori.

Sebagai contoh, lihat https://hub.docker.com/r/library/python/tags/ . Ada banyak tag berbeda untuk gambar python resmi, tag ini adalah semua anggota repositori python resmi di Docker Hub. Docker Hub adalah Docker Registry yang diselenggarakan oleh Docker.

Untuk mengetahui lebih lanjut baca:


11
Artifactory adalah satu untuk ditambahkan ke daftar;) Kami menggunakannya
buildmaestro

2
Dan itulah tautan untuk Artifactory - jfrog.com/confluence/display/RTF/Docker+Registry
JBaruch

1
apa perbedaan antara repositori dan gambar di docker?
Charlie Parker

1
Repositori dapat menyimpan banyak gambar berbeda yang ditandai dengan tag.
Nemanja Trifunovic

2
Mengapa masuk akal untuk memiliki satu gambar memiliki banyak tag?
Charlie Parker

64

Dari buku Menggunakan Docker, Mengembangkan dan menggunakan Perangkat Lunak dengan Wadah

Registrasi, Repositori, Gambar, dan Tag

Ada sistem hierarkis untuk menyimpan gambar. Terminologi berikut digunakan:

Daftar

Layanan yang bertanggung jawab untuk meng-hosting dan mendistribusikan gambar. Registri default adalah Docker Hub.

Gudang

Kumpulan gambar terkait (biasanya menyediakan versi berbeda dari aplikasi atau layanan yang sama).

Menandai

Identifier alfanumerik yang dilampirkan pada gambar di dalam repositori (mis., 14,04 atau stabil).

Jadi perintah itu docker pull amouat/revealjs:latestakan mengunduh gambar yang ditandai terbaru dalam amouat/revealjsrepositori dari registri Docker Hub.


1
jadi bisakah seseorang memiliki banyak tag untuk satu gambar?
Charlie Parker

1
@ Chrislie Ya. Misalnya, sekarang ubuntu:latestdan ubuntu:16.04memiliki yang sama Image ID, yang berarti mereka hanya beberapa tag untuk gambar yang sama.
wisbucky

Di mana ini rusak adalah dalam dokumentasi untuk docker pull, yang berbunyi sebagian: "Untuk mengunduh gambar tertentu, atau set gambar (yaitu, repositori), gunakan docker pull. Jika tidak ada tag yang disediakan, Mesin Docker menggunakan :latesttag sebagai default. " Lalu, bagaimana satu "unduh ... satu set gambar (yaitu repositori)"? 🤔
Laird Nelson

1
info acak: url registri default adalah docker.io
yosefrow

1
Saya memvisualisasikan ini seperti pohon dengan registri menjadi root yang memiliki beberapa repositori anak dan masing-masing repositori ini memiliki gambar: tag sebagai anak-anaknya. Masing-masing level memiliki peran tertentu - registri seperti lokasi hosting dan repositori adalah direktori gambar. Apakah pemahaman saya benar?
Ultrablendz

12

Melengkapi informasi:

  • Anda biasanya mendorong repositori ke registri (dan semua gambar yang merupakan bagian dari itu). Tetapi Anda dapat mendorong satu gambar ke registri. Dalam semua kasus, Anda menggunakan docker push.
  • Gambar memiliki Image ID 12-hex-digit, tetapi juga diidentifikasi oleh: namespace/repo-name:tag
  • Nama lengkap gambar dapat secara opsional diawali oleh nama dan port host registri: myregistryhost:5000/namespace/repo-name:tag
  • Konvensi penamaan yang umum adalah menggunakan nama pengguna registri Anda sebagai apa yang saya sebut "namespace".

3
Saya mengerti apa yang Anda katakan, tetapi secara teknis tidak ada yang namanya image-name. Formatnya harus user-name/repo-name:tag, sesuai dengan dokumentasi Docker . (Saya berharap Docker menggunakan terminologi yang lebih baik, ini cukup membingungkan, dan mereka bahkan tidak konsisten sepanjang waktu).
wisbucky

@wb sial Terima kasih! Saya memperbarui jawaban saya. Memang dokumentasinya tidak begitu baik ketika saya menjawab pertanyaan ini setahun yang lalu. Misalnya, saat itu saya membuat masalah pada docker github repo karena docker glosarium tidak mengandung "layer" dan "namespace" (!)
Paulo Merson

1
Dan bagaimana buruh pelabuhan mengetahui alamat IP dari registri publik ketika Anda baru saja meletakkan sesuatu seperti nimmis / docker-alpine-java: latest
Adam

1
Oooops -docker info |grep Registry
Adam

2

Repositori buruh pelabuhan adalah kombinasi lucu dari registrydan image.

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

sama dengan

docker tag foo <repository>:<tag>

0

Docker Registry adalah layanan, yang dapat Anda host sendiri (Tepercaya dan Pribadi) atau Anda dapat membiarkan hub docker menjadi tuan rumah untuk layanan ini. Biasanya, jika perangkat lunak Anda bersifat komersial, Anda akan menginangi ini sebagai "Private and Trusted" registry. Untuk Pengembang Java, ini agak analog dengan pengaturan Maven Artifactory.

Docker Repository adalah sekumpulan gambar "Tagged". Contohnya adalah Anda mungkin telah menandai 5 ubuntu:latestgambar:

a) Editor Nano (image1_tag: v1)

b) Perangkat lunak khusus 1 (image1_tag: v2)

c) Sudo (image1_tag: v3)

d) apache http daemon (image1_tag: v4)

e) kucing jantan (image1_tag: v5)

Anda dapat menggunakan docker pushperintah untuk mendorong setiap gambar di atas ke repositori Anda. Selama nama repositori cocok, mereka akan didorong dengan sukses, dan muncul di bawah repositori yang Anda pilih dan ditandai dengan benar.

Sekarang, pertanyaan Anda adalah, "Jadi di mana repositori ini di-host / siapa yang mengelola layanan"? Di situlah Docker Registry muncul. Secara default Anda akan mendapatkan registry hub docker (Open Source) yang dapat Anda gunakan untuk menyimpan repositori pribadi / publik Anda. Jadi tanpa modifikasi apa pun, gambar Anda akan didorong ke repositori pribadi Anda di hub docker. Contoh output saat Anda mendorong tag gambar Anda adalah sebagai berikut:

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:/$

Dan jika Anda mengetik segera, docker images --digests -aAnda dapat mengonfirmasi bahwa tag gambar terdorong Anda sekarang menunjukkan tanda tangan baru terhadap repositori pribadi yang dikelola oleh docker hub registry.


"buruh pelabuhan mendorong perintah untuk mendorong masing-masing gambar di atas ke repositori Anda" - Anda tidak mendorong gambar ke repositori, tetapi repositori ke pendaftar. Atau saya salah?
The Impaler

0

Docker Hub dan layanan hosting pihak ketiga lainnya disebut "pendaftar". Registri menyimpan koleksi repositori.

Sebagai registri dapat memiliki banyak repositori dan repositori dapat memiliki banyak versi berbeda dari gambar yang sama yang secara individual diversi dengan tag.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.