Docker ERROR: Error processing tar file(exit status 1): unexpected EOF

DockerDocker Compose

Docker Problem Overview


I needed space and executed: docker rmi $(docker images -f "dangling=true" -q)

Since then I can't with docker-compose: docker-compose build, I get the error: ERROR: Error processing tar file(exit status 1): unexpected EOF.

I tried to remove all images, reinstall docker, but nothing will do: always the same error, after quite some time.

I built on another system and it worked, which suggests that this is a wrong-state issue.

Any idea what I should clean?

Using:

 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

Docker Solutions


Solution 1 - Docker

I had the same issue and the approved answer didn't work for me.

Turns out I had a file with permissions which didn't allow the user running docker-compose to read it. After removing the file everything was OK

Solution 2 - Docker

There is an built in command to remove unused images (Version 1.13+):

docker image prune

Now to handle the situation:

  • Stop Docker Service

     systemctl stop docker
    
  • Backup /var/lib/docker then:

  • Remove /var/lib/docker Caution: This will remove images, containers, volumes, ... make sure you back it up first.

     rm -rf /var/lib/docker
    
  • Start Docker service

     systemctl start docker  
    

Update:

As noted in the other answer, In somecases it might be file permissions issue. Please review permissions.

Solution 3 - Docker

For me it was a permission error. I walked against the same exact issue as PR, ERROR: Error processing tar file(exit status 1): unexpected EOF My solution is dirty but worked for me

chown -R 777 /foo/bar/project

You almost always want to avoid to set permissions on 777, 655 is more reasonable.

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

A more detailed explanation can be found here: https://www.pluralsight.com/blog/it-ops/linux-file-permissions

Solution 4 - Docker

Solving this error for good

docker build needs read access to every file in the context directory tree. To avoid permission issues, add all your mounted directories to .dockerignore file except those used during the build. For example, for this docker-compose file:

version: '3'
services:
    myservice:
        build: .
    volumes:
        - './etc:/etc/myservice'
        - './log:/var/log/myservice'

Add a .dockerignore file with this content:

/etc
/log

The problem will go away no matter the permissions of the files in your mounted directories.

How to get a more informative error

The docker-compose error is not very informative so you can try to run docker on each build just to get detailed information:

$ docker build .

You will get an error like this:

error checking context: 'no permission to read from '/home/david/docker/myservice/log/2020161.log'.

Solution 5 - Docker

there could be several different problems. You can find out the problem by checking the issue that docker build is throwing.

The problem is that docker-compose build will suppress the information of the issue. To find out what the issue is

do not use:

docker-compose build XXX

instead, open your docker-compose.yml, find the build: tag of the service is giving you an issue, e.g.

services:
   yourservice: 
       build: yourservice-directory/

and then run:

docker build yourservice-directory

after this you will see what is the issue.

Solution 6 - Docker

For me the issue turned out that a Docker Pull was hung, so I CTRL+C'd out of it and tried again. Same error message.

In the end I found some files owned by root in this directory. Giving the files proper permissions fixed the issue.

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

  • MAC Docker version 17.12.0-ce, build c97c6d6

Solution 7 - Docker

If you have tried looking through permissions, docker reset, docker system prune, deleting all containers, deleting all images (dangling or otherwise), reading about everything that there is surrounding this issue and have had no success. Try uninstalling docker and re-installing the stable version.

Although, the error I was struggling with was : Error processing tar file(exit status 1): mkdir /some/path/name: no such file or directory

Solution 8 - Docker

In my case, the problem was a .dump file created by one of my project's scripts.

docker-compose passes the context to the engine as a tar file, therefore, the build command was packing a tar (the .dump file) inside another tar file (the docker context) hence throwing an unexpected EOF on the context.

Since I don't need the .dump file in the container, I added it to my .dockerignore file.

Solution 9 - Docker

Reference: https://medium.com/the-code-review/clean-out-your-docker-images-containers-and-volumes-with-single-commands-b8e38253c271

1. Clean up containers, images, volumes and networks on your system:
docker system prune --all --force --volumes

  1. docker-compose up

Solution 10 - Docker

I was having the same issue when i changed the Dockerfile location in a python project. I tried the accepted answer and didn't work for me.

I resolved the problem by running :

find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs sudo rm -r

On the project root.

The problem was that docker-compose build was trying to read files inside pycache folders.

Maybe this also can be fixed with a proper use of .dockerignore but i dind't try it

Hope this helps.

Saludos.

Solution 11 - Docker

Try increasing the memory for Docker, it fixed the issue for me.

Docker memory setting in Preferences was set to 2GB, so when pulling the ~3GB image, I was getting exactly this error:

$ 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

Increasing the memory limit fixed it (I also increased the swap, but unsure was it required or not).

Solution 12 - Docker

I tried everything from rebooting, reinstalling Docker, and purging /var/lib/docker.

My cause was something corrupting the build context in my project. After I ran git clean to reset the project directory back to its original state, I was able to docker-compose.

Run git clean -iXd in your project's root to interactively git clean.

Edit: after a while, it happened again. This time, git clean didn't fix it. I'm pretty sure it only happens on Ubuntu. My arch coworkers have never encountered it.

Solution 13 - Docker

I found a temporary solution:

  1. Ensure specify the image name on docker-compose.yml for example, specify the image name and container_name as 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. Copy the project file to another place

  3. Go inside the copied project directory

  4. Execute docker-compose build

  5. Go back to the original project directory

  6. Execute docker-compose up

Not sure why I can build images when I change the folder path.

Solution 14 - Docker

Another potential cause of this, especially if you're seeing an error like

Error processing tar file(exit status 1): write /code/node_modules/xxx: no space left on device

You might want to check the "disk image size" in the Docker application. You might need to increase the disk size.

Solution 15 - Docker

I had the same error in Ubuntu: Ran below command and it worked (just make sure to start again once you are done):

/opt/McAfee/ens/tp/init/mfetpd-control.sh stop

Solution 16 - Docker

Solve for me. You need have your user in docker group (usermod -aG docker $USER):

sudo chmod -R 775 . sudo chown -R : .

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAugustin RiedingerView Question on Stackoverflow
Solution 1 - DockerOktavView Answer on Stackoverflow
Solution 2 - DockerFarhad FarahiView Answer on Stackoverflow
Solution 3 - Docker0x78f1935View Answer on Stackoverflow
Solution 4 - DockerDavidView Answer on Stackoverflow
Solution 5 - DockeruselessView Answer on Stackoverflow
Solution 6 - DockerBJHView Answer on Stackoverflow
Solution 7 - DockerSheetal KaulView Answer on Stackoverflow
Solution 8 - DockerPablo CarbajalView Answer on Stackoverflow
Solution 9 - DockerPadmini CView Answer on Stackoverflow
Solution 10 - DockerNazareno CastroView Answer on Stackoverflow
Solution 11 - DockerRostyView Answer on Stackoverflow
Solution 12 - DockerAmmar BandukwalaView Answer on Stackoverflow
Solution 13 - DockerKant ChenView Answer on Stackoverflow
Solution 14 - DockerNik BarresView Answer on Stackoverflow
Solution 15 - Dockeruser2814010View Answer on Stackoverflow
Solution 16 - DockermakioloView Answer on Stackoverflow