Többarchitektúra-rendszerképek az Azure Container Registryben
Ez a cikk bemutatja a több architektúra (többíves) rendszerképeket, valamint azt, hogyan használhatja Azure Container Registry funkciókat a létrehozásukhoz, tárolásához és használatához.
A többíves rendszerképek olyan tárolólemezképek, amelyek különböző architektúrákhoz és néha különböző operációs rendszerekhez is kombinálhatják a változatokat. Ha többarchitektúra-támogatással rendelkező lemezképet futtat, a tárolóügyfelek automatikusan kiválasztanak egy olyan rendszerképvariánst, amely megfelel az operációs rendszernek és az architektúrának.
Jegyzékfájlok és jegyzéklisták
A többíves képek képjegyzékeken és jegyzéklistákon alapulnak.
Jegyzék
Minden tárolórendszerképet egy jegyzékfájl jelöl. A jegyzékfájl egy JSON-fájl, amely egyedileg azonosítja a képet, hivatkozva a rétegekre és a hozzájuk tartozó méretekre.
A Linux-rendszerképek hello-world
alapszintű jegyzékfájlja az alábbihoz hasonlóan néz ki:
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 1510,
"digest": "sha256:fbf289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e"
},
"layers": [
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 977,
"digest": "sha256:2c930d010525941c1d56ec53b97bd057a67ae1865eebf042686d2a2d18271ced"
}
]
}
A jegyzékfájlokat megtekintheti Azure Container Registry az Azure CLI Azure Portal vagy eszközeivel, például az az acr manifest list-metadata paranccsal.
Jegyzéklista
A többíves rendszerképek jegyzéklistája (más néven az OCI-képek képindexe ) képek gyűjteménye (indexe), és egy vagy több képnév megadásával hozhat létre egyet. Részletes információkat tartalmaz az egyes rendszerképekről, például a támogatott operációs rendszerről és architektúráról, a méretről és a jegyzék-kivonatról. A jegyzéklista ugyanúgy használható, mint a képek neve a és docker run
parancsokbandocker pull
.
A docker
parancssori felület a docker jegyzékfájl-parancsával kezeli a jegyzékfájlokat és a jegyzéklistákat.
Megjegyzés
A parancs és az docker manifest
alparancsok jelenleg kísérleti jellegűek. A kísérleti parancsok használatával kapcsolatos részletekért tekintse meg a Docker dokumentációját.
A jegyzéklistát a docker manifest inspect
paranccsal tekintheti meg. A következő a többíves rendszerkép mcr.microsoft.com/mcr/hello-world:latest
kimenete, amely három jegyzékfájlból áll: kettő Linux operációsrendszer-architektúrákhoz és egy Windows-architektúrához.
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 524,
"digest": "sha256:83c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 525,
"digest": "sha256:873612c5503f3f1674f315c67089dee577d8cc6afc18565e0b4183ae355fb343",
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 1124,
"digest": "sha256:b791ad98d505abb8c9618868fc43c74aa94d08f1d7afe37d19647c0030905cae",
"platform": {
"architecture": "amd64",
"os": "windows",
"os.version": "10.0.17763.1697"
}
}
]
}
Ha egy többíves jegyzéklistát Azure Container Registry tárol, a jegyzéklistát a Azure Portal vagy olyan eszközökkel is megtekintheti, mint az az acr manifest list-metadata parancs.
Többíves rendszerkép importálása
A meglévő többíves rendszerképek az az acr import paranccsal importálhatók az Azure Container Registrybe. A képimportálás szintaxisa megegyezik az egyarchitektúrás rendszerképek szintaxisával. Az egyarchitektúrás rendszerképek importálásához hasonlóan a többíves rendszerképek importálása nem használ Docker-parancsokat.
Részletekért lásd: Tárolórendszerképek importálása tárolóregisztrációs adatbázisba.
Többíves rendszerkép leküldése
Ha különböző architektúrákhoz hoz létre tárolórendszerképeket buildelési munkafolyamatokkal, kövesse az alábbi lépéseket egy többíves rendszerkép azure-tárolóregisztrációs adatbázisba való leküldéséhez.
Az egyes architektúraspecifikus rendszerképek címkézése és leküldése a tárolóregisztrációs adatbázisba. Az alábbi példa két Linux-architektúrát feltételez: arm64 és amd64.
docker tag myimage:arm64 \ myregistry.azurecr.io/multi-arch-samples/myimage:arm64 docker push myregistry.azurecr.io/multi-arch-samples/myimage:arm64 docker tag myimage:amd64 \ myregistry.azurecr.io/multi-arch-samples/myimage:amd64 docker push myregistry.azurecr.io/multi-arch-samples/myimage:amd64
Futtassa a parancsot
docker manifest create
egy jegyzéklista létrehozásához, amely az előző képeket többíves rendszerképekké egyesíti.docker manifest create myregistry.azurecr.io/multi-arch-samples/myimage:multi \ myregistry.azurecr.io/multi-arch-samples/myimage:arm64 \ myregistry.azurecr.io/multi-arch-samples/myimage:amd64
Küldje le a jegyzékfájlt a tárolóregisztrációs adatbázisba a használatával
docker manifest push
:docker manifest push myregistry.azurecr.io/multi-arch-samples/myimage:multi
A jegyzéklista megtekintéséhez használja a
docker manifest inspect
parancsot. Egy példa a parancs kimenetére az előző szakaszban látható.
Miután leküldte a többíves jegyzékfájlt a beállításjegyzékbe, ugyanúgy használja a többíves rendszerképet, mint az egyarchitektúrás rendszerképet. Kérje le például a rendszerképet a paranccsal docker pull
, és használja az az acr repository parancsokat a kép címkéinek, jegyzékfájljainak és egyéb tulajdonságainak megtekintéséhez.
Többíves rendszerkép létrehozása és leküldése
Az ACR Tasks funkcióival létrehozhat és leküldhet egy többíves rendszerképet az Azure Container Registrybe. Definiáljon például egy többlépéses feladatot egy YAML-fájlban , amely linuxos többíves rendszerképet hoz létre.
Az alábbi példa feltételezi, hogy két architektúra , az arm64 és az amd64 különálló Docker-fájlokkal rendelkezik. Létrehozza és leküldi az architektúraspecifikus lemezképeket, majd létrehoz és leküld egy többíves jegyzékfájlt, amely a latest
következő címkével rendelkezik:
version: v1.1.0
steps:
- build: -t {{.Run.Registry}}/multi-arch-samples/myimage:{{.Run.ID}}-amd64 -f dockerfile.arm64 .
- build: -t {{.Run.Registry}}/multi-arch-samples/myyimage:{{.Run.ID}}-arm64 -f dockerfile.amd64 .
- push:
- {{.Run.Registry}}/multi-arch-samples/myimage:{{.Run.ID}}-arm64
- {{.Run.Registry}}/multi-arch-samples/myimage:{{.Run.ID}}-amd64
- cmd: >
docker manifest create
{{.Run.Registry}}/multi-arch-samples/myimage:latest
{{.Run.Registry}}/multi-arch-samples/myimage:{{.Run.ID}}-arm64
{{.Run.Registry}}/multi-arch-samples/myimage:{{.Run.ID}}-amd64
- cmd: docker manifest push --purge {{.Run.Registry}}/multi-arch-samples/myimage:latest
- cmd: docker manifest inspect {{.Run.Registry}}/multi-arch-samples/myimage:latest
Következő lépések
- Az Azure Pipelines használatával tárolórendszerképeket hozhat létre különböző architektúrákhoz.
- Ismerje meg, hogyan hozhat létre többplatformos rendszerképeket a docker buildx beépülő modullal.