Docker ERROR:处理tar文件时出错(退出状态1):意外的EOF

Aug*_*ger 29 docker docker-compose

我需要空间并执行: 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
Run Code Online (Sandbox Code Playgroud)

Okt*_*tav 52

我有同样的问题,批准的答案对我不起作用.

事实证明我有一个具有权限的文件,该文件不允许用户运行docker-compose来读取它.删除文件后一切正常

  • @dondublon没关系.取决于docker试图构建的文件中你有什么.只是`chown -R`你的项目文件夹给它应该拥有的用户.在我的情况下,我的一个容器写了一个文件,该文件是root拥有的,除了所有者之外没有任何人的读取权限 (6认同)
  • 那是什么文件? (4认同)

Far*_*ahi 16

有一个内置命令可以删除未使用的图像(版本1.13+):

docker image prune
Run Code Online (Sandbox Code Playgroud)

现在来处理这种情况:

更新:

正如另一个答案所述,在某些情况下,它可能是文件权限问题.请检查权限.

  • 你很厉害!:) 备份它对我有什么帮助,因为无论如何我都必须重建,对吗?很好,因为它是我的开发机器。 (2认同)
  • 做了所有这些,但没有帮助。问题是根据另一个答案的权限。 (2认同)
  • 我的情况是文件权限 (2认同)

Dav*_*vid 6

永久解决此错误

docker build需要对上下文目录树中的每个文件进行读取访问。为了避免权限问题,请将所有安装的目录添加到.dockerignore文件中,构建所需的目录除外。例如,对于此docker-compose文件:

version: '3'
services:
    myservice:
        build: .
    volumes:
        - './etc:/etc/myservice'
        - './log:/var/log/myservice'
Run Code Online (Sandbox Code Playgroud)

添加包含.dockerignore以下内容的文件:

/etc
/log
Run Code Online (Sandbox Code Playgroud)

无论安装目录中的文件的权限如何,问题都会消失。

如何获取更具信息性的错误

docker-compose错误信息不是很丰富,因此您可以尝试docker在每个构建上运行以获取详细信息:

$ docker build .
Run Code Online (Sandbox Code Playgroud)

你会得到这样的错误:

error checking context: 'no permission to read from '/home/david/docker/myservice/log/2020161.log'.
Run Code Online (Sandbox Code Playgroud)


0x7*_*935 5

对我来说,这是一个许可错误。我遇到了与 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
Run Code Online (Sandbox Code Playgroud)

更详细的解释可以在这里找到:https : //www.pluralsight.com/blog/it-ops/linux-file-permissions