agentscope-ai / agentscope-ai/agentscope-runtime

[Feature] Add support for configurable host address for accessing sandbox containers

Ouverte
#518 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement
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

Image

redis中的沙盒信息

Image

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.