我需要空间并执行:docker rmi $(docker images -f "dangling=true" -q)
从那时起,我无法使用docker-compose:docker-compose build
,我收到错误:ERROR: Error processing tar file(exit status 1): unexpected EOF
。
我试图删除所有图片,重新安装docker,但没有做任何事情:经过相当长的一段时间后总是出现同样的错误。
我建立在另一个系统上并且它有效,暗示这是一个错误的状态问题。
知道我应该清理什么吗?
使用:
▶ 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
答案 0 :(得分:41)
我有同样的问题,批准的答案对我不起作用。
原来我有一个具有权限的文件,该文件不允许用户运行docker-compose来读取它。删除文件后一切正常
答案 1 :(得分:14)
有一个内置命令可以删除未使用的图像(版本1.13 +):
docker image prune
现在处理这种情况:
停止Docker服务
systemctl stop docker
备份/var/lib/docker
然后:
删除/var/lib/docker
警告:这将删除图像,容器,卷,...请确保先备份它。
rm -rf /var/lib/docker
启动Docker服务
systemctl start docker
<强>更新强>
如另一个答案中所述,在某些情况下,它可能是文件权限问题。请查看权限。
答案 2 :(得分:2)
可能有几个不同的问题。您可以通过检查docker build引发的问题来找出问题所在。
问题在于docker-compose build将禁止发布该问题的信息。找出问题所在
请勿使用:
docker-compose build XXX
相反,打开您的docker-compose.yml,找到该服务的 build:标签给您一个问题,例如
services:
yourservice:
build: yourservice-directory/
然后运行:
docker build yourservice-directory
在此之后,您将看到问题所在。
答案 3 :(得分:2)
docker build
需要对上下文目录树中的每个文件具有读取权限。为避免权限问题,将所有已安装目录(构建期间使用的目录除外)添加到.dockerignore文件中。例如,对于此docker-compose
文件:
version: '3'
services:
myservice:
build: .
volumes:
- './etc:/etc/myservice'
- './log:/var/log/myservice'
添加具有以下内容的.dockerignore
文件:
/etc
/log
无论安装目录中的文件权限如何,问题都会消失。
docker-compose
错误不是非常有用,因此您可以尝试在每个构建版本上运行docker
只是为了获取详细信息:
$ docker build .
您将收到如下错误:
error checking context: 'no permission to read from '/home/david/docker/myservice/log/2020161.log'.
答案 4 :(得分:1)
对我来说,问题结果是Docker Pull被挂了,所以我按CTRL + C&#39; d再次尝试。相同的错误消息。
最后我在这个目录中找到了root拥有的一些文件。为文件提供适当的权限可以解决问题。
chown -R <username>:<group> /var/lib/docker/tmp
答案 5 :(得分:1)
对我来说,这是一个权限错误。
我遇到了与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
答案 6 :(得分:0)
如果您尝试查看权限,泊坞窗重置,泊坞窗系统修剪,删除所有容器,删除所有图像(悬空或其他),阅读有关此问题的所有内容并且没有成功。尝试卸载docker并重新安装稳定版本。
虽然,我遇到的错误是:Error processing tar file(exit status 1): mkdir /some/path/name: no such file or directory
答案 7 :(得分:0)
尝试增加Docker的内存,它解决了我的问题。
“首选项”中的Docker内存设置设置为2GB,因此在拉动~3GB图像时,我收到了这个错误:
$ 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
增加内存限制会修复它(我也增加了交换,但不确定是否需要)。
答案 8 :(得分:0)
就我而言,问题是由我的项目脚本之一创建的.dump文件。
docker-compose
作为tar文件将上下文传递给引擎,因此,build
命令将tar(.dump文件)打包在另一个tar文件(docker上下文)中,因此抛出了一个意外的EOF。
由于我不需要容器中的.dump文件,因此将其添加到了我的.dockerignore文件中。
答案 9 :(得分:0)
参考:
https://medium.com/the-code-review/clean-out-your-docker-images-containers-and-volumes-with-single-commands-b8e38253c271
1。清理系统上的容器,图像,卷和网络:
docker system prune --all --force --volumes
2. docker-compose up
答案 10 :(得分:0)
我尝试了从重新启动,重新安装Docker到清除/var/lib/docker
的所有操作。
我的原因是项目中的构建上下文损坏。我运行git clean
将项目目录重新设置为原始状态后,就能够docker-compose
在项目的根目录中运行git clean -iXd
,以交互方式git clean
。
编辑:过了一会儿,它又发生了。这次git clean
并没有解决。我敢肯定,它只会在Ubuntu上发生。我的拱门同事从未遇到过。
答案 11 :(得分:0)
我找到了一个临时解决方案:
确保在docker-compose.yml
上指定图像名称
例如,将图像名称和container_name指定为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
不确定更改文件夹路径时为什么可以生成图像。
答案 12 :(得分:0)
当我更改 python项目中的Dockerfile位置时,我遇到了同样的问题。我尝试了接受的答案,但对我没有用。
我通过运行解决了这个问题:
find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs sudo rm -r
在项目根目录上。
问题在于docker-compose构建试图读取 pycache 文件夹中的文件。
也许也可以通过正确使用.dockerignore来解决,但我没有尝试
希望这会有所帮助。
Saludos。
答案 13 :(得分:0)
造成这种情况的另一个潜在原因,尤其是当您看到类似
的错误时Error processing tar file(exit status 1): write /code/node_modules/xxx: no space left on device
您可能想要检查 Docker 应用程序中的“磁盘映像大小”。您可能需要增加磁盘大小。
答案 14 :(得分:0)
我在 Ubuntu 中遇到了同样的错误:运行下面的命令并且它起作用了(只需确保在完成后重新开始):
/opt/McAfee/ens/tp/init/mfetpd-control.sh stop
答案 15 :(得分:0)
帮我解决。您需要在 docker 组中拥有您的用户 (usermod -aG docker $USER):
sudo chmod -R 775。 须藤 chown -R : .