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 :grin:, 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.