Open huangluzhi opened 3 weeks ago
Insufficient randomness
一般是 RNG 问题,而 Docker 默认使用宿主机的随机数发生器,你可以在宿主机上安装 rng-tools
(或者特定发行版的对应工具)来解决这个问题
已安装rng-tools,还是报同样的错误。
$ yum install rng-tools
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors-tlinux.tencentyun.com
* extras: mirrors-tlinux.tencentyun.com
* tlinux: mirrors-tlinux.tencentyun.com
* updates: mirrors-tlinux.tencentyun.com
Package rng-tools-6.3.1-5.tl2.x86_64 already installed and latest version
Nothing to do
尝试从宿主机在storage下clone https://github.com/comfyanonymous/ComfyUI.git/,再进入容器执行脚本`sh /home/scripts/download.sh`,在git pull时报错
########################################
[INFO] Downloading ComfyUI & Manager...
########################################
+ cd /home/runner
+ git clone https://github.com/comfyanonymous/ComfyUI.git
fatal: destination path 'ComfyUI' already exists and is not an empty directory.
+ cd /home/runner/ComfyUI
+ git pull
fatal: unable to access 'https://github.com/comfyanonymous/ComfyUI.git/': Insufficient randomness
下面是chatgpt的回答,按照指引做了2、4、5、6,没有奏效,容器内熵值也是够的。1、3要在容器里安装,应该需要修改dockerfile,就没弄
在 Docker 容器中出现 "Insufficient randomness" 错误,而宿主机没有问题,说明容器内的熵池不足,而宿主机的熵足够充裕。虚拟化环境(如 Docker 容器)中熵源较少,导致需要随机数的操作(如 TLS/SSL 协议)失败。
以下是专门针对 Docker 中解决该问题的步骤:
haveged
和在宿主机上类似,您可以在 Docker 容器中安装 haveged
来补充熵池。
如果你可以修改 Dockerfile,在 Dockerfile 中添加以下内容:
RUN apt-get update && apt-get install -y haveged
然后,启动容器时运行 haveged
:
docker run -it <image> /bin/bash
service haveged start
--device /dev/urandom:/dev/random
可以通过绑定宿主机的 /dev/urandom
到容器中的 /dev/random
,利用宿主机的熵源。这是一种较为常见的解决熵不足的方法。
启动容器时:
docker run --device /dev/urandom:/dev/random -it <image> /bin/bash
这会让容器中的随机数生成使用宿主机的熵源。
rng-tools
rng-tools
也可以增加 Docker 容器的熵。和宿主机一样,你可以在容器中安装 rng-tools
。
在你的 Dockerfile 中添加:
RUN apt-get update && apt-get install -y rng-tools
然后启动容器时运行 rngd
:
docker run -it <image> /bin/bash
rngd -r /dev/urandom
haveged
或 rng-tools
如果你不希望在容器内安装额外的软件,可以让宿主机上的 haveged
或 rng-tools
提供熵服务。确保宿主机的熵源充足,并且容器通过宿主机的熵源生成随机数。
--privileged
选项在某些情况下,Docker 容器运行时缺少权限可能会导致熵不足。你可以尝试使用 --privileged
选项运行容器:
docker run --privileged -it <image> /bin/bash
这将给予容器更多的权限,可能有助于缓解熵不足的问题。
在容器中检查熵值,确保容器中可用的熵足够:
cat /proc/sys/kernel/random/entropy_avail
如果熵值过低(如小于100),就需要使用上述方法之一来增加熵源。
这些方法可以帮助你在 Docker 环境中解决熵不足导致的 "Insufficient randomness" 错误。如果问题依然存在,可能需要进一步检查容器的配置或使用的镜像。
这些就是常用的 RNG 办法了,而且熵值都正常的话,我猜问题可能与权限有关。
cu121
为了方便 WSL2 Docker Desktop 部署,用了低特权用户(runner),其他镜像都是用的 root 用户。
我建议试试其他镜像,比如:
https://github.com/YanWenKun/ComfyUI-Docker/tree/main/cu124-cn
如果嫌这个镜像臃肿的话,删掉 download.sh
和 download-models.txt
中不要的项目即可。
其他镜像都试了,还是一样的问题,看起来不是权限问题
1032 04/11/24 15:02:36 docker run -it --rm --name comfyui --gpus all -p 8188:8188 -v "$(pwd)"/storage:/home/runner -e CLI_ARGS="" yanwk/comfyui-boot:cu124-cn
1033 04/11/24 15:10:45 docker run -it --rm --name comfyui --gpus all -p 8188:8188 -v "$(pwd)"/storage:/home/runner -e CLI_ARGS="" yanwk/comfyui-boot:cu124-megapak
1034 04/11/24 16:01:22 docker run -it --rm --name comfyui --gpus all -p 8188:8188 -v "$(pwd)"/storage:/home/runner -e CLI_ARGS="" yanwk/comfyui-boot:cu121-megapak
1035 04/11/24 16:11:22 docker run -it --rm --name comfyui --gpus all -p 8188:8188 -v "$(pwd)"/storage:/home/runner -e CLI_ARGS="" yanwk/comfyui-boot:nightly
1036 04/11/24 16:15:24 docker system prune -a
1037 04/11/24 16:15:37 docker run -it --rm --name comfyui --gpus all -p 8188:8188 -v "$(pwd)"/storage:/home/runner -e CLI_ARGS="" yanwk/comfyui-boot:nightly
$ docker run -it --rm --name comfyui --gpus all -p 8188:8188 -v "$(pwd)"/storage:/home/runner -e CLI_ARGS="" yanwk/comfyui-boot:cu121 ######################################## [INFO] Downloading ComfyUI & Manager... ########################################