Packer: Le post-processeur docker-push essaie de pousser en utilisant une chaîne de dépôt non valide (utilise sha256:string de repositories.json)

Créé le 2 mars 2016  ·  3Commentaires  ·  Source: hashicorp/packer

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

post-processodocker question

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 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.

Tous les 3 commentaires

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é :).

Cette page vous a été utile?
0 / 5 - 0 notes