Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden de belangrijkste concepten van containerregisters, opslagplaatsen en containerinstallatiekopieën en gerelateerde artefacten geïntroduceerd.
Registersysteem
Een containerregister is een service waarmee containerinstallatiekopieën en gerelateerde artefacten worden opgeslagen en gedistribueerd. Docker Hub is een voorbeeld van een openbaar containerregister dat fungeert als een algemene catalogus met Docker-containerinstallatiekopieën. Azure Container Registry biedt gebruikers directe controle over hun containerinhoud, met geïntegreerde verificatie, geo-replicatie die wereldwijde distributie en betrouwbaarheid ondersteunt voor implementaties die zich dicht bij het netwerk bevinden, configuratie van virtuele netwerken met Private Link, tagvergrendeling en vele andere verbeterde functies.
Naast Docker-compatibele containerafbeeldingen ondersteunt Azure Container Registry een verscheidenheid aan inhoudsartefacten, waaronder Helm-grafieken en OCI-beeldformaten (Open Container Initiative).
Opslagplaats
Een repository is een verzameling containerafbeeldingen of andere artefacten in een register die dezelfde naam hebben, maar verschillende tags. De volgende drie afbeeldingen bevinden zich bijvoorbeeld in de acr-helloworld
opslagplaats:
- acr-helloworld:latest
- acr-helloworld:v1
- acr-helloworld:v2
Namen van opslagplaatsen kunnen ook naamruimten bevatten. Met naamruimten kunt u gerelateerde opslagplaatsen en het eigendom van artefacten in uw organisatie identificeren met behulp van door slash gescheiden namen. Het register beheert echter alle opslagplaatsen onafhankelijk, niet als een hiërarchie. Voorbeeld:
- marketing/campagne10-18/web:v2
- marketing/campaign10-18/api:v3
- marketing/campagne10-18/email-sender:v2
- product-returns/web-submission:20180604
- product-returns/legacy-integrator:20180715
Namen van opslagplaatsen kunnen alleen alfanumerieke tekens in kleine letters, punten, streepjes, onderstrepingstekens en voorwaartse schuine strepen bevatten.
Artefact
Een containerafbeelding of ander artefact in een register is gekoppeld aan een of meer tags, heeft een of meer lagen en wordt geïdentificeerd door een manifest. Als u begrijpt hoe deze onderdelen zich met elkaar verhouden, kunt u uw register effectief beheren.
Etiket
De tag voor een afbeelding of ander artefact geeft de versie aan. Aan één artefact binnen een repository kan een of meer tags worden toegewezen, en kan ook 'ongedaan maken' worden aangegeven. Met andere woorden, u kunt alle tags van een afbeelding verwijderen, terwijl de gegevens van de afbeelding (de lagen) in het register blijven staan.
De opslagplaats (of opslagplaats en naamruimte) plus een tag bepaalt de naam van een image. U kunt een image pushen en pullen door de naam op te geven in de push- of pull-bewerking. De tag latest
wordt standaard gebruikt als u er geen opgeeft in uw Docker-opdrachten.
Hoe u containerafbeeldingen tagt, wordt beïnvloed door de scenario's die u gebruikt voor ontwikkeling of implementatie. Bijvoorbeeld, stabiele tags worden aanbevolen voor het onderhouden van uw basisafbeeldingen en unieke tags voor het implementeren van afbeeldingen. Zie Aanbevelingen voor het taggen en versiebeheer van containerinstallatiekopieën voor meer informatie.
Zie de Docker-documentatie voor tag-namingregels.
Laag
Containerafbeeldingen en artefacten bestaan uit een of meer lagen. Verschillende artefacttypen definiëren lagen anders. In een Docker-containerinstallatiekopie komt elke laag bijvoorbeeld overeen met een regel in het Dockerfile waarmee de installatiekopie wordt gedefinieerd:
Artefacten in een register delen gemeenschappelijke lagen, waardoor de opslagefficiëntie toeneemt. Verschillende afbeeldingen in verschillende opslagplaatsen hebben bijvoorbeeld een gemeenschappelijke ASP.NET Core basislaag, maar slechts één kopie van die laag wordt opgeslagen in het register. Laagdeling optimaliseert ook de verdeling van lagen over knooppunten, waarbij meerdere artefacten gemeenschappelijke lagen delen. Als een installatiekopie al op een knooppunt de ASP.NET Core-laag als basis bevat, wordt de laag niet overgedragen naar het knooppunt door de volgende pull van een andere installatiekopie die verwijst naar dezelfde laag. In plaats daarvan verwijst deze naar de laag die al bestaat op het knooppunt.
Om veilige isolatie en bescherming te bieden tegen mogelijke laagmanipulatie, worden lagen niet gedeeld tussen registers.
Manifest
Elke containerimage of artefact die naar een containerregister wordt geüpload, is gekoppeld aan een manifest. Het manifest, gegenereerd door het register wanneer de inhoud wordt gepusht, identificeert de artefacten op unieke wijze en specificeert de lagen.
Een basismanifest voor een Linux-afbeelding hello-world
ziet er ongeveer zo uit:
{
"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"
}
]
}
U kunt de manifesten voor een opslagplaats weergeven met de Azure CLI-opdracht az acr manifest list-metadata:
az acr manifest list-metadata --name <repositoryName> --registry <acrName>
Vermeld bijvoorbeeld de manifesten voor de opslagplaats '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"
}
]
Manifestsamenvatt
Manifesten worden geïdentificeerd door een unieke SHA-256-hash of manifestsamenvating. Elke afbeelding of elk artefact, ongeacht of deze is getagd of niet, wordt geïdentificeerd door de samenvatting. De digest-waarde is uniek, zelfs als de laaggegevens van het artefact identiek zijn aan die van een ander artefact. Met dit mechanisme kunt u herhaaldelijk identiek getagde installatiekopieën naar een register pushen. U kunt bijvoorbeeld herhaaldelijk zonder fouten naar uw register pushen myimage:latest
, omdat elke installatiekopieën worden geïdentificeerd door de unieke samenvatting.
U kunt een artefact ophalen uit een register door de samenvatting ervan op te geven in de pull-bewerking. Sommige systemen kunnen worden geconfigureerd om te worden opgehaald door digest, omdat hiermee wordt gegarandeerd dat de versie van de installatiekopie wordt opgehaald, zelfs als een identiek getagde installatiekopie later naar het register wordt gepusht.
Belangrijk
Als u gewijzigde artefacten herhaaldelijk pusht met identieke tags, kunt u 'zwevende' artefacten maken die niet zijn gemarkeerd, maar nog steeds ruimte in uw register verbruiken. Niet-gemarkeerde installatiekopieën worden niet weergegeven in de Azure CLI of in De Azure-portal wanneer u afbeeldingen op tag vermeldt of bekijkt. De bijbehorende lagen bestaan echter nog steeds en verbruiken ruimte in uw register. Als u een niet-gemarkeerde installatiekopieën verwijdert, wordt registerruimte vrijgemaakt wanneer het manifest de enige is, of de laatste, die verwijst naar een bepaalde laag. Zie Containerinstallatiekopieën verwijderen in Azure Container Registry voor informatie over het vrijmaken van ruimte die wordt gebruikt door niet-gemarkeerde installatiekopieën.
Een artefact adresseren
Als u een registerartefact wilt adresseren voor push- en pull-bewerkingen met Docker of andere clienthulpprogramma's, combineert u de volledig gekwalificeerde registernaam, de naam van de opslagplaats (inclusief het pad naar de naamruimte, indien van toepassing) en een artefacttag of manifestsamenvating. Zie de vorige secties voor uitleg van deze voorwaarden.
Adres per tag: [loginServerUrl]/[repository][:tag]
Adres per samenvatting: [loginServerUrl]/[repository@sha256][:digest]
Wanneer u Docker of andere clienthulpprogramma's gebruikt om artefacten naar een Azure-containerregister te halen of te pushen, gebruikt u de volledig gekwalificeerde URL van het register, ook wel de naam van de aanmeldingsserver genoemd. In de Azure-cloud heeft de volledig gekwalificeerde URL van een Azure-containerregister de indeling myregistry.azurecr.io
(allemaal kleine letters).
Opmerking
- U kunt geen poortnummer opgeven in de URL van de registeraanmeldingsserver, zoals
myregistry.azurecr.io:443
. - De tag
latest
wordt standaard gebruikt als u geen tag in uw opdracht opgeeft.
Pushen op tag
Voorbeelden:
docker push myregistry.azurecr.io/samples/myimage:20210106
docker push myregistry.azurecr.io/marketing/email-sender
Pull by tag
Voorbeeld:
docker pull myregistry.azurecr.io/marketing/campaign10-18/email-sender:v2
Trek op manifest-samenvatting
Voorbeeld:
docker pull myregistry.azurecr.io/acr-helloworld@sha256:0a2e01852872580b2c2fea9380ff8d7b637d3928783c55beb3f21a6e58d5d108
Volgende stappen
Meer informatie over registeropslag en ondersteunde inhoudsindelingen in Azure Container Registry.
Leer hoe je images kunt pushen en pullen uit Azure Container Registry.