Ez a cikk a Azure Container Registry 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 Azure Container Registry 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 a 2019-05-01-es verzióra, különben nem sikerül üzembe helyezni.
Biztonsági réseket keresnek az ACR-ben az Azure Stack Hubon?
Nem. Jelenleg nincs integráció az Azure Stack Hubon üzembe helyezett regisztrációs adatbázisok Azure Security Center. Vannak külső é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 szükségletének pótlására.
Hogyan konfigurálja a Kubernetes-t Azure Container Registry?
Tekintse meg a Kubernetes dokumentációját és a 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. Az egyéni identitást a felhasználók és a szolgáltatásnevek számára javasoljuk fej nélküli forgatókönyvek esetén. Lásd: A hitelesítés áttekintése.
A rendszergazdai hitelesítő adatok lekérése előtt 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 kap 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. Az egyéni identitást a felhasználók és a szolgáltatásnevek számára javasoljuk fej nélküli forgatókönyvek esetén. Lásd: A hitelesítés áttekintése.
A rendszergazdai hitelesítő adatok lekérése előtt 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üld egy tárolórendszerképet a Azure Container Registry egy Kubernetes-t futtató, leválasztott Azure Stack Hub-üzembe helyezésbe?
Gépről gépre történő lemezké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. Ehhez tegye a következőket:
Először kérje le a szükséges tárolólemezkép(ek)et egy internetkapcsolattal rendelkező géppel a docker PARANCSSORI és a Docker lekéréses parancsával. További információ: Tárolórendszerké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ímke és a docker leküldéses parancsokkal címkézheti meg és küldheti le a rendszerképet az Azure Stack Hub-adattár helyi Azure Container Registry.
Regisztrációs adatbázis műveletei
Hogyan elérni a Docker Registry HTTP API V2-t?
Az ACR támogatja a Docker Registry HTTP API V2-t. Az API-k a címen https://<your registry login server>/v2/
érhetők el. Például: https://mycontainerregistry.azsacr.<regionname>.<fqdn>/v2/
Hogyan törli az adattárak egyik címkéje által nem hivatkozott összes jegyzékfájlt?
Ha bash-en dolgozik:
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@$_ }
Megjegyzés
A törlési paranccsal kihagyhatja --yes
a megerősítést.
További információ: Tárolórendszerképek törlése Azure Container Registry.
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órendszerképek. Ha hivatkozás nélküli rendszerképet töröl, a beállításjegyzék használata néhány perc múlva frissül.
Hogyan ellenőrizze a tárterületkvóta változásait?
Hozzon létre egy 1 GB-os réteggel rendelkező lemezképet a következő docker-fájl használatával. Ez biztosítja, hogy a lemezkép olyan réteggel legyen elosztva, amelyet a beállításjegyzékben lévő más rendszerképek nem osztanak 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 rendszerképet a regisztrációs adatbázisba 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őtt 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-vel vagy a portállal, és ellenőrizze néhány perc múlva a frissített használatot.
az acr repository delete -n myregistry --image 1gb
Hogyan hitelesítést a regisztrációs adatbázissal, amikor a parancssori felületet egy tárolóban futtatja?
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 végezze el a hitelesítést a beállításjegyzékkel:
az acr login -n MyRegistry
A TLS 1.2 engedélyezése
Engedélyezze a TLS 1.2-t bármely legutóbbi Docker-ügyféllel (18.03.0-s vagy újabb verzió).
Fontos
2020. január 13-tól a Azure Container Registry megköveteli a kiszolgálók és alkalmazások minden 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 Azure Container Registry az Azure Stack Hubon a tartalommegbízhatóságot?
Nem, az Azure Stack Hubon futó Azure Container Registry aktuális kiadása csak a "Standard" termékváltozatot támogatja, és nem támogatja a tartalommegbízhatóságot.
Hogyan hozzáférést ad 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 ACR támogatja azokat az egyéni szerepköröket , 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 AcrPull
AcrPush
rendszerképek lekérését és/vagy leküldését a beállításjegyzék-erőforrás Azure-beli kezeléséhez szükséges engedély nélkül.
Azure Stack Hub-portál: A beállításjegyzék –> Access Control (IAM) –> Hozzáadás (válassza ki
AcrPull
vagyAcrPush
a szerepkört).Azure CLI: Keresse meg a beállításjegyzék erőforrás-azonosítóját a következő parancs futtatásával:
az acr show -n myRegistry
Ezután hozzárendelheti a vagy
AcrPush
aAcrPull
szerepkört egy felhasználóhoz (az alábbi példa a következőt használjaAcrPull
):az role assignment create --scope resource_id --role AcrPull --assignee user@example.com
Vagy rendelje hozzá a szerepkört az alkalmazásazonosítója által 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
Ha csak a vagy AcrPush
a AcrPull
szerepkört használja, 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 jeleníti meg a beállításjegyzéket.
Hogyan leküldi a nem terjeszthető rétegeket egy beállításjegyzékbe?
A jegyzékfájl nem terjeszthető rétege tartalmaz egy URL-paramétert, 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ózati korlátozás alá eső regisztrációs adatbázisok, a korlátozott hozzáféréssel rendelkező légileképezett regisztrációs adatbázisok vagy az internetkapcsolattal nem rendelkező regisztrációs adatbázisok.
Ha például NSG-szabályok vannak beállítva, hogy egy virtuális gép csak az Azure Tárolóregisztrációs adatbázisból tudja lekérni a rendszerképeket, a Docker lekéri a külső/nem terjeszthető rétegek hibáit. Egy Windows Server Core-rendszerkép például idegen rétegbeli hivatkozásokat tartalmazna az Azure Container Registry jegyzékfájljában, és ebben a forgatókönyvben nem sikerülne 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>"] }
Megjegyzés
Az érték a beállításjegyzék címeinek tömbje, vesszővel elválasztva.
Mentse és lépjen ki a fájlból.
Indítsa újra a Dockert.
Amikor leküldi a rendszerképeket a listában szereplő regisztrációs adatbázisoknak, 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. Ezt a funkciót csak az összetevők privát regisztrációs adatbázisokba való leküldésére használhatja. Győződjön meg arról, hogy megfelel minden olyan feltételnek, amely a nem terjeszthető összetevők újraelosztására vonatkozik.
Diagnosztika és állapotellenőrzések
Állapot ellenőrzése az "az acr check-health" paranccsal
A környezettel és a beállításjegyzéktel kapcsolatos gyakori problémák elhárításához tekintse meg az Azure Container Registry állapotának ellenőrzését ismertető cikket.
A Docker lekérése a következő hibával meghiúsul: 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 sikertelen, akkor probléma lehet a Docker-démonnal. A probléma általában a Docker-démon újraindításával oldható meg. - Ha a Probléma továbbra is fennáll a Docker-démon újraindítása után, akkor a probléma a gép hálózati kapcsolati problémáival kapcsolatos lehet. Annak ellenőrzéséhez, hogy a gép általános hálózata kifogástalan állapotú-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. Ha régebbi verziót használ, frissítse az Azure CLI-t.
az acr check-health -n myRegistry
- Minden Docker-ügyfélművelethez mindig rendelkeznie kell újrapróbálkozási mechanizmussal.
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és 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ése a következő hibával meghiúsul: jogosulatlan: 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 tartalmazza:
OPTIONS='--selinux-enabled --log-driver=journald --live-restore'
docker pull
Hiányzó hiba esetén --signature-verification=false
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éldául: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észletei a --signature-verification
parancs futtatásával man dockerd
találhatók.
az acr login succeeds but docker fails with error: unauthorized: authentication required
Győződjön meg arról, hogy az összes kisbetűs kiszolgálói URL-címet használja, például akkor is, docker push myregistry.azsacr.<regionname>.<fqdn>/myimage:latest
ha a beállításjegyzékbeli 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émon konfigurációs fájlját (/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 a következő
/var/log/upstart/docker.log
: .
Részletekért lásd 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 további lépésekre lehet szükség:
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ájljára. A napló a következő helyen található:/var/log/docker.log
.
Előfordulhat, hogy az új felhasználói engedélyek nem lesznek azonnal érvényben 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 azonnal érvénybe. Ennek 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 percekig is eltarthat.
Engedélykésés az ACR-jogkivonat-kiszolgálón. Ez akár 10 percet is igénybe vehet. A probléma elhárításához 1 perc elteltével újra hitelesítheti
docker logout
magát ugyanazzal a felhasználóval:docker logout myregistry.azsacr.<regionname>.<fqdn> docker login myregistry.azsacr.<regionname>.<fqdn>
A hitelesítési adatok nem a megfelelő formátumban vannak megadva a közvetlen REST API-hívásokhoz
Előfordulhat, hogy hibaüzenet jelenik InvalidAuthenticationInfo
meg, különösen ha az eszközt használja curl
a -L
beállítással --location
(az átirányítások követéséhez).
Például a blob beolvasása a következő beállítással és alapszintű hitelesítéssel curl
-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 fejlécet Location
:
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 adattárat vagy címkét láthat. Ha a beállításjegyzék több mint 100 adattárral vagy címkével rendelkezik, javasoljuk, hogy az összeset a Firefox vagy a Chrome böngésző használatával listázhassa.
Miért nem sikerül beolvasni az Azure Stack Hub portálja 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. Ennek különböző okai lehetnek:
- A 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 privát hozzáférést engedélyez
- 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. Próbálja meg futtatni az acr check-health -n yourRegistry
az Azure CLI-t annak ellenőrzéséhez, hogy a környezet képes-e csatlakozni a Container Registryhez. 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 hiúsul meg a lekéréses vagy leküldéses kérelem nem engedélyezett művelettel?
Íme néhány forgatókönyv, ahol a műveletek nem engedélyezettek:
- Előfordulhat, hogy a rendszerkép vagy adattár zárolva van, 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átját.
Az adattár formátuma érvénytelen vagy nem támogatott
Ha olyan hibaüzenetet lát, mint a "nem támogatott adattárformátum", "érvénytelen formátum", vagy "a kért adatok nem léteznek", amikor adattárnevet ad meg az adattárműveletekben, ellenőrizze a név helyesírását és kis- és nagybetűit. 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űjt Windows rendszeren?
Előfeltételek
- Https visszafejté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 állítsa vissza a beállítást. A Docker nem működik ezzel az engedélyezve van, és a Fiddler nem fut.
Windows-tárolók
A Docker-proxy konfigurálása a következőre: 127.0.0.1:8888
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ó a Azure Container Registry.