Docker ERROR: ошибка обработки tar файла (статус выхода 1): неожиданный EOF

Мне понадобилось место и выполнено: docker rmi $(docker images -f "dangling=true" -q)

С тех пор я не могу с docker-compose: docker-compose build, я получаю ошибку: ERROR: Error processing tar file(exit status 1): unexpected EOF.

Я попытался удалить все изображения, переустановить докер, но ничего не сделаю: всегда одна и та же ошибка, через некоторое время.

Я построил на другой системе и работал, что говорит о том, что это проблема неправильного состояния.

Любая идея, что я должен очистить?

Использование:

▶ docker version
Client:
 Version:      17.03.0-ce
 API version:  1.24 (downgraded from 1.26)
 Go version:   go1.7.5
 Git commit:   3a232c8
 Built:        Tue Feb 28 08:01:32 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.6
 API version:  1.24 (minimum version )
 Go version:   go1.6.2
 Git commit:   78d1802
 Built:        Tue Jan 31 23:35:14 2017
 OS/Arch:      linux/amd64
 Experimental: false

▶ docker-compose version
docker-compose version 1.11.2, build dfed245
docker-py version: 2.1.0
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

Ответ 1

Существует встроенная команда для удаления неиспользуемых изображений (версия 1.13 +):

docker image prune

Теперь, чтобы справиться с ситуацией:

  • Остановить службу докеров

    systemctl stop docker
    
  • Резервное копирование /var/lib/docker затем:

  • Удалите /var/lib/docker Внимание: это приведет к удалению изображений, контейнеров, томов,... убедитесь, что вы сначала создаете резервную копию.

    rm -rf /var/lib/docker
    
  • Запустите службу Docker

    systemctl start docker  
    

Update:

Как отмечено в другом ответе, в некоторых случаях это могут быть проблемы с правами доступа к файлам. Просмотрите разрешения.

Ответ 2

У меня была та же проблема, и одобренный ответ не сработал у меня.

Оказывается, у меня был файл с разрешениями, которые не позволяли пользователю работать с docker-compose. После удаления файла все было в порядке

Ответ 3

Для меня это была ошибка разрешения. Я шел против той же самой проблемы, что и PR, ERROR: Error processing tar file(exit status 1): unexpected EOF Мое решение грязное, но у меня сработало

chown -R 777/foo/bar/project

Вы почти всегда хотите избегать установки разрешений на 777, 655 более разумно.

0 = ---
1 = --x
2 = -w-
3 = -wx
4 = r-
5 = r-x
6 = rw-
7 = rwx

Более подробное объяснение можно найти здесь: https://www.pluralsight.com/blog/it-ops/linux-file-permissions

Ответ 4

Для меня проблема выяснилось, что Docker Pull был повешен, поэтому я CTRL + C'd вышел из него и снова попытался. Такое же сообщение об ошибке.

В конце концов я нашел несколько файлов, принадлежащих root в этом каталоге. Предоставление прав доступа к файлам исправило проблему.

chown -R <username>:<group> /var/lib/docker/tmp

  • MAC Docker version 17.12.0-ce, build c97c6d6

Ответ 5

В моем случае проблема заключалась в файле .dump, созданном одним из моих сценариев проекта.

docker-compose передает контекст движку в виде файла tar, поэтому команда build упаковывала tar (файл .dump) в другой файл tar (контекст docker), следовательно, создавая неожиданный EOF для контекста.

Поскольку мне не нужен файл .dump в контейнере, я добавил его в свой файл .dockerignore.

Ответ 6

Если вы попытались просмотреть разрешения, сбросить docker, удалить систему docker, удалить все контейнеры, удалить все изображения (висящие или нет), прочитать обо всем, что окружает эту проблему и не удалось. Попробуйте удалить Docker и переустановить стабильную версию.

Хотя ошибка, с которой я боролся, была: Error processing tar file(exit status 1): mkdir/some/path/name: no such file or directory

Ответ 8

Я попробовал все: от перезагрузки, переустановки Docker и очистки /var/lib/docker.

Моей причиной было что-то, что повредило контекст сборки в моем проекте. После того, как я запустил git clean, чтобы вернуть каталог проекта в исходное состояние, я смог docker-compose.

Запустите git clean -iXd в корневом каталоге вашего проекта, чтобы интерактивно git clean.

Редактировать: через некоторое время это случилось снова. На этот раз git clean не исправил это. Я уверен, что это происходит только в Ubuntu. Мои коллеги по арке никогда не сталкивались с этим.

Ответ 9

Я нашел временное решение:

  1. Обязательно укажите имя изображения на docker-compose.yml например, укажите имя изображения и имя контейнера как django_practice_db/django_practice_web

    services:
      django_practice_db:
        image: postgres
        container_name: django_practice_db
      django_practice_web:
        container_name: django_practice_web
        build: .
        command: pipenv run python manage.py runserver 0.0.0.0:8000'
    
  2. Скопируйте файл проекта в другое место

  3. Перейти в скопированную директорию проекта

  4. Выполнить docker-compose build

  5. Вернитесь в исходный каталог проекта

  6. Выполнить docker-compose up

Не уверен, почему я могу создавать образы, когда меняю путь к папке.

Ответ 10

Попробуйте увеличить память для Docker, это исправило проблему для меня.

Настройки памяти Docker в Предпочтениях были установлены на 2 ГБ, поэтому при извлечении изображения размером ~ 3 ГБ я получал именно эту ошибку:

$ docker pull skymindops/skil-ce
latest: Pulling from skymindops/skil-ce
118c5f2883d6: Pull complete 
3d199b2e6224: Extracting [==================================================>]  2.902GB/2.902GB
failed to register layer: Error processing tar file(exit status 1): unexpected EOF

Увеличение лимита памяти исправило это (я также увеличил обмен, но неуверенный, требовалось ли это или нет).