Szerkesztés

Share via


Gyakori kérdések – Azure Container Registry az Azure Stack Hubon

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:

  1. 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 .

  2. 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.

  3. 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 AcrPullAcrPush 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 vagy AcrPush 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 a AcrPull 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:

  1. Szerkessze a daemon.json linuxos gazdagépeken és a Windows Serveren C:\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.

  2. Mentse és lépjen ki a fájlból.

  3. 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:

  1. 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'

  2. 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 dockerdtalá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:latestha 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ó dockerdvirtuá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 -Lbeá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

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