在Windows 10上,使用Docker build时出现“设备没有剩余空间”的错误。

7
我在Windows上构建镜像时遇到了奇怪的问题。我以前没有使用过Docker,所以安装可以被视为全新的。现在没有任何卷和镜像。
当我尝试从Dockerfile构建应用程序时,它以此错误结束。
docker build ./
Sending build context to Docker daemon   1.4 GB
Error response from daemon: Error processing tar file(exit status 1): write /.bowerrc: no space left on device

我读到过可以增加docker的基础大小,但我没有找到Windows的解决方案(为什么默认情况下会受到限制?)docker info输出了一些内容,但是在“存储驱动程序”下面没有显示任何关于基础大小的信息。
$ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.13.1
Storage Driver: overlay2
 Backing Filesystem: tmpfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1
runc version: 9df8b306d01f59d3a8029be411de015b7304dd8f
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.9.8-moby
Operating System: Alpine Linux v3.5
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.934 GiB
Name: moby
ID: GUXQ:KPKS:PHBV:BMEF:QHHM:B2YG:MWPB:2W5H:Z3GX:27YS:QBT6:O4RV
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 13
 Goroutines: 21
 System Time: 2017-02-19T20:15:57.8764828Z
 EventsListeners: 0
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

根据互联网上的一些帖子,这曾经或正在成为在Linux上操作的方式,但在Windows上无法使用。

docker daemon --storage-opt dm.basesize=20G

我的docker安装有什么问题,如何增加basesize?

你确定需要将全部1.4GB发送给守护进程吗?如果需要的话,docker问题页面上的这个评论可能会有所帮助。 - jrbeverly
1
我不确定这是我第一次尝试构建镜像。它包含多个应用程序,我还不确定将所有内容放在一个镜像中是否是正确的方法。谢谢,我会研究一下的。 - Marian Klühspies
我不确定应用程序的大小,但使用dockerignoreCOPY可能会有所帮助。 - jrbeverly
1
不要将任何文件放在 Docker 文件所在的文件夹中。所有在该文件夹中的内容都将被发送到 Docker 进行构建。因此,请确保您的 Docker 文件及相关文件仅位于该文件夹中。 - Gregory Suvalian
如果现在使用纯净的Ubuntu镜像进行测试“docker run ubuntu:17.04”,会出现相同的问题。 - Marian Klühspies
你能接受这个答案吗?它解决了问题。谢谢。 - zhrist
5个回答

3
我在Windows上遇到了同样的问题。以下两个设置之一应该可以解决这个问题:
  • 增加Docker使用的内存。如果是2GB,就增加更多
  • 增加“磁盘镜像最大大小” - 初始值为60,将其移动到80 GB
这应该足够了,但取决于您正在构建的复杂性。在某些情况下,需要增加Swap。 Docker的初始Swap为1024 MB。
谢谢

1
我重置为出厂设置,然后选择:删除所有镜像。 在高级选项卡中:增加“磁盘镜像最大大小”(我修改为80 GB) 然后再次构建Docker。

0

我已经重新安装了Docker,现在它似乎可以工作了。


0

2017年时,这可能不是用户的根本问题,但如果你在使用Windows 10 1903时遇到了此问题,那么你可能会遇到Docker for Windows 问题#4100(“使用storage-opt时Windows 1903操作失败”)。

2020年1月6日,在Docker-ce GitHub代码库上推送了一个提交,从下面的评论中可以看出,它似乎实现了对Windows下潜在漏洞的解决方法。

microsoft/hcsshim#718 wclayer: 解决Windows扩展沙盒大小时的bug
  • 修复 microsoft/hcsshim#708 Windows主机计算服务的bug,导致Windows 1903上的Docker(和其他)沙盒大于20G无法使用
  • 修复 microsoft/hcsshim#624 hcsshim在Windows 10 1903上构建Docker镜像始终失败的问题
  • 修复/解决 docker/for-win#3884 尝试构建Docker镜像时出现错误(特别是此评论和之后的评论:docker/for-win#3884 (comment))
  • 修复/解决 docker/for-win#4100 使用storage-opt时Windows 1903失败的问题
  • 修复 moby/moby#36831 hcsshim::PrepareLayer在Win32中失败:参数不正确(moby/moby#36831 (comment))
  • 修复 Stannieman/audacity-with-asio-builder#5 Docker无法构建容器的问题
  • 修复 MicrosoftDocs/visualstudio-docs#3523 在设置storage-opts时运行构建时出现错误
  • 修复 moby/moby#39524 Docker构建windows 19.03 --storage-opt size>20G的问题

不幸的是,Docker 还没有发布包含此提交的新版本,因此我们这些在 1903 上遇到此错误的人暂时有点束手无策。


-1

假设您正在使用开发环境进行此操作,只需运行:

docker system prune -a -f

注意:不要在生产环境中运行此程序


1
这是一个具有破坏性的命令;虽然它很有用,但在不理解其作用的情况下,你不应该“随便运行它”。 - Mark Wells
虽然你说的是一个破坏性命令,但OP说他在构建镜像时遇到了问题。假设这是一个开发环境,这是最简单的方法。任何其他容器都可以在开发环境中重新创建。我已经更新了我的答案。 - ernzt
注意:对于未来的读者,请注意此命令将删除您所有的图像,无论它们是否正在使用中。 - yms

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接