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

问题描述 投票:0回答:10
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 对象中有一个 Pickle 对象。有一个类可以预测结果,它会在 celery 任务文件初始化时自行初始化。

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

linux docker celery amazon-elastic-beanstalk celerybeat
10个回答
81
投票

如果您使用的是 Mac,请确保 docker desktop 正在运行


14
投票

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

请确保没有文件被使用。

希望对您有所帮助。


8
投票

我在 Ubuntu 中遇到了这个问题,

sudo service docker restart
修复了它


5
投票

所面临的问题是因为生成 pickle 对象的进程分配了不同的用户,然后进程正在访问 pickle 对象。

我在设置文件中定义泡菜对象的位置。

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

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

RUN chown -R /user/local/webapp/ 

4
投票

我有同样的问题。如果您使用 Docker 工具箱在 Windows 上使用 Docker,您应该首先运行Docker Quickstart Terminal,否则它将无法工作。希望这对某人有帮助!


0
投票

这似乎是一个输入/输出错误,docker 无法访问它想要的文件。正如@Luk3rson 所建议的那样,确保这些文件未被任何其他应用程序使用。尝试调试

/var/log/
中的日志。愿它帮助你。


0
投票

我在为远程 Docker 主机使用 Docker 上下文 时遇到了类似的错误。在我的本地机器 (Linux) 上恢复到 Docker 守护进程后,一切都恢复正常了。


0
投票

对我来说,当我使用 WSL 2 运行它时,我只需将

sudo
添加到 docker 命令,一切都很好。


0
投票

如果您使用的是 Mac,请重新启动您的 docker hub。 Docker 已经在运行,但重新启动它对我有用。


0
投票

使用此命令授予权限

sudo chmod 666 /var/run/docker.sock
© www.soinside.com 2019 - 2024. All rights reserved.