首页 > 解决方案 > ESP8266:构建 nodemcu 固件时出现“设备上没有剩余空间”错误

问题描述

我正在尝试在 Windows 10 系统上使用 docker 构建 nodemcu 固件。

当我尝试构建 nodemcu 固件时,出现以下错误:

(...)
PRUNE libmain.a libc.a
/opt:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/nodemcu-firmware/tools/toolchains/esp8266-linux-x86_64-20190731.0/bin
xtensa-lx106-elf-ar: /opt/nodemcu-firmware/sdk/esp_iot_sdk_v3.0-e4434aa/lib/libc.a: No space left on device
Makefile:334: recipe for target '/opt/nodemcu-firmware/sdk/.pruned-3.0-e4434aa' failed
make: *** [/opt/nodemcu-firmware/sdk/.pruned-3.0-e4434aa] Error 1
make: Leaving directory '/opt/nodemcu-firmware'

我试过docker system prune了,但这个错误仍然存​​在。

我尝试执行docker info但对我没有帮助:

Client:
 Debug Mode: false

Server:
 Containers: 1
  Running: 0
  Paused: 0
  Stopped: 1
 Images: 12
 Server Version: 19.03.1
 Storage Driver: overlay2
  Backing Filesystem: extfs
  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
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc version: 425e105d5a03fabd737a126ad93d62a9eeede87f
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.14.131-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 3.419GiB
 Name: docker-desktop
 ID: RCEX:VYON:IG6T:AXCF:CSLX:3NVK:V453:DTSP:HW4Y:EKBY:PCVW:2UOJ
 Docker Root Dir: /var/lib/docker
 Debug Mode: true
  File Descriptors: 28
  Goroutines: 44
  System Time: 2020-12-21T02:04:22.387341144Z
  EventsListeners: 1
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: true
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
 Product License: Community Engine

当我执行docker system df时,我有这个结果:

TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              4                   1                   673.8MB             209.8MB (31%)
Containers          1                   0                   0B                  0B
Local Volumes       10                  0                   0B                  0B
Build Cache         0                   0                   0B                  0B

我是 docker 新手,我不知道从这里做什么。谁能帮我?

标签: dockerwindows-10nodemcu

解决方案


Docker 有时在你使用它之后往往需要清理。过去创建的资源可能不再使用,如果您正在使用卷,则尤其如此。有时,图像没有完全创建并最终成为未标记的悬空图像,这在大多数情况下是不受欢迎的。因此,您必须删除这些占用空间的不受欢迎的东西。

  1. docker image prune

docker image prune 删除所有悬空的图像。2. docker volume prune docker volume prune 删除所有未附加到任何容器的“卷”。这些应该始终在修剪容器之前运行,否则所有容器都将被删除,这是因为修剪容器会删除所有在运行命令时未运行的容器。在我的经验中,大部分内容通常是占用空间最多的资源。

  1. docker container prune

在大多数情况下,这是可选的,您可以选择是否执行此操作

现在,即使在删除悬空图像之后,可能仍然有其他图像没有被删除但您不再需要,例如,如果您有旧版本的redis 图像,然后下载最新版本,您可能需要删除如果您不再使用旧的。您将不得不手动删除它。使用以下命令:

docker image ls
docker rmi <image id>

第一个命令为您提供已下载的所有图像的列表,第二个命令将其删除。有时您可能必须使用-fdelete 命令上的标志来强制删除图像:

docker rmi -f <image id>

推荐阅读