agentscope-ai / agentscope-ai/agentscope-runtime
[Feature] Add support for configurable host address for accessing sandbox containers
- Langage dominant
- Python
- Étoiles
- 863
- Forks
- 168
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
## Problem Description
当 sandbox-runtime-server 作为容器在 Docker 中部署(例如通过 docker-compose),并同时管理作为容器的沙盒(Sandbox)时,两者间的网络连接会出现问题。
具体现象是:sandbox-runtime-server 创建的沙盒容器会暴露一个宿主机端口(例如 32768),但 sandbox-runtime-server 总是尝试通过 localhost:沙盒端口 去访问它。如果 Runtime server 运行在它自己的容器中(network_mode: bridge),localhost 指向的是容器自身,而非宿主机。这导致请求一直超时,无法与沙盒建立连接。
## Proposed Solution
希望在 runtime-sandbox-server 的配置中,新增一个变量来为沙盒服务指定专用的访问地址,而不是自动拼接 localhost。
理想的状态是,如果设置了该变量(例如 SANDBOX_CONTAINER_ACCESS_HOST),服务会使用 {指定地址}:{已暴露的宿主机端口} 来访问沙盒;如果没有设置,则保持当前使用 localhost 的默认行为。
## Affected Component(s)
- [ ] Engine
- [ ] Sandbox
- [ ] Common
- [ ] Tools
- [ ] Documentation
- [x] Other: runtime-sandbox-server
## Alternatives Considered
目前考虑的替代方案:
1. 使用 Host 网络模式:将 runtime-sandbox-server 容器设置为 network_mode: "host" 可以解决,但这会牺牲一定程度的网络隔离。
2. 使用自定义 Bridge 网络:创建一个外部 Bridge 网络让沙盒接入,但 runtime-sandbox-server 如何配置以知晓该网络的访问地址仍是个问题。
## Additional Context
这是一个典型的 Docker-in-Docker (DinD) 或 Docker-out-of-Docker (DooD) 场景下的网络通信问题。实现这个配置项对需要将 Runtime 服务容器化并与沙盒容器进行生产级别隔离的部署场景会很有帮助。
### dockerfile
```Dockerfile
FROM python:3.11-slim-bookworm
ARG AGENTSCOPE_RUNTIME_VERSION=1.1.5
# 仅保留 Runtime 服务真正读取的环境变量,省略了部分配置
ENV HOST=0.0.0.0
ENV PORT=38000
ENV DEFAULT_SANDBOX_TYPE=filesystem
ENV CONTAINER_DEPLOYMENT=docker
ENV RUNTIME_SANDBOX_TIMEOUT=600
RUN python -m pip install --no-cache-dir "agentscope-runtime==${AGENTSCOPE_RUNTIME_VERSION}"
EXPOSE 38000
CMD ["runtime-sandbox-server", "--log-level", "INFO"]
```
### 日志
runtime-manager
redis中的沙盒信息
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.