docker - 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
delete 命令上的标志来强制删除图像:
docker rmi -f <image id>
推荐阅读
- twitter-bootstrap - 如何在 CSS 3 中的特定位置创建曲线?
- ios - Xcode 10 beta 使用大量存储空间
- python - 如何从 Python 中的字符串中过滤掉数据
- python - 无法通过 Python (Mysql.Connector) 创建临时表
- editor - 如何在 GNAT GPS 中为 Ada 过程/函数调用着色
- angular - Akka.net 和 Angular
- mongodb - MongoDB _id 索引不能线性扩展
- google-app-engine - 运行 gcloud datastore cleanup-indexes 时出现内部服务器错误 gcloud.datastore.cleanup-indexes
- vba - 如何使用 VBA 将日期重新格式化为 YYYYMMDD?
- python - 如何在 Tkinter 中制作可以调整大小的框架