Hantera offentligt innehåll med Azure Container Registry

Den här artikeln är en översikt över metoder och arbetsflöden för att använda ett lokalt register, till exempel ett Azure-containerregister för att underhålla kopior av offentligt innehåll, till exempel containeravbildningar i Docker Hub.

Risker med offentligt innehåll

Din miljö kan ha beroenden av offentligt innehåll, till exempel offentliga containeravbildningar, Helm-diagram, OPA-principer (Open Policy Agent ) eller andra artefakter. Du kan till exempel köra nginx för tjänstroutning eller docker build FROM alpine genom att hämta avbildningar direkt från Docker Hub eller ett annat offentligt register.

Utan rätt kontroller kan beroenden av offentligt registerinnehåll medföra risker för dina arbetsflöden för bildutveckling och distribution. För att minska riskerna bör du behålla lokala kopior av offentligt innehåll när det är möjligt. Mer information finns i bloggen Öppna containerinitiativ.

Autentisera med Docker Hub

Om du för närvarande hämtar offentliga avbildningar från Docker Hub som en del av ett bygg- eller distributionsarbetsflöde rekommenderar vi att du autentiserar med ett Docker Hub-konto i stället för att göra en anonym pull-begäran.

När du gör frekventa anonyma pull-begäranden kan du se Docker-fel som liknar ERROR: toomanyrequests: Too Many Requests. eller You have reached your pull rate limit. autentisera till Docker Hub för att förhindra dessa fel.

Kommentar

Från och med den 2 november 2020 gäller nedladdningsfrekvensgränser för anonyma och autentiserade begäranden till Docker Hub från Docker Free Plan-konton och tillämpas av IP-adress respektive Docker-ID.

När du beräknar antalet pull-begäranden bör du ta hänsyn till att när du använder molnleverantörstjänster eller arbetar bakom en företags-NAT visas flera användare för Docker Hub som en delmängd av IP-adresser. Om du lägger till Docker-betald kontoautentisering i begäranden som görs till Docker Hub undviker du potentiella tjänststörningar på grund av hastighetsbegränsning.

Mer information finns i Docker-priser och prenumerationer och Docker-användarvillkoren.

Docker Hub-åtkomsttoken

Docker Hub stöder personliga åtkomsttoken som alternativ till ett Docker-lösenord när du autentiserar till Docker Hub. Token rekommenderas för automatiserade tjänster som hämtar avbildningar från Docker Hub. Du kan generera flera token för olika användare eller tjänster och återkalla token när de inte längre behövs.

Om du vill autentisera med docker login att använda en token utelämnar du lösenordet på kommandoraden. När du uppmanas att ange ett lösenord anger du token i stället. Om du har aktiverat tvåfaktorautentisering för ditt Docker Hub-konto måste du använda en personlig åtkomsttoken när du loggar in från Docker CLI.

Autentisera från Azure-tjänster

Flera Azure-tjänster, inklusive App Service och Azure Container Instances, har stöd för att hämta avbildningar från offentliga register, till exempel Docker Hub för containerdistributioner. Om du behöver distribuera en avbildning från Docker Hub rekommenderar vi att du konfigurerar inställningar för att autentisera med ett Docker Hub-konto. Exempel:

App Service

  • Bildkälla: Docker Hub
  • Åtkomst till lagringsplats: Privat
  • Inloggning: <Användarnamn för Docker Hub>
  • Lösenord: <Docker Hub-token>

Mer information finns i Docker Hub-autentiserade hämtningar i App Service.

Azure Container Instances

  • Avbildningskälla: Docker Hub eller annat register
  • Bildtyp: Privat
  • Inloggningsserver för avbildningsregister: docker.io
  • Avbildningsregisteranvändarnamn: <Användarnamn för Docker Hub>
  • Avbildningsregisterlösenord: <Docker Hub-token>
  • Bild: docker.io/< repo name>:<tag>

Konfigurera Artefaktcache för att använda offentligt innehåll

Det bästa sättet att använda offentligt innehåll är att kombinera registerautentisering och artefaktcachefunktionen. Du kan använda Artifact Cache för att cachelagrar dina containerartefakter i Azure Container Registry även i privata nätverk. Att använda Artifact Cache skyddar dig inte bara från registerhastighetsgränser, utan ökar tillförlitligheten avsevärt när du kombinerar med geo-replikerad ACR för att hämta artefakter från den region som är närmast din Azure-resurs. Dessutom kan du också använda alla säkerhetsfunktioner som ACR har att erbjuda, inklusive privata nätverk, brandväggskonfiguration, tjänsthuvudnamn med mera. Fullständig information om hur du använder offentligt innehåll med ACR Artifact Cache finns i självstudiekursen artefaktcachen .

Importera avbildningar till ett Azure-containerregister

Om du vill börja hantera kopior av offentliga avbildningar kan du skapa ett Azure-containerregister om du inte redan har ett. Skapa ett register med hjälp av Azure CLI, Azure-portalen, Azure PowerShell eller andra verktyg.

Som ett rekommenderat engångssteg importerar du basavbildningar och annat offentligt innehåll till ditt Azure-containerregister. Kommandot az acr import i Azure CLI stöder avbildningsimport från offentliga register som Docker Hub och Microsoft Container Registry och från andra privata containerregister.

az acr import kräver ingen lokal Docker-installation. Du kan köra den med en lokal installation av Azure CLI eller direkt i Azure Cloud Shell. Den stöder bilder av valfri operativsystemtyp, bilder med flera arkitekturer eller OCI-artefakter, till exempel Helm-diagram.

Beroende på organisationens behov kan du importera till ett dedikerat register eller en lagringsplats i ett delat register.

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest \
  --username <Docker Hub username> \
  --password <Docker Hub token>

Uppdatera avbildningsreferenser

Utvecklare av programbilder bör se till att koden refererar till lokalt innehåll under deras kontroll.

  • Uppdatera avbildningsreferenser för att använda det privata registret. Du kan till exempel uppdatera en FROM baseimage:v1 instruktion i en Dockerfile till FROM myregistry.azurecr.io/mybaseimage:v1
  • Konfigurera autentiseringsuppgifter eller en autentiseringsmekanism för att använda det privata registret. Den exakta mekanismen beror på vilka verktyg du använder för att komma åt registret och hur du hanterar användaråtkomst.
    • Om du använder ett Kubernetes-kluster eller Azure Kubernetes Service för att komma åt registret kan du läsa autentiseringsscenarierna.
    • Läs mer om alternativ för att autentisera med ett Azure-containerregister.

Automatisera programbilduppdateringar

När du expanderar avbildningsimporten konfigurerar du en Azure Container Registry-uppgift för att automatisera programavbildningsversioner när basavbildningar uppdateras. En automatiserad bygguppgift kan spåra både basavbildningsuppdateringar och källkodsuppdateringar.

Ett detaljerat exempel finns i Använda och underhålla offentligt innehåll med Azure Container Registry Tasks.

Kommentar

En enda förkonfigurerad uppgift kan automatiskt återskapa varje programavbildning som refererar till en beroende basavbildning.

Nästa steg