J'avais besoin d'espace et exécuté: docker rmi $(docker images -f "dangling=true" -q)
Depuis lors, je ne peux pas avec docker-compose: docker-compose build
, le message d'erreur suivant s'affiche: ERROR: Error processing tar file(exit status 1): unexpected EOF
.
J'ai essayé de supprimer toutes les images, réinstaller docker, mais rien ne suffira: toujours la même erreur, après un certain temps.
J'ai construit sur un autre système et cela a fonctionné, ce qui suggère qu'il s'agit d'un problème d'état erroné.
Une idée de ce que je devrais nettoyer?
En utilisant:
▶ 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
Il existe une commande intégrée pour supprimer les images inutilisées (version 1.13+):
docker image Prune
Maintenant, pour gérer la situation:
Arrêtez le service Docker
systemctl stop docker
Sauvegardez /var/lib/docker
puis:
Supprimer /var/lib/docker
Attention: Ceci supprimera les images, les conteneurs, les volumes, etc. Assurez-vous de le sauvegarder en premier.
rm -rf /var/lib/docker
Démarrer le service Docker
systemctl start docker
Mettre à jour:
Comme indiqué dans la réponse précédente, dans certains cas, il peut s'agir d'un problème d'autorisations de fichiers. S'il vous plaît examiner les autorisations.
J'ai eu le même problème et la réponse approuvée n'a pas fonctionné pour moi.
Il se trouve que j'avais un fichier avec des autorisations qui ne permettait pas à l'utilisateur de docker-compose de le lire. Après avoir supprimé le fichier, tout était OK
Pour moi, le problème s’est avéré qu’un Docker Pull était suspendu. CTRL + C s’y est écarté et j’ai essayé à nouveau. Même message d'erreur.
Finalement, j'ai trouvé des fichiers appartenant à root dans ce répertoire. Donner les autorisations appropriées aux fichiers a résolu le problème.
chown -R <username>:<group> /var/lib/docker/tmp
Pour moi, c’était une erreur de permission… .J’ai marché contre le même problème que PR, ERROR: Error processing tar file(exit status 1): unexpected EOF
Ma solution est sale mais a fonctionné pour moi.
chown -R 777 /foo/bar/project
Vous voulez presque toujours éviter de définir des autorisations sur 777, 655 est plus raisonnable.
0 = ---
1 = --x
2 = -w-
3 = -wx
4 = r-
5 = r-x
6 = rw-
7 = rwx
Une explication plus détaillée peut être trouvée ici: https://www.pluralsight.com/blog/it-ops/linux-file-permissions
Si vous avez essayé de consulter les autorisations, réinitialiser le menu fixe, supprimer le système du menu fixe, supprimer tous les conteneurs, supprimer toutes les images (suspendues ou non), lire tout ce qui concerne le problème et qui n'a pas abouti. Essayez de désinstaller Docker et de réinstaller la version stable.
Bien que l’erreur avec laquelle je luttais était: Error processing tar file(exit status 1): mkdir /some/path/name: no such file or directory
Essayez d’augmenter la mémoire de Docker, le problème a été résolu pour moi.
Le paramètre de mémoire de Docker dans Préférences était défini sur 2 Go. Ainsi, lorsque vous extrayez l'image de ~ 3 Go, le message d'erreur suivant s'affiche:
$ 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
L'augmentation de la limite de mémoire a corrigé le problème (j'ai également augmenté l'échange, mais je ne savais pas s'il était nécessaire ou non).
Dans mon cas, le problème était un fichier .dump créé par l'un des scripts de mon projet.
docker-compose
transmet le contexte au moteur en tant que fichier tar. Par conséquent, la commande build
compilait un fichier tar (le fichier .dump) dans un autre fichier tar (le contexte du menu fixe), ce qui jette un caractère inattendu EOF.
Comme je n'ai pas besoin du fichier .dump dans le conteneur, je l'ai ajouté à mon fichier .dockerignore.