Docker manifest
-
Re : Installer un registry Docker privé et multiarch
Depuis cet article, docker intègre la gestion des manifests dans son cli. C’est expérimental mais bon… Ca fonctionne
Configuration du cli
Il faut autoriser votre cli à utiliser les commandes expérimentales en rajoutant à votre config Docker (par exemple
~/.docker/config.json
) :{ "experimental": "enabled" }
Création du manifest
Si j’ai créé 2 images Docker nommées :
- ${REGISTRY}/${NAME}-amd64-linux:latest
- ${REGISTRY}/${NAME}-arm-linux:latest
alors :
$ docker manifest create ${REGISTRY}/${NAME}:latest ${REGISTRY}/${NAME}-amd64-linux:latest ${REGISTRY}/${NAME}-arm-linux:latest
Attention : la nom des images est important si vous souhaitez que Docker reconnaisse automatiquement l’OS et l’architecture de votre image ! Dans les faits, et peut-être parce que c’est expérimental
, j’ai du annoter l’image pour lui forcer l’architecture :
$ docker manifest annotate ${REGISTRY}/${NAME}:latest ${REGISTRY}/${NAME}-arm-linux:latest --arch arm
Pour vous assurer que tout est ok, faites un
inspect
de votre image (avant le annote pour vérifier qu’il est toujours utile ?) :$ docker manifest inspect ${REGISTRY}/${NAME}:latest { "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json", "manifests": [ { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 593, "digest": "sha256:b113", "platform": { "architecture": "amd64", "os": "linux" } }, { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 593, "digest": "sha256:6e50a", "platform": { "architecture": "arm", "os": "linux" } } ] }
Publier sur le registry
C’est le plus simple :
$ docker manifest push ${REGISTRY}/${NAME}:latest
La doc officielle est ici.