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.