Різниця між реєстром Docker і сховищем


147

Мене бентежить різниця між докерськими регістрами та сховищами. Схоже, що документація Докера використовує два слова взаємозамінно. Крім того, сховища іноді називають зображеннями, такими як це у своїх документах:

Для того, щоб підштовхнути сховище до його реєстру, вам потрібно було назначити зображення або привласнити контейнер до названого зображення, як ми бачили тут.

Тепер ви можете натиснути це сховище до реєстру, позначеного його іменем або тегом.

Як можна натиснути сховище до реєстру? Ви не натискаєте зображення на сховище?


4
що з зображеннями докера проти докер-сховищ?
Чарлі Паркер

для зображень проти сховищ: stackoverflow.com/questions/31115098 / ...
wisbucky

1
якщо ви знаєте git, то - Docker Registry (за замовчуванням hub.docker.com) => GitHub ( github.com); - Docker Repository => Git Repository; - Docker Tag => Git Ref (Відділення / Тег)
go2null

Щоб краще зіставити Docker на Git: • Реєстр Docker = Git Server • Docker Repository = Git Repository • Docker Tag = Git Tag (більш-менш)
Simon Woodside

Відповіді:


171

Реєстр Docker - це служба, яка зберігає ваші докерські зображення.

Реєстр Docker може розміщуватися третьою стороною, як державний чи приватний реєстр, як-от один із таких реєстрів:

або ви можете розмістити реєстр докерів власноруч
(детальніше див. https://docs.docker.com/ee/dtr/ ).

Репозиторій Docker - це сукупність різних зображень докера з однаковою назвою, які мають різні теги. Тег - це буквено-цифровий ідентифікатор зображення у сховищі.

Наприклад, див. Https://hub.docker.com/r/library/python/tags/ . Існує багато різних тегів для офіційного зображення python, ці теги є усіма членами офіційного сховища python на Docker Hub. Docker Hub - це реєстр докерів, розміщений Docker.

Щоб дізнатися більше читайте:


11
Артефактуру додати до списку;) Ми використовуємо це
buildmaestro

2
І ось посилання на Artifactory - jfrog.com/confluence/display/RTF/Docker+Registry
JBaruch

1
Яка різниця між сховищем та зображеннями в docker?
Чарлі Паркер

1
Репозиторій може зберігати кілька різних зображень, позначених тегами.
Неманья Трифунович

2
Чому має сенс мати одне зображення з декількома тегами?
Чарлі Паркер

64

З книги Використання Docker, розробка та розгортання програмного забезпечення з контейнерами

Реєстри, сховища, зображення та теги

Існує ієрархічна система зберігання зображень. Використовується наступна термінологія:

Реєстр

Служба, відповідальна за розміщення та розповсюдження зображень. Реєстр за замовчуванням - Docker Hub.

Сховище

Колекція споріднених зображень (зазвичай надають різні версії одного і того ж додатка чи послуги).

Тег

Буквено-цифровий ідентифікатор, приєднаний до зображень у сховищі (наприклад, 14,04 або стабільний).

Таким чином команда docker pull amouat/revealjs:latestзавантажить зображення, позначене останньою темою у amouat/revealjsсховище, з реєстру Docker Hub.


1
тож чи можна мати кілька тегів для одного зображення?
Чарлі Паркер

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
Я візуалізую це як дерево, у якому реєстр є коренем, який має декілька дочірніх сховищ, і кожне з цих сховищ має зображення: тег як своїх дітей. Кожен з цих рівнів має певну роль - реєстр схожий на розташування хостингу, а сховище - каталог зображень. Чи правильно я розумію?
Ультраблендз

12

Доповнення інформації:

  • Зазвичай ви натискаєте сховище до реєстру (і всіх зображень, що входять до його складу). Але ви можете підштовхнути одне зображення до реєстру. У всіх випадках ви використовуєте docker push.
  • Зображення має 12-значне число з шестнадцятизначним зображенням, але воно також визначається: namespace/repo-name:tag
  • Повне ім'я зображення може бути додатково встановлено прізвищем хосту реєстру та портом: myregistryhost:5000/namespace/repo-name:tag
  • Поширена умова іменування полягає у використанні імені користувача вашого реєстру як того, що я назвав "простором імен".

3
Я розумію, що ти кажеш, але в технічному плані такого немає image-name. Формат повинен бути user-name/repo-name:tag, відповідно до документації Docker . (Я б хотів, щоб Докер використовував кращу термінологію, це досить заплутано, і вони весь час навіть не відповідають).
вісбукі

@wisbucky Дякую! Я оновив свою відповідь. Дійсно, документація була не такою вдалою, коли я відповів на це питання рік тому. Наприклад, тоді я створив проблему на docker github repo, оскільки словник докера не містив "шару" та "простору імен" (!)
Пауло Мерсон

1
І як докер працює з IP-адресою публічного реєстру, коли ви просто ставите щось на кшталт nimmis / docker-alpine-java: останнє
Adam

1
Oooops -docker info |grep Registry
Адам

2

Док-сховище - це симпатичне поєднання registryта image.

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

те саме, що

docker tag foo <repository>:<tag>

0

Докер-реєстр - це послуга, яку ви можете влаштувати самостійно (довіреною та приватною), або можете дозволити докер-концентратору бути хостом для цієї послуги. Зазвичай, якщо ваше програмне забезпечення є комерційним, ви прийматимете це як "приватний та надійний" реєстр. Для розробників Java це дещо аналогічно налаштуванню Maven Artifactory.

Репозиторій Docker - це набір зображень із "тегами". Прикладом є те, що ви, можливо, позначили 5 ubuntu:latestзображень:

a) Редактор Nano (image1_tag: v1)

b) Спеціальне програмне забезпечення 1 (image1_tag: v2)

в) Судо (image1_tag: v3)

г) apache http daemon (image1_tag: v4)

д) Tomcat (image1_tag: v5)

Ви можете скористатися docker pushкомандою для переміщення кожного з перерахованих вище зображень у ваше сховище. Поки назви сховищ збігаються, вони будуть успішно висунуті та відображатимуться під обраним сховищем та правильно позначені тегами.

Тепер ваше запитання: "Так де розміщений цей сховище / хто керує службою"? Саме тут потрапляє до реєстру Докер. За замовчуванням ви отримаєте реєстр докерних центрів (Open Source), який ви можете використовувати для збереження вашого приватного / публічного сховища. Тож без будь-яких модифікацій ваші зображення будуть перенесені у ваше приватне сховище у докер-хабі. Приклад виводу при натисканні на теги зображень:

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ви можете підтвердити, що ваші висунуті теги зображень тепер показують новий підпис проти приватного сховища, яким керує реєстр докер-концентраторів.


"команда docker push, щоб перенести кожне з вищезазначених зображень у ваше сховище" - ви не натискаєте зображення на сховища, а на сховища до реєстрів. Або я помиляюся?
The Impaler

0

Docker Hub та інші сторонні сервісні сховища сховища називаються "реєстрами". Реєстр зберігає колекцію сховищ.

Оскільки реєстр може мати багато сховищ, а у сховищі може бути багато різних версій одного і того ж зображення, які індивідуально розбиті на теги.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.