Docker内Stable Diffusion WebUI服务无法从宿主机访问求助
Stable Diffusion WebUI Docker容器宿主机无法访问排查
问题现象
基于stable-diffusion-webui构建Docker镜像后,容器启动后宿主机无法访问内部Web服务器,但容器内服务运行正常:
容器内验证服务正常
$ docker exec -it d29e04e6ca24 bash ---Inside Docker--- root@d29e04e6ca24:/sd# curl -sS -D - localhost:7860 -o /dev/null HTTP/1.1 200 OK date: Wed, 05 Jul 2023 23:49:47 GMT server: uvicorn content-length: 671907 content-type: text/html; charset=utf-8
宿主机访问失败
$ docker container port d29e04e6ca24 7860/tcp -> 0.0.0.0:7860 7860/tcp -> [::]:7860 $ curl -sS -D - localhost:7860 -o /dev/null curl: (56) Recv failure: Connection reset by peer
排查方案
- 修正Web服务绑定地址:stable-diffusion-webui默认仅绑定
127.0.0.1,容器内可访问但宿主机无法穿透。修改启动命令,添加--listen参数(自动绑定0.0.0.0),或明确指定--host 0.0.0.0。例如Dockerfile中的启动命令改为:python launch.py --port 7860 --listen - 检查宿主机端口监听状态:执行
netstat -tulpn | grep 7860或ss -tulpn | grep 7860,确认宿主机7860端口是否处于监听状态。若未监听,需排查Docker端口映射配置是否正确。 - 放行宿主机防火墙端口:确保宿主机防火墙允许7860端口入站连接。以Linux为例:
- 使用ufw:
ufw allow 7860/tcp - 使用firewalld:
firewall-cmd --add-port=7860/tcp --permanent && firewall-cmd --reload
- 使用ufw:
- 查看容器启动日志:执行
docker logs d29e04e6ca24,检查Web服务启动日志,确认是否有类似Uvicorn running on http://127.0.0.1:7860的输出,若有则说明绑定地址错误,需调整启动参数。
内容的提问来源于stack exchange,提问作者Winston
相关产品推荐
相关产品推荐

