POUR LES BOGUES :
Packer ne parvient pas à pousser en utilisant sha256 du référentiel, sha apparié à /var/lib/docker/image/aufs/repositories.json avec des détails corrects.
Cela casse complètement le post-processeur docker pour pousser vers ECR
Selon les documents officiels de docker, Utilisation : docker push [OPTIONS] NAME[:TAG] cependant
2016/03/02 16:37:02 ui: docker (docker-push): Pousser: sha256:2e18ee540e6941f218f27d8a38ae5b60bb9aaef3953ef23aa0d4cfa30ac82b35
2016/03/02 16:37:02 packer: 2016/03/02 16:37:02 Exécution: /usr/bin/docker [push sha256:2e18ee540e6941f218f27d8a38ae5b60bb9aaef3953ef23aa0d4cfa30ac82b35]
le sha256 affiché correspond au sha256 dans repositories.json à côté de la chaîne de référentiel réelle qui fonctionnerait si elle était utilisée.
Source responsable
https://github.com/mitchellh/packer/blob/master/post-processor/docker-push/post-processor.go#L86 -L102
name := artifact.Id()
if i := strings.Index(name, "/"); i >= 0 {
// This should always be true because the / is required. But we have
// to get the index to this so we don't accidentally strip off the port
if j := strings.Index(name[i:], ":"); j >= 0 {
name = name[:i+j]
}
}
ui.Message("Pushing: " + name)
if err := driver.Push(name); err != nil {
return nil, false, err
}
return nil, false, nil
}
Tentative de découplage du packer, même erreur.
[ root@ graphene packer_ansible]# docker push sha256:82b1e1e0e34c1aa59fe90287812a0867b184c1287313ea04c4dd80971e57e9fe
Le push fait référence à un référentiel [docker.io/library/sha256]
Le référentiel n'existe pas : sha256
PACKER_LOG=1 packer build template.json
.Même problème avec Packer 0.8.6
Merci d'avoir ouvert un sujet. Il vous manque une paire d'accolades carrées dans votre section post-processeur (vous avez besoin d'une liste de listes).
Cela signifie que chaque post-processeur s'exécute directement sur la sortie du générateur, plutôt que docker-push
s'exécutant sur le résultat de docker-tag
, et c'est pourquoi vous voyez docker-push
essayant de pousser le SHA.
Si vous regardez les exemples sur la page docker, vous remarquerez qu'ils ont des listes imbriquées. (Un ensemble supplémentaire de [ ]
.)
Ce n'est pas un mode de défaillance intuitif. Je vois ce problème survenir assez régulièrement et j'ai pensé que c'était moi-même un bug lorsque je l'ai rencontré pour la première fois.
La raison pour laquelle cela fonctionne de cette façon est que cela nous permet d'utiliser le résultat d'une construction plus d'une fois. Ainsi, par exemple, si vous souhaitez créer un fichier Vagrant .box
_and_ un fichier .tar
en même temps ou étiqueter un docker build comme v1.2.3
_and_ staging
ou push à ECS _et_ DockerHub en même temps, vous pouvez le faire sans avoir à exécuter la construction deux fois.
Merci d'avoir expliqué :).
Commentaire le plus utile
Merci d'avoir ouvert un sujet. Il vous manque une paire d'accolades carrées dans votre section post-processeur (vous avez besoin d'une liste de listes).
Cela signifie que chaque post-processeur s'exécute directement sur la sortie du générateur, plutôt que
docker-push
s'exécutant sur le résultat dedocker-tag
, et c'est pourquoi vous voyezdocker-push
essayant de pousser le SHA.Si vous regardez les exemples sur la page docker, vous remarquerez qu'ils ont des listes imbriquées. (Un ensemble supplémentaire de
[ ]
.)Ce n'est pas un mode de défaillance intuitif. Je vois ce problème survenir assez régulièrement et j'ai pensé que c'était moi-même un bug lorsque je l'ai rencontré pour la première fois.
La raison pour laquelle cela fonctionne de cette façon est que cela nous permet d'utiliser le résultat d'une construction plus d'une fois. Ainsi, par exemple, si vous souhaitez créer un fichier Vagrant
.box
_and_ un fichier.tar
en même temps ou étiqueter un docker build commev1.2.3
_and_staging
ou push à ECS _et_ DockerHub en même temps, vous pouvez le faire sans avoir à exécuter la construction deux fois.