OSError:[Errno 28]设备Docker上没有剩余空间,但我有空间

use*_*057 9 python docker

正如标题所示,我正在一个docker容器中运行jupyter,并且我在以下行的scikit learn/numpy库中深入了解python的OSError:

pickler.file_handle.write(chunk.tostring('C'))
Run Code Online (Sandbox Code Playgroud)

我做了一些故障排除,人们似乎遇到的大多数问题是他们的硬盘驱动器或RAM实际上耗尽了空间,这对我来说不是AFAIK.

这就是我的df的样子:

Filesystem                    1K-blocks       Used   Available Use% Mounted on
udev                           16419976          0    16419976   0% /dev
tmpfs                           3288208      26320     3261888   1% /run
/dev/sdb7                     125996884   72177548    47395992  61% /
tmpfs                          16441036     238972    16202064   2% /dev/shm
tmpfs                              5120          4        5116   1% /run/lock
tmpfs                          16441036          0    16441036   0% /sys/fs/cgroup
/dev/sdb2                         98304      32651       65653  34% /boot/efi
tmpfs                           3288208         68     3288140   1% /run/user/1000
//192.168.1.173/ppo-server3 16864389368 5382399064 11481990304  32% /mnt/ppo-server3
Run Code Online (Sandbox Code Playgroud)

这是我的自由看起来像:

             total        used        free      shared  buff/cache   available
Mem:       32882072     7808928    14265280      219224    10807864    24357276
Swap:        976892      684392      292500
Run Code Online (Sandbox Code Playgroud)

我在看正确的df和免费输出吗?它们都是从容器内的bash实例运行的.

Sha*_* RC 14

正如@PeerEZ所述,当sklearn尝试并行化作业时会发生这种情况.

sklearn尝试通过写入/ dev/shm在进程之间进行通信,这在docker容器上限制为64mb.

您可以尝试使用@PeerEZ建议的n_jobs = 1运行(如果您无法重新启动容器),或者如果需要并行化,请尝试使用--shm-size选项运行容器为/ dev/shm设置更大的大小.例如.-

docker run --shm-size=512m <image-name>
Run Code Online (Sandbox Code Playgroud)


pun*_*lly 10

Docker留下悬空的图像可以占用你的空间.要在docker之后清理,请运行以下命令:

docker system prune -af
Run Code Online (Sandbox Code Playgroud)

或者在较旧版本的泊坞窗中:

docker rm $(docker ps -q -f 'status=exited')
docker rmi $(docker images -q -f "dangling=true")
Run Code Online (Sandbox Code Playgroud)

这将删除已退出和悬空的图像,这有望清除设备空间.

Meta:在这里提出这个答案,因为它是该失败的顶级堆栈溢出结果,这是一个修复它.

  • 这是危险且糟糕的建议。遇到此问题的任何人都不太可能想要删除系统上当前未运行的“每个”映像。 (4认同)
  • docker system prune -af 将删除所有内容 (3认同)
  • 警报!请不要使用这个。它将从您的计算机中删除所有图像(对于指定的问题没有用)。 (2认同)