Udostępnij za pośrednictwem


Informacje o rejestrach, repozytoriach i artefaktach

W tym artykule przedstawiono kluczowe pojęcia dotyczące rejestrów kontenerów, repozytoriów i obrazów kontenerów oraz powiązanych artefaktów.

Registry, repositories, and artifacts

Rejestr

Rejestr kontenerów to usługa, która przechowuje i dystrybuuje obrazy kontenerów i powiązane artefakty. Usługa Docker Hub to przykład publicznego rejestru kontenerów, który służy jako ogólny wykaz obrazów kontenerów platformy Docker. Usługa Azure Container Registry zapewnia użytkownikom bezpośrednią kontrolę nad zawartością kontenera, ze zintegrowanym uwierzytelnianiem, replikacją geograficzną obsługującą globalną dystrybucję i niezawodność wdrożeń zamykania sieci, konfigurację sieci wirtualnej za pomocą usługi Private Link, blokowanie tagów i wiele innych rozszerzonych funkcji.

Oprócz obrazów kontenerów zgodnych z platformą Docker usługa Azure Container Registry obsługuje szereg artefaktów zawartości, w tym wykresy Helm i formaty obrazów Open Container Initiative (OCI).

Repozytorium

Repozytorium to kolekcja obrazów kontenerów lub innych artefaktów w rejestrze o tej samej nazwie, ale różnych tagach. Na przykład w repozytorium znajdują acr-helloworld się następujące trzy obrazy:

  • acr-helloworld:latest
  • acr-helloworld:v1
  • acr-helloworld:v2

Nazwy repozytoriów mogą również zawierać przestrzenie nazw. Przestrzenie nazw umożliwiają identyfikowanie powiązanych repozytoriów i własności artefaktów w organizacji przy użyciu nazw rozdzielanych ukośnikami. Rejestr zarządza jednak wszystkimi repozytoriami niezależnie, a nie jako hierarchią. Na przykład:

  • marketing/kampania10-18/web:v2
  • marketing/campaign10-18/api:v3
  • marketing/campaign10-18/email-sender:v2
  • product-returns/web-submission:20180604
  • product-returns/legacy-integrator:20180715

Nazwy repozytoriów mogą zawierać tylko małe litery alfanumeryczne, kropki, kreski, podkreślenia i ukośniki.

Artefakt

Obraz kontenera lub inny artefakt w rejestrze jest skojarzony z co najmniej jednym tagiem, ma co najmniej jedną warstwę i jest identyfikowany przez manifest. Zrozumienie, w jaki sposób te składniki odnoszą się do siebie nawzajem, może pomóc w efektywnym zarządzaniu rejestrem.

Tagowy

Tag obrazu lub innego artefaktu określa jego wersję. Pojedynczy artefakt w repozytorium może być przypisany do jednego lub wielu tagów, a także "nieotagowany". Oznacza to, że można usunąć wszystkie tagi z obrazu, podczas gdy dane obrazu (jego warstwy) pozostają w rejestrze.

Repozytorium (lub repozytorium i przestrzeń nazw) oraz tag definiuje nazwę obrazu. Obraz można wypchnąć i ściągnąć, określając jego nazwę w operacji wypychania lub ściągania. Tag latest jest używany domyślnie, jeśli nie podasz go w poleceniach platformy Docker.

Sposób tagowania obrazów kontenerów jest kierowany przez scenariusze do ich opracowywania lub wdrażania. Na przykład stabilne tagi są zalecane do obsługi obrazów podstawowych i unikatowych tagów do wdrażania obrazów. Aby uzyskać więcej informacji, zobacz Rekomendacje na potrzeby tagowania i przechowywania wersji obrazów kontenerów.

Aby zapoznać się z regułami nazewnictwa tagów, zobacz dokumentację platformy Docker.

Warstwa

Obrazy kontenerów i artefakty składają się z co najmniej jednej warstwy. Różne typy artefaktów definiują warstwy inaczej. Na przykład w obrazie kontenera platformy Docker każda warstwa odpowiada wierszowi w pliku Dockerfile definiującym obraz:

Layers of a container image

Artefakty w rejestrze mają wspólne warstwy, zwiększając wydajność magazynowania. Na przykład kilka obrazów w różnych repozytoriach może mieć wspólną warstwę podstawową ASP.NET Core, ale tylko jedna kopia tej warstwy jest przechowywana w rejestrze. Udostępnianie warstw optymalizuje również dystrybucję warstw na węzły, a wiele artefaktów współużytkuje wspólne warstwy. Jeśli obraz już w węźle zawiera warstwę ASP.NET Core jako podstawową, kolejne ściągnięcie innego obrazu odwołującego się do tej samej warstwy nie przenosi warstwy do węzła. Zamiast tego odwołuje się do warstwy już istniejącej w węźle.

Aby zapewnić bezpieczną izolację i ochronę przed potencjalnym manipulowaniem warstwami, warstwy nie są współużytkowane w rejestrach.

Manifest

Każdy obraz kontenera lub artefakt wypychany do rejestru kontenerów jest skojarzony z manifestem. Manifest generowany przez rejestr podczas wypychania zawartości jednoznacznie identyfikuje artefakty i określa warstwy.

Podstawowy manifest obrazu systemu Linux hello-world wygląda podobnie do następującego:

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "size": 1510,
    "digest": "sha256:fbf289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e"
  },
  "layers": [
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 977,
      "digest": "sha256:2c930d010525941c1d56ec53b97bd057a67ae1865eebf042686d2a2d18271ced"
    }
  ]
}

Manifesty dla repozytorium można wyświetlić za pomocą polecenia interfejsu wiersza polecenia platformy Azure az acr manifest list-metadata:

az acr manifest list-metadata --name <repositoryName> --registry <acrName>

Na przykład wyświetl listę manifestów dla repozytorium "acr-helloworld":

az acr manifest list-metadata --name acr-helloworld --registry myregistry
[
  {
    "digest": "sha256:0a2e01852872580b2c2fea9380ff8d7b637d3928783c55beb3f21a6e58d5d108",
    "tags": [
      "latest",
      "v3"
    ],
    "timestamp": "2018-07-12T15:52:00.2075864Z"
  },
  {
    "digest": "sha256:3168a21b98836dda7eb7a846b3d735286e09a32b0aa2401773da518e7eba3b57",
    "tags": [
      "v2"
    ],
    "timestamp": "2018-07-12T15:50:53.5372468Z"
  },
  {
    "digest": "sha256:7ca0e0ae50c95155dbb0e380f37d7471e98d2232ed9e31eece9f9fb9078f2728",
    "tags": [
      "v1"
    ],
    "timestamp": "2018-07-11T21:38:35.9170967Z"
  }
]

Skrót manifestu

Manifesty są identyfikowane przez unikatowy skrót SHA-256 lub skrót manifestu. Każdy obraz lub artefakt — bez względu na to, czy oznakowany, czy nie — jest identyfikowany przez jego skrót. Wartość skrótu jest unikatowa, nawet jeśli dane warstwy artefaktu są identyczne z wartością innego artefaktu. Ten mechanizm umożliwia wielokrotne wypychanie identycznych otagowanych obrazów do rejestru. Można na przykład wielokrotnie wypchnąć myimage:latest do rejestru bez błędu, ponieważ każdy obraz jest identyfikowany przez jego unikatowy skrót.

Artefakt można ściągnąć z rejestru, określając jego skrót w operacji ściągania. Niektóre systemy mogą być skonfigurowane do ściągania przez skrót, ponieważ gwarantuje ściąganie wersji obrazu, nawet jeśli obraz otagowany identycznie jest wypychany później do rejestru.

Ważne

Jeśli wielokrotnie wypychasz zmodyfikowane artefakty z identycznymi tagami, możesz utworzyć "osieroce" — artefakty, które są nieotagowane, ale nadal zużywają miejsce w rejestrze. Obrazy bez tagów nie są wyświetlane w interfejsie wiersza polecenia platformy Azure ani w witrynie Azure Portal. Jednak ich warstwy nadal istnieją i zużywają miejsce w rejestrze. Usunięcie nieotagowanych obrazów zwalnia miejsce rejestru, gdy manifest jest jedynym lub ostatnim wskazującym konkretną warstwę. Aby uzyskać informacje na temat zwalniania miejsca używanego przez nieotagowane obrazy, zobacz Usuwanie obrazów kontenerów w usłudze Azure Container Registry.

Zwracanie się do artefaktu

Aby rozwiązać problem artefaktu rejestru na potrzeby operacji wypychania i ściągania przy użyciu platformy Docker lub innych narzędzi klienckich, połącz w pełni kwalifikowaną nazwę rejestru, nazwę repozytorium (w tym ścieżkę przestrzeni nazw, jeśli ma to zastosowanie) oraz tag artefaktu lub skrót manifestu. Zapoznaj się z poprzednimi sekcjami, aby uzyskać wyjaśnienia tych terminów.

Adres według tagu: [loginServerUrl]/[repository][:tag]

Adres według skrótu: [loginServerUrl]/[repository@sha256][:digest]

W przypadku korzystania z platformy Docker lub innych narzędzi klienckich do ściągania lub wypychania artefaktów do rejestru kontenerów platformy Azure użyj w pełni kwalifikowanego adresu URL rejestru, nazywanego również nazwą serwera logowania. W chmurze platformy Azure w pełni kwalifikowany adres URL rejestru kontenerów platformy Azure ma format myregistry.azurecr.io (wszystkie małe litery).

Uwaga

  • Nie można określić numeru portu w adresie URL serwera logowania rejestru, takim jak myregistry.azurecr.io:443.
  • Tag latest jest używany domyślnie, jeśli nie podasz tagu w poleceniu.

Wypychanie według tagu

Przykłady:

docker push myregistry.azurecr.io/samples/myimage:20210106

docker push myregistry.azurecr.io/marketing/email-sender

Ściąganie według tagu

Przykład:

docker pull myregistry.azurecr.io/marketing/campaign10-18/email-sender:v2

Ściąganie według skrótu manifestu

Przykład:

docker pull myregistry.azurecr.io/acr-helloworld@sha256:0a2e01852872580b2c2fea9380ff8d7b637d3928783c55beb3f21a6e58d5d108

Następne kroki

Dowiedz się więcej o magazynie rejestru i obsługiwanych formatach zawartości w usłudze Azure Container Registry.

Dowiedz się, jak wypychać i ściągać obrazy z usługi Azure Container Registry.