docker: pin tenant networks to 172.16.0.0/16 via explicit --subnet
ci / test (push) Successful in 35m1s
ci / test (push) Successful in 35m1s
Tenant networks were created bare (docker network create <name>), letting Docker's default pool hand out subnets outside the iptables 8889 allowlist (172.16.0.0/12). The smoke tenant landed on 192.168.32.0/20, so containers never reached the egress proxy and every model turn timed out at 600s twice. Fix (B): derive a deterministic /24 inside 172.16.0.0/16 from sha256(network name) with linear probing on IPAM overlap, max 32 probes. 172.16.0.0/16 is the one /16 in the allowlist Docker never auto-assigns (default pool starts at 172.17.0.0/16). No persistent state; capacity 256 tenant networks per host, explicit failure when exhausted. Pre-existing out-of-range networks are reused as-is and need manual removal (see README). Tests: 7 new (candidate properties incl. wrap-around, pinned argv, overlap probe, exhaustion, empty name).
This commit is contained in:
1 parent
d5642c6252
commit
4d3ea048a5
3 files changed
+163
-16
No files matched your search
+6
-1
@@ -734,7 +734,12 @@ interrupted 且终态任务 cancel 返回 400、心跳后 sweep 不扫刚心跳
|
||||
非租户模式完全一致(`/app/work`、codex-home、repos/<项目>、
|
||||
test-repo),只是宿主挂载源按项目分开——容器内看不到其它
|
||||
项目的任何文件;同时每个项目进独立的 Docker 网络
|
||||
`codex-<项目>`(容器跨项目网络隔离),容器统一加
|
||||
`codex-<项目>`(容器跨项目网络隔离),建网时显式
|
||||
`--subnet` 把子网固定在 172.16.0.0/16 内(/24 按网络名
|
||||
确定性划段),保证落在宿主 iptables 的代理放行范围
|
||||
(172.16.0.0/12)内;2026-11-07 之前建好的范围外旧网
|
||||
(如 codex-smoke-20261107)不会自动纠正,须人工删除后
|
||||
重建。容器统一加
|
||||
`--cap-drop=ALL --security-opt=no-new-privileges`。codex-home
|
||||
只播种模板的 config.toml(relay 端点与 provider 名,不含
|
||||
密钥值),绝不复制 thread_history。注意:内层 codex 沙箱仍
|
||||
|
||||
Reference in new issue
Block a user