Bästa metoder för Azure Container Registry

Genom att följa dessa metodtips kan du maximera prestanda och kostnadseffektiv användning av ditt privata register i Azure för att lagra och distribuera containeravbildningar och andra artefakter.

Bakgrundsinformation om registerbegrepp finns i Om register, lagringsplatser och avbildningar. Se även Rekommendationer för taggning och versionshantering av containeravbildningar för strategier för att tagga och versionsavbildningar i registret.

Nätverksnära distribution

Skapa containerregistret i samma Azure-region som du distribuerar containrar i. Genom att placera registret i en region som är nätverksnära till containervärdarna kan du bidra till att sänka både svarstid och kostnader.

Nätverksnära distribution är en av de främsta orsakerna till att använda ett privat containerregister. Docker-avbildningar har en effektiv lagerkonstruktion som möjliggör inkrementella distributioner. Nya noder måste dock hämta alla lager som krävs för en viss avbildning. Den första docker pull kan snabbt växa till flera gigabyte. Med ett privat register nära distributionen minimeras nätverkssvarstiden. Dessutom implementerar alla offentliga moln, inklusive Azure, avgifter för nätverksöverskridande. Om avbildningar hämtas från ett datacenter till ett annat läggs avgifter för nätverksöverskridande till, utöver svarstiden.

Geo-replikering av distributioner över flera regioner

Använd funktionen geo-replikering i Azure Container Registry om du distribuerar behållare till flera regioner. Oavsett om du arbetar med globala kunder från lokala datacenter eller om utvecklingsteamet finns på olika platser kan du förenkla registerhanteringen och minimera svarstiden genom geo-replikering i registret. Du kan också konfigurera regionala webhooks för att meddela dig om händelser i specifika repliker, till exempel när bilder push-överförs.

Geo-replikering är tillgängligt med Premium-register . Information om hur du använder geo-replikering finns i självstudien Geo-replication in Azure Container Registry (Geo-replikering i Azure Container Registry) i tre delar.

Maximera pull-prestanda

Förutom att placera avbildningar nära dina distributioner kan egenskaperna för själva avbildningarna påverka hämtningsprestandan.

  • Bildstorlek – Minimera storleken på dina bilder genom att ta bort onödiga lager eller minska storleken på skikten. Ett sätt att minska avbildningsstorleken är att använda Docker-kompileringsmetoden i flera steg för att endast inkludera nödvändiga körningskomponenter.

    Kontrollera också om avbildningen kan innehålla en ljusare basoperativsystemavbildning. Och om du använder en distributionsmiljö, till exempel Azure Container Instances som cachelagrar vissa basavbildningar, kontrollerar du om du kan växla ett avbildningslager mot en av de cachelagrade avbildningarna.

  • Antal lager – Balansera antalet skikt som används. Om du har för få kan du inte dra nytta av återanvändning och cachelagring av lager på värden. För många, och distributionsmiljön ägnar mer tid åt att hämta och dekomprimera. Fem till tio lager är optimala.

Välj även en tjänstnivå med Azure Container Registry som uppfyller dina prestandabehov. Premium-nivån ger störst bandbredd och högsta frekvens för samtidiga läs- och skrivåtgärder när du har distributioner med stora volymer.

Namnrymder för lagringsplatser

Genom att använda namnrymder för lagringsplatsen kan du tillåta delning av ett enskilt register mellan flera grupper i din organisation. Registren kan delas mellan distributioner och team. Azure Container Registry har stöd för kapslade namnrymder, vilket möjliggör isolering av grupper. Registret hanterar dock alla lagringsplatser oberoende av varandra, inte som en hierarki.

Du kan till exempel överväga följande taggar för containeravbildningar. Avbildningar som används i hela företaget, till exempel aspnetcore, placeras i rotnamnområdet, medan containeravbildningar som ägs av grupperna Products och Marketing använder sina egna namnrymder.

  • contoso.azurecr.io/aspnetcore:2.0
  • contoso.azurecr.io/products/widget/web:1
  • contoso.azurecr.io/products/bettermousetrap/refundapi:12.3
  • contoso.azurecr.io/marketing/2017-fall/concertpromotions/campaign:218.42

Dedikerad resursgrupp

Eftersom containerregister är resurser som används på flera containervärdar bör ett register finnas i en egen resursgrupp.

Även om du kan experimentera med en viss värdtyp, till exempel Azure Container Instances, vill du förmodligen ta bort containerinstansen när du är klar. Du kan dock även vilja behålla avbildningssamlingen som du överförde till Azure Container Registry. Genom att placera registret i en egen resursgrupp minimerar du risken för att oavsiktligen ta bort avbildningssamlingen i registret när du tar bort containerinstansens resursgrupp.

Autentisering och auktorisering

Vid autentisering med ett Azure-containerregister finns det två huvudsakliga scenarier: individuell autentisering och tjänstautentisering (eller "fjärradministrering"). Följande tabell innehåller en kort översikt över dessa scenarier och den rekommenderade metoden för autentisering av dem.

Typ Exempel på ett scenario Rekommenderad metod
Individuell identitet En utvecklare hämtar avbildningar till eller skickar bilder från sin egen utvecklingsdator. az acr login
Fjärradministrerad/tjänstidentitet Bygg- och distributionsledningar där användaren inte är direkt inblandad. Tjänstens huvudnamn

Detaljerad information om dessa och andra Azure Container Registry autentiseringsscenarier finns i Autentisera med ett Azure-containerregister.

Azure Container Registry har stöd för säkerhetsrutiner i din organisation för att distribuera uppgifter och privilegier till olika identiteter. Använd rollbaserad åtkomstkontroll och tilldela lämpliga behörigheter till olika användare, tjänstens huvudnamn eller andra identiteter som utför olika registeråtgärder. Du kan till exempel tilldela push-behörigheter till ett tjänsthuvudnamn som används i en bygg-pipeline och tilldela pull-behörigheter till en annan identitet som används för distribution. Skapa token för detaljerad, tidsbegränsad åtkomst till specifika lagringsplatser.

Hantera registerstorlek

Lagringsbegränsningarna för varje tjänstnivå för containerregister är avsedda att anpassas till ett typiskt scenario: Basic för att komma igång, Standard för de flesta produktionsprogram och Premium för prestanda i hyperskala och geo-replikering. Du bör hantera registrets storlek genom att regelbundet ta bort innehåll som inte används under hela registrets livslängd.

Använd Azure CLI-kommandot az acr show-usage för att visa den aktuella förbrukningen av lagring och andra resurser i registret:

az acr show-usage --resource-group myResourceGroup --name myregistry --output table

Exempel på utdata:

NAME                        LIMIT         CURRENT VALUE    UNIT
--------------------------  ------------  ---------------  ------
Size                        536870912000  215629144        Bytes
Webhooks                    500           1                Count
Geo-replications            -1            3                Count
IPRules                     100           1                Count
VNetRules                   100           0                Count
PrivateEndpointConnections  10            0                Count

Du hittar även den aktuella lagringsanvändningen i Översikt över ditt register i Azure Portal:

Information om registeranvändning i Azure Portal

Anteckning

I ett geo-replikerat register visas lagringsanvändning för hemregionen. Multiplicera med antalet replikering för den totala förbrukade registerlagringen.

Ta bort bilddata

Azure Container Registry har stöd för flera metoder för att ta bort avbildningsdata från containerregistret. Du kan ta bort bilder efter tagg eller manifestsammandrag eller ta bort en hel lagringsplats.

Mer information om hur du tar bort avbildningsdata från registret, inklusive avbildningar utan taggning (kallas ibland "dinglande" eller "överblivna") finns i Ta bort containeravbildningar i Azure Container Registry. Du kan också ange en kvarhållningsprincip för otaggade manifest.

Nästa steg

Azure Container Registry finns på flera nivåer (kallas även SKU:er) som tillhandahåller olika funktioner. Mer information om tillgängliga tjänstnivåer finns i Azure Container Registry tjänstnivåer.

Rekommendationer för att förbättra säkerhetsstatusen för dina containerregister finns i Azures säkerhetsbaslinje för Azure Container Registry.