le goudron:Ne peut pas lire:Est-ce un répertoire dans Docker
Question
Je souhaite ajouter une archive (.tar.gz
) et décompressez-le lors de la création de l'image à l'aide d'un Dockerfile.
ADD archive.tar.gz /archive.tar.gz
RUN tar xzf archive.tar.gz
Lorsque je veux décompresser l'archive, j'obtiens le message suivant :
tar: /archive.tar.gz: Cannot read: Is a directory
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now
ce qui n'a aucun sens pour moi, puisque le fichier archive.tar.gz
n'est pas un répertoire.
La solution
Après avoir exécuté une validation intermédiaire de l'image Docker, j'ai pu voir que /archive.tar.gz
c'est en effet un répertoire.Cela signifie que Docker extrait automatiquement les archives lors de leur ajout lors de la création de l'image.
Maintenant, je pourrais aussi trouver cela documenté dans documentation du menu fixe.
(modifier:fichiers, par ex. .sql.gz
, ne sont pas décompressés lors de l'ajout)
Autres conseils
Si vous souhaitez que l'archive reste telle quelle, utilisez COPY
, pas ADD
.
Pour ceux qui ont rencontré ce problème plus récemment en faisant référence à télécommande URL avec leur ADD
commandes, c'est un problème avec Docker 17.06.0-ce (2017-06-28)
.
Depuis Notes de version de Dockers:
Note:Docker 17.06.0 a un problème dans le générateur d'images provoquant une modification du comportement de l'instruction ADD de Dockerfile lors du référencement d'un fichier .tar.gz distant.Le problème sera résolu dans Docker 17.06.1.