如何解决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 新手,我不知道从这里开始做什么。有人可以帮我吗?
解决方法
Docker 有时在您使用它后往往需要清理。过去创建的先前资源可能不再使用,如果您正在使用卷,则尤其如此。 有时,图像未完全创建并最终成为未标记的悬空图像,这在大多数情况下是不可取的。因此,您必须删除这些占用空间的不良内容。
docker image prune
docker image prune 删除所有悬空的图像。
2. docker volume prune
docker volume prune 删除所有未附加到任何容器的“卷”。这些应该始终在修剪容器之前运行,否则所有容器都将被删除,这是因为修剪容器会删除在运行命令时未运行的所有容器。就我的经验而言,在大多数情况下,体积通常是占用空间最多的资源。
docker container prune
大多数情况下这是可选的,您可以选择是否这样做
现在,即使在删除悬空图像后,可能仍有其他图像不会被删除但您不再需要,例如如果您有旧版本的 redis 图像 并稍后下载它的最新版本,如果您不再使用它,则可能需要删除旧版本。您必须手动删除它。使用以下命令:
docker image ls
docker rmi <image id>
第一个命令为您提供已下载的所有图像的列表,第二个命令将其删除。有时您可能需要在删除命令上使用 -f
标志来强制删除图像:
docker rmi -f <image id>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。