TAR: non può leggere: è una directory in Docker
Domanda
Voglio aggiungere un archivio (.tar.gz
) e disimballare durante la creazione dell'immagine utilizzando un dockerfile.
ADD archive.tar.gz /archive.tar.gz
RUN tar xzf archive.tar.gz
.
Quando voglio disimballare l'archivio, ottengo il messaggio seguente:
tar: /archive.tar.gz: Cannot read: Is a directory
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now
.
Che non ha alcun senso per me, dal momento che il file archive.tar.gz
non è una directory.
Soluzione
Dopo aver eseguito un commit intermedio dell'immagine Docker ho potuto vedere, che /archive.tar.gz
è in effetti una directory.
Ciò significa che Docker estrae automaticamente gli archivi durante l'aggiunta durante la creazione dell'immagine.
Ora potrei anche trovare questo documentato in Documentazione Docker .
(Modifica: file, E.G. .sql.gz
, non sono decompressi sull'aggiunta)
Altri suggerimenti
Se si desidera che l'archivio rimanga come utilizzare COPY
, non ADD
.
Per gli altri che hanno funzionato in questo problema più recentemente quando si fa riferimento remoto URL con i loro comandi ADD
, questo è un problema con Docker 17.06.0-ce (2017-06-28)
.
.Nota: Docker 17.06.0 ha un problema nel generatore di immagini che causa una modifica del comportamento dell'iscrizione di istruzioni di Dockerfile quando si fa riferimento a un file remoto .tar.gz.Il problema sarà fissato in Docker 17.06.1.