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 ordentliga kontroller kan beroenden av offentligt registerinnehåll medföra risker för dina arbetsflöden för bildutveckling och distribution. För att minimera 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 ofta 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 för att Docker Hub för att förhindra dessa fel.

Anteckning

Från och med den 2 november 2020 gäller nedladdningsfrekvensgränser för anonyma och autentiserade begäranden om att 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 aggregerat 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 avbrott i tjänsten på grund av hastighetsbegränsning.

Mer information finns i Docker-priser och prenumerationer samt 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 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: <Docker Hub användarnamn>
  • Lösenord: <Docker Hub token>

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

Azure Container Instances

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

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 Portal, 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, till exempel Docker Hub och Microsoft Container Registry och från andra privata containerregister.

az acr import kräver inte någon lokal Docker-installation. Du kan köra den med en lokal installation av Azure CLI eller direkt i Azure Cloud Shell. Den stöder avbildningar av valfri operativsystemtyp, avbildningar 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.

Automatisera programbilduppdateringar

Om du expanderar vid avbildningsimport konfigurerar du en Azure Container Registry uppgift för att automatisera programavbildningsversioner när basavbildningarna uppdateras. En automatiserad bygguppgift kan spåra både basavbildningsuppdateringar och källkodsuppdateringar.

Ett detaljerat exempel finns i Så här använder och underhåller du offentligt innehåll med Azure Container Registry Uppgifter.

Anteckning

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

Nästa steg