Tar: Не удается прочитать: является ли каталог в докере

Я хочу добавить архив (.tar.gz) и распаковать его во время создания образа с помощью файла Docker.

ADD archive.tar.gz /archive.tar.gz
RUN tar xzf archive.tar.gz

Когда я хочу распаковать архив, я получаю следующее сообщение:

tar: /archive.tar.gz: Cannot read: Is a directory
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now

что не имеет для меня никакого смысла, поскольку файл archive.tar.gz не является каталогом.

Ответы

Ответ 1

После выполнения промежуточной фиксации изображения докеры я мог видеть, что /archive.tar.gz действительно является каталогом. Это означает, что докер автоматически извлекает архивы при их добавлении при создании образа.

Теперь я также могу найти это в документах docker.

(редактирование: файлы, например .sql.gz, не распаковываются при добавлении)

Ответ 2

Если вы хотите, чтобы архив оставался таким, как используется COPY, а не ADD.

Ответ 3

Для других, которые недавно столкнулись с этой проблемой при ссылке на удаленные URL-адреса с их командами ADD, это проблема с Docker 17.06.0-ce (2017-06-28).

От Заметки о выпуске Dockers:

Примечание. У Docker 17.06.0 есть проблема в построителе изображений, вызывающая изменение поведения инструкции ADD файла Docker при обращении к удаленному файлу .tar.gz. Проблема будет исправлена ​​в Docker 17.06.1.