Ez a cikk az Azure Container Registry szolgáltatással kapcsolatos gyakori kérdéseket és ismert problémákat ismerteti.
A beállításjegyzék hibaelhárítási útmutatója:
Erőforrás-kezelés
Létrehozhatok Egy Azure Container Registryt az Azure Stack Hubon Resource Manager-sablonnal?
Igen. Íme egy sablon , amellyel létrehozhat egy beállításjegyzéket. Ez a sablon az Azure nyilvános felhőhöz készült. Ha ezt a sablont az Azure Stack Hubon szeretné használni, módosítsa az API-verziót 2019-05-01-es verzióra, ellenkező esetben nem sikerül üzembe helyezni.
Biztonsági réseket keres a rendszerképek az Azure Container Registryben az Azure Stack Hubon?
Szám Jelenleg nincs integráció az Azure Security Centerrel az Azure Stack Hubon üzembe helyezett regisztrációs adatbázisokhoz. Vannak külső felektől származó és nyílt forráskód lehetőségek, amelyek felhasználhatók a csatlakoztatott vagy leválasztott Azure Stack Hub-üzemelő példányok iránti igény szükségletének kitöltéséhez.
Hogyan Konfigurálja a Kubernetes-t az Azure Container Registry használatával?
Tekintse meg a Kubernetes dokumentációját és az Azure Kubernetes Service lépéseit.
Hogyan lekérni a tárolóregisztrációs adatbázis rendszergazdai hitelesítő adatait?
Fontos
A rendszergazdai felhasználói fiók úgy lett kialakítva, hogy egyetlen felhasználó hozzáférjen a beállításjegyzékhez, főként tesztelési célokra. Nem javasoljuk a rendszergazdai fiók hitelesítő adatainak megosztását több felhasználóval. A fej nélküli forgatókönyvekhez egyéni identitás használata ajánlott a felhasználók és a szolgáltatásnevek számára. Lásd a hitelesítés áttekintését.
Mielőtt rendszergazdai hitelesítő adatokat kap, győződjön meg arról, hogy a beállításjegyzék rendszergazdai felhasználója engedélyezve van.
Hitelesítő adatok lekérése az Azure CLI használatával:
az acr credential show -n myRegistry
Az Azure PowerShell-lel:
Invoke-AzureRmResourceAction -Action listCredentials -ResourceType Microsoft.ContainerRegistry/registries -ResourceGroupName myResourceGroup -ResourceName myRegistry
Hogyan rendszergazdai hitelesítő adatokat lekérni egy Resource Manager-sablonban?
Fontos
A rendszergazdai felhasználói fiók úgy lett kialakítva, hogy egyetlen felhasználó hozzáférjen a beállításjegyzékhez, főként tesztelési célokra. Nem javasoljuk a rendszergazdai fiók hitelesítő adatainak megosztását több felhasználóval. A fej nélküli forgatókönyvekhez egyéni identitás használata ajánlott a felhasználók és a szolgáltatásnevek számára. Lásd a hitelesítés áttekintését.
Mielőtt rendszergazdai hitelesítő adatokat kap, győződjön meg arról, hogy a beállításjegyzék rendszergazdai felhasználója engedélyezve van.
Az első jelszó lekérése:
{
"password": "[listCredentials(resourceId('Microsoft.ContainerRegistry/registries', 'myRegistry'), '2017-10-01').passwords[0].value]"
}
A második jelszó lekérése:
{
"password": "[listCredentials(resourceId('Microsoft.ContainerRegistry/registries', 'myRegistry'), '2017-10-01').passwords[1].value]"
}
Hogyan leküldni egy tárolórendszerképet az Azure Container Registryben egy Kubernetes-t futtató leválasztott Azure Stack Hub-üzembe helyezésre?
Gépről gépre történő rendszerképátvitelt végezhet egy helyi hálózaton keresztül egy olyan gépről, amely már rendelkezik a szükséges tárolólemezkép(ek)sel. Megvalósítás:
Először kérje le a szükséges tárolólemezképeket egy internetkapcsolattal rendelkező géppel a Docker CLI és a Docker lekéréses parancsával. További információ: Tárolólemezképek importálása tárolóregisztrációs adatbázisba .
Miután importálta a szükséges rendszerkép(ek)et, a gépet a leválasztott Azure Hub-példány helyére kell szállítania.
A docker-címkével és a Docker leküldéses parancsaival címkézheti és leküldheti a rendszerképet az Azure Stack Hub-adattár helyi Azure Container Registry-adatbázisába.
Regisztrációs adatbázis műveletei
Hogyan hozzáférés a Docker Registry HTTP API V2-hez?
Az Azure Container Registry támogatja a Docker Registry HTTP API V2-t. Az API-k a következő címen https://<your registry login server>/v2/
érhetők el: . Példa: https://mycontainerregistry.azsacr.<regionname>.<fqdn>/v2/
Hogyan törölni az összes olyan jegyzékfájlt, amelyekre egy adattár egyik címkéje sem hivatkozik?
Ha bashen van:
az acr manifest list-metadata --name myRepository --registry myRegistry --query "[?tags[0]==null].digest" --output tsv | xargs -I% az acr repository delete --name myRegistry --image myRepository@%
PowerShell esetén:
az acr manifest list-metadata --name myRepository --registry myRegistry --query "[?tags[0]==null].digest" --output tsv | %{ az acr repository delete --name myRegistry --image myRepository@$_ }
Feljegyzés
A törlési paranccsal kihagyhatja --yes
a megerősítést.
További információ: Tárolórendszerképek törlése az Azure Container Registryben.
Miért nem csökken a beállításjegyzék kvótahasználata a rendszerképek törlése után?
Ez a helyzet akkor fordulhat elő, ha a mögöttes rétegekre továbbra is hivatkoznak más tárolólemezképek. Ha hivatkozás nélküli lemezképet töröl, a beállításjegyzék-használat néhány perc múlva frissül.
Hogyan ellenőrizze a tárkvóta változásait?
Hozzon létre egy 1 GB-os réteggel rendelkező képet a következő Docker-fájl használatával. Ez biztosítja, hogy a rendszerkép olyan réteggel rendelkezik, amelyet a beállításjegyzékben lévő többi rendszerkép nem oszt meg.
FROM alpine
RUN dd if=/dev/urandom of=1GB.bin bs=32M count=32
RUN ls -lh 1GB.bin
Hozza létre és küldje le a lemezképet a beállításjegyzékbe a Docker CLI használatával.
docker build -t myregistry.azsacr.<regionname>.<fqdn>/1gb:latest .
docker push myregistry.azsacr.<regionname>.<fqdn>/1gb:latest
Látnia kell, hogy a tárterület kihasználtsága növekedett az Azure Stack Hub portálon, vagy lekérdezheti a használatot a parancssori felület használatával.
az acr show-usage -n myregistry
Törölje a rendszerképet az Azure CLI vagy a portál használatával, és ellenőrizze néhány perc alatt a frissített használatot.
az acr repository delete -n myregistry --image 1gb
Hogyan hitelesítést a beállításjegyzékemmel a parancssori felület tárolóban való futtatásakor?
Az Azure CLI-tárolót a Docker-szoftvercsatorna csatlakoztatásával kell futtatnia:
docker run -it -v /var/run/docker.sock:/var/run/docker.sock azuresdk/azure-cli-python:dev
A tárolóban telepítse a következőt docker
:
apk --update add docker
Ezután hitelesítés a beállításjegyzékkel:
az acr login -n MyRegistry
Hogyan engedélyezheti a TLS 1.2-t?
Engedélyezze a TLS 1.2-t a legutóbbi Docker-ügyfél (18.03.0-s vagy újabb verzió) használatával.
Fontos
2020. január 13-tól az Azure Container Registry megköveteli a kiszolgálók és alkalmazások összes biztonságos kapcsolatát a TLS 1.2 használatához. A TLS 1.0 és 1.1 támogatása megszűnik.
Támogatja az Azure Stack Hubon található Azure Container Registry a tartalommegbízhatóságot?
Nem, az Azure Stack Hub azure-tárolóregisztrációs adatbázisának jelenlegi kiadása csak a "Standard" termékváltozatot támogatja, és nem támogatja a tartalommegbízhatóságot.
Hogyan hozzáférést biztosít a rendszerképek lekéréséhez vagy leküldéséhez a beállításjegyzék-erőforrás kezeléséhez szükséges engedély nélkül?
Az Azure Container Registry olyan egyéni szerepköröket támogat, amelyek különböző szintű engedélyeket biztosítanak. A szerepkörök lehetővé teszik a felhasználók számára a rendszerképek lekérését és/vagy leküldését anélkül, AcrPull
AcrPush
hogy a beállításjegyzék-erőforrást az Azure-ban kezelhessék.
Azure Stack Hub portál: A beállításjegyzék –> Hozzáférés-vezérlés (IAM) –> Hozzáadás (Válassza ki
AcrPull
vagyAcrPush
válassza ki a szerepkört).Azure CLI: Keresse meg a beállításjegyzék erőforrás-azonosítóját az alábbi parancs futtatásával:
az acr show -n myRegistry
Ezután hozzárendelheti a szerepkört vagy a
AcrPull
AcrPush
szerepkört egy felhasználóhoz (az alábbi példa a következőket használjaAcrPull
):az role assignment create --scope resource_id --role AcrPull --assignee user@example.com
Vagy rendelje hozzá a szerepkört egy, az alkalmazásazonosítója alapján azonosított szolgáltatásnévhez:
az role assignment create --scope resource_id --role AcrPull --assignee 00000000-0000-0000-0000-000000000000
A hozzárendelt ezután képes hitelesíteni és elérni a rendszerképeket a beállításjegyzékben.
Hitelesítés beállításjegyzékben:
az acr login -n myRegistry
Adattárak listázása:
az acr repository list -n myRegistry
Kép lekérése:
docker pull myregistry.azsacr.<regionname>.<fqdn>/hello-world
Csak a szerepkör vagy AcrPush
a AcrPull
szerepkör használata esetén a hozzárendelt nem rendelkezik a beállításjegyzék-erőforrás Azure-beli kezeléséhez szükséges engedéllyel. Például, az acr list
vagy az acr show -n myRegistry
nem jelenik meg a beállításjegyzék.
Hogyan leküldi a nem terjeszthető rétegeket egy beállításjegyzékbe?
A jegyzékfájl nem terjeszthető rétege olyan URL-paramétert tartalmaz, amelyből a tartalom lekérhető. A nem terjeszthető rétegleküldések engedélyezésének néhány lehetséges felhasználási esete a hálózatra korlátozott nyilvántartások, a korlátozott hozzáférésű légi hozzáférésű nyilvántartások vagy az internetkapcsolattal nem rendelkező adatbázisok.
Ha például NSG-szabályok vannak beállítva, hogy a virtuális gépek csak az Azure-tárolóregisztrációs adatbázisból tudjanak lemezképeket lekérni, a Docker lekéri a külső/nem terjeszthető rétegek hibáit. Egy Windows Server Core-rendszerkép például az Azure Container Registry idegen rétegbeli hivatkozásait tartalmazza a jegyzékben, és ebben a forgatókönyvben nem sikerül lekérni.
A nem terjeszthető rétegek leküldésének engedélyezése:
Szerkessze a
daemon.json
linuxos gazdagépeken és a Windows ServerenC:\ProgramData\docker\config\daemon.json
található/etc/docker/
fájlt. Ha a fájl korábban üres volt, adja hozzá a következő tartalmat:{ "allow-nondistributable-artifacts": ["myregistry.azsacr.<regionname>.<fqdn>"] }
Feljegyzés
Az érték a beállításjegyzék-címek vesszővel elválasztott tömbje.
Mentse és lépjen ki a fájlból.
Indítsa újra a Dockert.
Amikor leküldi a képeket a listában szereplő adatbázisba, a rendszer leküldi a nem terjeszthető rétegeket a beállításjegyzékbe.
Figyelmeztetés
A nem terjeszthető összetevők általában korlátozzák az elosztás és a megosztás módját és helyét. Ez a funkció csak az összetevők magánregisztrációs adatbázisokba való leküldésére használható. Győződjön meg arról, hogy megfelel minden olyan feltételnek, amely a nem terjeszthető összetevők újraelosztására vonatkozik.
Diagnosztikák és állapotellenőrzések
Állapot ellenőrzése az "az acr check-health" használatával
A környezettel és a beállításjegyzéktel kapcsolatos gyakori problémák elhárításához tekintse meg az Azure-tárolóregisztrációs adatbázis állapotának ellenőrzését.
A Docker-lekérés meghiúsul a következő hibával: net/http: a kérés megszakadt a kapcsolatra való várakozás során (a Client.Timeout túllépte a fejlécek várakozása közben)
- Ha ez a hiba átmeneti probléma, akkor az újrapróbálkozás sikeres lesz.
- Ha
docker pull
folyamatosan meghiúsul, akkor probléma lehet a Docker démonnal. A probléma általában a Docker-démon újraindításával hárítható el. - Ha a Docker démon újraindítása után is megjelenik ez a probléma, akkor a probléma hálózati csatlakozási problémákat okozhat a géppel. Annak ellenőrzéséhez, hogy a gép általános hálózata kifogástalan-e, futtassa a következő parancsot a végpontkapcsolat teszteléséhez. A kapcsolat-ellenőrzési parancsot tartalmazó minimális
az acr
verzió a 2.2.9. Frissítse az Azure CLI-t, ha régebbi verziót használ.
az acr check-health -n myRegistry
- Mindig rendelkeznie kell egy újrapróbálkozási mechanizmussal minden Docker-ügyfélművelethez.
A Docker lekérése lassú
Ezzel az eszközzel tesztelheti a gép hálózati letöltési sebességét.
A Docker leküldése lassú
Ezzel az eszközzel tesztelheti a gép hálózati feltöltési sebességét.
A Docker leküldése sikeres, de a Docker-lekérés sikertelen: nem engedélyezett: hitelesítés szükséges
Ez a hiba a Docker démon Red Hat verziójával fordulhat elő, ahol --signature-verification
alapértelmezés szerint engedélyezve van. A Következő parancs futtatásával ellenőrizheti a Red Hat Enterprise Linux (RHEL) vagy Fedora Docker démonbeállításait:
grep OPTIONS /etc/sysconfig/docker
A Fedora 28 Server például a következő docker démonbeállításokat kínálja:
OPTIONS='--selinux-enabled --log-driver=journald --live-restore'
Ha --signature-verification=false
hiányzik, docker pull
a következőhöz hasonló hibával meghiúsul:
Trying to pull repository myregistry.azsacr.<regionname>.<fqdn>/myimage ...
unauthorized: authentication required
A hiba megoldása:
Adja hozzá a lehetőséget
--signature-verification=false
a Docker démonkonfigurációs fájlhoz/etc/sysconfig/docker
. Példa:OPTIONS='--selinux-enabled --log-driver=journald --live-restore --signature-verification=false'
Indítsa újra a Docker démonszolgáltatást a következő parancs futtatásával:
sudo systemctl restart docker.service
A részletek a --signature-verification
futtatással man dockerd
tekinthetők meg.
az acr login sikeres, de a Docker hibával meghiúsul: jogosulatlan: hitelesítés szükséges
Győződjön meg arról, hogy az összes kisbetűs kiszolgáló URL-címét használja, például akkor is, docker push myregistry.azsacr.<regionname>.<fqdn>/myimage:latest
ha a beállításjegyzék-erőforrás neve nagybetűs vagy vegyes, például myRegistry
.
A Docker-démon hibakeresési naplóinak engedélyezése és lekérése
Kezdje dockerd
a debug
beállítással. Először hozza létre a Docker démonkonfigurációs fájlt (/etc/docker/daemon.json
), ha az nem létezik, és adja hozzá a debug
következő lehetőséget:
{
"debug": true
}
Ezután indítsa újra a démont. Például az Ubuntu 14.04-zel:
sudo service docker restart
A részletek a Docker dokumentációjában találhatók.
A naplók a rendszertől függően különböző helyeken hozhatók létre. Az Ubuntu 14.04 esetében például az
/var/log/upstart/docker.log
.
Részletekért tekintse meg a Docker dokumentációját .A WindowsHoz készült Docker esetében a naplók a %LOCALAPPDATA%/docker/alatt jönnek létre. Előfordulhat azonban, hogy még nem tartalmazza az összes hibakeresési információt.
A teljes démonnapló eléréséhez szükség lehet néhány további lépésre:
docker run --privileged -it --rm -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/bin/docker:/usr/local/bin/docker alpine sh docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh chroot /host
Most már hozzáférhet a futó
dockerd
virtuális gép összes fájlához. A napló a következő helyen/var/log/docker.log
található: .
Előfordulhat, hogy az új felhasználói engedélyek nem lesznek azonnal hatályosak a frissítés után
Ha új engedélyeket (új szerepköröket) ad egy szolgáltatásnévnek, előfordulhat, hogy a módosítás nem lép érvénybe azonnal. Két lehetséges oka lehet:
Microsoft Entra szerepkör-hozzárendelés késleltetése. Általában gyors, de a propagálási késleltetés miatt perceket is igénybe vehet.
Engedélykésés az Azure Container Registry-jogkivonat-kiszolgálón. Ez akár 10 percet is igénybe vehet. A mérséklés érdekében 1 perc elteltével ismét hitelesíthet
docker logout
ugyanazzal a felhasználóval:docker logout myregistry.azsacr.<regionname>.<fqdn> docker login myregistry.azsacr.<regionname>.<fqdn>
A hitelesítési információk nem a megfelelő formátumban vannak megadva a közvetlen REST API-hívásokhoz
Előfordulhat, hogy hibát tapasztalInvalidAuthenticationInfo
, különösen ha az curl
eszközt használja a beállítással --location
-L
(az átirányítások követéséhez).
Például a blob curl
beolvasása beállítással és alapszintű hitelesítéssel -L
:
curl -L -H "Authorization: basic $credential" https://$registry.azurecr.io/v2/$repository/blobs/$digest
a következő választ eredményezheti:
<?xml version="1.0" encoding="utf-8"?>
<Error><Code>InvalidAuthenticationInfo</Code><Message>Authentication information is not given in the correct format. Check the value of Authorization header.
RequestId:00000000-0000-0000-0000-000000000000
Time:2019-01-01T00:00:00.0000000Z</Message></Error>
A kiváltó ok az, hogy egyes curl
implementációk az eredeti kérés fejléceit tartalmazó átirányításokat követnek.
A probléma megoldásához manuálisan kell követnie az átirányításokat a fejlécek nélkül. Nyomtassa ki a válaszfejléceket a -D -
következő lehetőséggel, majd bontsa curl
ki a Location
fejlécet:
redirect_url=$(curl -s -D - -H "Authorization: basic $credential" https://$registry.azurecr.io/v2/$repository/blobs/$digest | grep "^Location: " | cut -d " " -f2 | tr -d '\r')
curl $redirect_url
Miért nem sorolja fel az Azure Stack Hub portál az összes adattárat vagy címkét?
Ha a Microsoft Edge/IE böngészőt használja, legfeljebb 100 tárházat vagy címkét láthat. Ha a beállításjegyzék több mint 100 tárházat vagy címkét tartalmaz, javasoljuk, hogy a Firefox vagy a Chrome böngésző használatával listázhassa az összeset.
Miért nem tudja lekérni az Azure Stack Hub portál az adattárakat vagy címkéket?
Előfordulhat, hogy a böngésző nem tudja elküldeni az adattárak vagy címkék lekérésére vonatkozó kérést a kiszolgálónak. Különböző okok is lehetnek, például:
- Hálózati kapcsolat hiánya
- Firewall
- A portál használata nyilvános hálózatról olyan beállításjegyzékhez, amely csak a privát hozzáférést teszi lehetővé
- Hirdetésblokkolók
- DNS-hibák
Forduljon a hálózati rendszergazdához, vagy ellenőrizze a hálózati konfigurációt és a kapcsolatot. az acr check-health -n yourRegistry
Futtassa az Azure CLI-t annak ellenőrzéséhez, hogy a környezet képes-e csatlakozni a Tárolóregisztrációs adatbázishoz. Emellett megpróbálhat inkognitó vagy privát munkamenetet is a böngészőben, hogy elkerülje az elavult böngésző-gyorsítótárat vagy cookie-kat.
Miért nem engedélyezett művelettel meghiúsul a lekéréses vagy leküldéses kérelem?
Az alábbiakban néhány olyan esetet talál, ahol a műveletek nem engedélyezettek:
- A rendszerkép vagy az adattár zárolva lehet, hogy ne lehessen törölni vagy frissíteni. Az az acr show repository paranccsal megtekintheti az aktuális attribútumokat.
- Egyes műveletek nem engedélyezettek, ha a rendszerkép karanténban van. További információ a karanténról.
- Előfordulhat, hogy a beállításjegyzék elérte a tárterületkorlátot.
Az adattár formátuma érvénytelen vagy nem támogatott
Ha olyan hibaüzenetet lát, mint a "nem támogatott adattár formátuma", "érvénytelen formátum", vagy "a kért adatok nem léteznek" hibaüzenet jelenik meg, amikor adattárnevet ad meg az adattárműveletekben, ellenőrizze a név helyesírását és esetét. Az érvényes adattárnevek csak kisbetűs alfanumerikus karaktereket, pontokat, kötőjeleket, aláhúzásjeleket és perjeleket tartalmazhatnak.
Hogyan http-nyomkövetéseket gyűjteni Windows rendszeren?
Előfeltételek
- A https visszafejtése engedélyezése a Fiddlerben: https://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/DecryptHTTPS
- Engedélyezze a Dockernek, hogy proxyt használjon a Docker felhasználói felületén keresztül: https://docs.docker.com/docker-for-windows/#proxies
- Ha elkészült, mindenképpen térjen vissza. A Docker nem működik ezzel az engedélyezve, és a Fiddler nem fut.
Windows-tárolók
Docker-proxy konfigurálása 127.0.0.1:8888-ra
Linux-tárolók
Keresse meg a Docker virtuális gép virtuális kapcsolójának IP-címét:
(Get-NetIPAddress -InterfaceAlias "*Docker*" -AddressFamily IPv4).IPAddress
Konfigurálja a Docker-proxyt az előző parancs és a 8888-os port kimenetére (például 10.0.75.1:8888)
Következő lépések
- További információ az Azure Container Registryről.