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
Ответ 7
Ссылка: https://medium.com/the-code-review/clean-out-your-docker-images-containers-and-volumes-with-single-commands-b8e38253c271
1. Очистите контейнеры, образы, тома и сети в вашей системе:
черновая система докеров --all --force --volumes
2. Докер-сочинить
Ответ 8
Я попробовал все: от перезагрузки, переустановки Docker и очистки /var/lib/docker
.
Моей причиной было что-то, что повредило контекст сборки в моем проекте. После того, как я запустил git clean
, чтобы вернуть каталог проекта в исходное состояние, я смог docker-compose
.
Запустите git clean -iXd
в корневом каталоге вашего проекта, чтобы интерактивно git clean
.
Редактировать: через некоторое время это случилось снова. На этот раз git clean
не исправил это. Я уверен, что это происходит только в Ubuntu. Мои коллеги по арке никогда не сталкивались с этим.
Ответ 9
Я нашел временное решение:
Обязательно укажите имя изображения на 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'
Скопируйте файл проекта в другое место
Перейти в скопированную директорию проекта
Выполнить docker-compose build
Вернитесь в исходный каталог проекта
Выполнить 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
Увеличение лимита памяти исправило это (я также увеличил обмен, но неуверенный, требовалось ли это или нет).