在构建 docker 图像级别=错误消息="Can't close tar writer: io: read/write on closed pipe"

on building docker image level=error msg="Can't close tar writer: io: read/write on closed pipe"

time="2017-10-27T07:39:20Z" level=error msg="Can't add file /var/app/current/app/content_classifier/forest.pickle to tar: io: read/write on closed pipe" 
time="2017-10-27T07:39:20Z" level=error msg="Can't close tar writer: io: read/write on closed pipe"
Failed to build Docker image aws_beanstalk/staging-app:  tar writer: io: read/write on closed pipe" 
Error response from daemon: Untar error on re-exec cmd: fork/exec /proc/self/exe: cannot allocate memory. Check snapshot logs for details. (Executor::NonZeroExitStatus)

我在 django_app/content_classifer object 有一个 Pickle object。有一个 class 来预测结果,它会在 celery 任务文件初始化时自行初始化。

docker build 给出标题中的错误消息后一直失败。

几分钟前我遇到了同样的问题,当时我发现了你的问题:) 我打开了一些文件 = 它们被另一个应用程序使用(GIT)

请确保没有文件被使用。

希望对您有所帮助。

这似乎是一个 Input/Output 错误,docker 无法访问它想要访问的文件。正如@Luk3rson 所建议的那样,确保这些文件未被任何其他应用程序使用。尝试调试 /var/log/ 中的日志。希望对你有帮助。

之所以遇到这个问题,是因为生成 pickle 对象的进程分配了不同的用户,然后是访问 pickle 对象的进程。

我在设置文件中定义了 pickle 对象的位置。

picklefile = "usr/local/webapp/forest.pickle"

我只是在Dockerfile中添加了如下步骤

RUN chown -R /user/local/webapp/ 

我在 Ubuntu 中遇到了这个问题并且 sudo service docker restart 修复了它

我遇到了同样的问题。如果您使用 Docker 工具箱在 Windows 上使用 Docker,您应该首先 运行 Docker 快速启动终端 ,否则, 不起作用。希望这对某人有所帮助!

如果您使用 Mac,请确保 docker 集线器是 运行

我在为远程 Docker 主机使用 Docker context 时遇到了类似的错误。在我的本地计算机 (Linux) 上恢复到 Docker 守护程序后,一切又恢复正常了。

对我来说,当我使用 WSL 2 运行 时,我只需将 sudo 添加到 docker 命令,一切都很好。