📜  cypress error enospc no space left on device write docker - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:40:24.680000             🧑  作者: Mango

Cypress Error: ENOSPC no space left on device write Docker

在使用Cypress与Docker相结合时,可能会遭遇到Cypress Error: ENOSPC no space left on device write Docker的错误,该错误提示系统无法为Cypress分配足够的空间进行写入。

以下是一些基本的解决方案,可以尝试以解决这个问题。

增加docker的可用空间

这个问题通常是由于 docker 的磁盘空间不足而引起的。运行以下命令,清理 Docker 无用的容器和镜像:

docker volume rm $(docker volume ls -qf dangling=true)

docker system prune -af

如果等待 Docker 的所有容器和镜像在系统中致介是很重要的话, 可以运行以下命令来清理所有容器及卷:

docker rm -vf $(docker ps -aq)
docker system prune -af --volumes

考虑到数据的重要性,务必慎重运行以上命令。

分配更多的空间

您还可以尝试增加 Docker 的可用空间。在 Windows 和 macOS 中,Docker 通常是在基于虚拟机的环境中运行的,可以试着给基于虚拟机的环境更多的可用磁盘空间。在 Linux 中,您可以通过增加虚拟磁盘的大小并进行扩容来解决此问题。

增加系统的文件最大打开数

我们也可以尝试使用 sysctl 命令,增加系统的文件最大打开数。这里以 Ubuntu 为例,运行以下命令来增加文件最大打开数:

sudo sysctl -w fs.file-max=100000

或在打开的文件过多的情况下,我们也可以配置 docker 的最大文件句柄数,运行以下命令:

# 显示当前docker的所有配置信息
$ docker info

# 编写配置到文件
$ echo '{"debug":true,"hosts":["tcp://0.0.0.0:4444","unix:///var/run/docker.sock"],"storage-driver":"devicemapper","storage-opts":["dm.basesize=50G","dm.thinpooldev=/dev/mapper/thinpool","dm.use_deferred_removal=true","dm.use_deferred_deletion=true"], "max-concurrent-downloads": 10, "init": true, "log-driver": "json-file", "log-opts": {"max-size": "100m", "max-file": "10"}}' | sudo tee /etc/docker/daemon.json

# 重启docker
$ sudo systemctl restart docker
 
# 新配置是否生效 
$ systemctl show --property=ExecStart $(which docker)
ExecStart=/usr/bin/dockerd --debug --max-concurrent-downloads 10 --storage-driver=devicemapper --storage-opts=dm.basesize=50G --storage-opts=dm.thinpooldev=/dev/mapper/thinpool --storage-opts=dm.use_deferred_removal=true --storage-opts=dm.use_deferred_deletion=true --init --log-driver=json-file --log-opt=max-size=100m --log-opt=max-file=10 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:4444
 
# 再次运行 docker info 命令即可看到新的配置被应用
$ docker info
结论

以上提到的这些方法,可以帮助您解决 Cypress Error: ENOSPC no space left on device write Docker 错误。希望这篇文章对您有所帮助,谢谢!