docker manifest în Docker

Imagini Docker 18.02+ (fără mod experimental din 20.10)

Inspectează și creează liste de manifeste: o singură etichetă de imagine pentru mai multe arhitecturi (amd64, arm64).

Sintaxă comandă
docker manifest inspect [--verbose] <imagine>
docker manifest create <listă> <imagine>...
docker manifest push <listă>

Ce face docker manifest

Imaginea nginx:1.27 funcționează și pe un server Intel, și pe un Mac cu procesor Apple, pentru că eticheta indică o listă de manifeste (sau un index OCI): câte o imagine pentru fiecare platformă. La docker pull, Docker alege automat varianta potrivită. docker manifest inspect arată această listă direct din registru, fără să descarce imaginea.

Cu create și push poți combina imagini construite separat pentru fiecare arhitectură într-o singură etichetă. Astăzi, pentru imagini multi-arhitectură, varianta recomandată este docker buildx build --platform linux/amd64,linux/arm64 --push, care construiește și publică lista într-un singur pas; docker buildx imagetools inspect oferă o inspectare mai lizibilă.

Parametri

Parametru Descriere
inspect IMAGINE Afișează manifestul sau lista de manifeste, în JSON.
inspect --verbose Adaugă detalii (inclusiv straturile) pentru fiecare platformă.
create LISTĂ IMG1 IMG2 Creează local o listă de manifeste din imagini deja publicate.
annotate --os --arch Corectează platforma unei intrări din listă.
push LISTĂ Publică lista în registru.
rm LISTĂ Șterge lista creată local.

Exemple

Exemplul 1: Ce platforme are o imagine

Ieșirea este scurtată; fiecare intrare are digest-ul și platforma ei.

docker manifest inspect nginx:1.27-alpine

Ieșire în terminal

{
   "schemaVersion": 2,
   "mediaType": "application/vnd.oci.image.index.v1+json",
   "manifests": [
      {
         "mediaType": "application/vnd.oci.image.manifest.v1+json",
         "size": 2068,
         "digest": "sha256:4f2c9b1e…",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.oci.image.manifest.v1+json",
         "size": 2068,
         "digest": "sha256:9a7d3e5c…",
         "platform": {
            "architecture": "arm64",
            "os": "linux",
            "variant": "v8"
         }
      },
      ...
   ]
}

Exemplul 2: O etichetă comună pentru două build-uri separate

Imaginile pentru amd64 și arm64 au fost construite și publicate separat (de exemplu pe două runnere CI); le unim sub eticheta 1.4.

docker manifest create firma/magazin-api:1.4 \
    firma/magazin-api:1.4-amd64 \
    firma/magazin-api:1.4-arm64
docker manifest push firma/magazin-api:1.4

Ieșire în terminal

Created manifest list docker.io/firma/magazin-api:1.4
sha256:2d8f4a6c0e1b3d5f7a9c2e4b6d8f0a1c3e5b7d9f2a4c6e8b0d1f3a5c7e9b2d4f

Greșeli frecvente

  • Folosirea docker manifest create cu imagini care există doar local: comanda lucrează cu imagini publicate în registru. Fă întâi docker push pentru fiecare arhitectură.
  • Confuzia cu docker image inspect: aceasta citește imaginea descărcată local (o singură platformă), nu lista de manifeste din registru.

Comenzi înrudite

  • docker history: Afișează straturile unei imagini, cu instrucțiunea Dockerfile care a creat fiecare strat și mărimea lui.
  • docker search: Caută imagini în Docker Hub direct din terminal, cu filtre pentru imagini oficiale și număr minim de stele.