跳转至

DIP1 工作日志 — §A 环境网络阻塞解除(Docker 镜像加速 + 服务就绪)

DWLG 编号:DWLG-20260809-03 日期:2026-08-09 参与方:TL(司徒)/ DT(听写) 关联文档:DIP1-IMP V2.0 §4 / §A / §7.1;DWLG-20260809-01(阻塞记录)/ DWLG-20260809-02(骨架交付) 关联 Issue:无(TL 主导处置,非 SFM 反馈) 前置状态:DWLG-01 记录的 Docker Hub 不可达 + EDB 403 双重阻塞


一、工作内容

针对 DWLG-20260809-01 记录的网络阻塞,TL 介入完成全链路诊断与处置:

  1. 本地资源盘点:确认 Docker Desktop v29.6.2 daemon 运行正常,但本地零镜像;PostgreSQL/Redis 均未本地安装。
  2. 网络连通性矩阵测试:对 Docker Hub 直连 + 7 个国内镜像源 + EDB + GitHub + postgresql.org 共 11 个目标逐一 TCP/HTTP 探测。
  3. 镜像源可用性验证:用 daocloud 前缀实际拉取 postgres:16-alpine 验证可拉取性(TCP 通 ≠ 能拉取)。
  4. 全量镜像拉取 + retag:拉取 4 个所需镜像并 retag 为标准名,采用零风险策略(不改 daemon.json、不重启 Docker)。
  5. docker-compose 启动 + 连通性验证:4 服务全部 healthy,PG/Redis/Mailpit/Jaeger 连通性逐项验证通过。

二、诊断结论(根因定位)

目标 连通性 说明
Docker Hub 直连 (registry-1.docker.io:443) ❌ 不可达 被墙,DWLG-01 阻塞根因
docker.m.daocloud.io ✅ 可用 DaoCloud 镜像,本次采用
docker.nju.edu.cn ✅ 可用 南京大学镜像(备选)
docker.1ms.run ✅ 可用 1ms 镜像(备选)
dockerproxy / ustc / 163 / baidu ❌ 均不可用 公共镜像源已关闭
EDB 下载站 (enterprisedb.com) ✅ HTTP 200 网站可达,DWLG-01 报 403 为 winget 直链问题
GitHub / postgresql.org ✅ 可用 备选方案可用

根因:Docker Hub 直连被墙,daemon.json 未配置任何镜像加速器,仅有 Docker Desktop 默认内部代理 http.docker.internal:3128(该代理无法出海),导致全部镜像拉取失败。

三、处置方案与执行

方案选择:镜像源前缀拉取 + retag(零风险,不重启 Docker)

未采用「修改 daemon.json + 重启 Docker」方案,原因:重启 Docker Desktop 会中断用户可能运行的其他容器,且 Docker Desktop 退出时可能覆盖外部对 daemon.json 的修改。改用 retag 策略立即解除阻塞。

执行结果

# 镜像 来源 大小 标准 tag
1 postgres docker.m.daocloud.io/library/postgres:16-alpine 420MB postgres:16-alpine
2 redis docker.m.daocloud.io/library/redis:7.2-alpine 56.9MB redis:7.2-alpine
3 mailpit docker.m.daocloud.io/axllent/mailpit:latest 50.9MB axllent/mailpit:latest
4 jaeger docker.m.daocloud.io/jaegertracing/all-in-one:1.60 113MB jaegertracing/all-in-one:1.60

docker-compose 服务状态

NAME              IMAGE                           STATUS                    PORTS
dip1-postgres-1   postgres:16-alpine              Up (healthy)              5432->5432
dip1-redis-1      redis:7.2-alpine                Up (healthy)              6379->6379
dip1-mailpit-1    axllent/mailpit:latest          Up (healthy)              1025->1025, 8025->8025
dip1-jaeger-1     jaegertracing/all-in-one:1.60   Up                        4317->4317, 16686->16686

连通性验证

服务 验证命令 结果
PostgreSQL 16.14 pg_isready -U dip1 -d dip1_dev ✅ accepting connections;dip1_dev 库已创建
Redis 7.2.15 redis-cli ping ✅ PONG
Mailpit Web UI GET http://localhost:8025 ✅ HTTP 200
Jaeger UI GET http://localhost:16686 ✅ HTTP 200

四、产出物

类型 路径 说明
镜像 本地 Docker 4 镜像 postgres:16-alpine / redis:7.2-alpine / mailpit:latest / jaeger:1.60
容器 dip1-postgres-1 / dip1-redis-1 / dip1-mailpit-1 / dip1-jaeger-1 全部 healthy
日志 本文件 DWLG-20260809-03 阻塞解除全程记录

五、长期建议(待 TL 决策)

建议 1:配置 Docker 镜像加速器(持久化方案)

当前 retag 策略为一次性处置。若后续镜像被删或换机器,需重复手动拉取。建议通过 Docker Desktop GUI → Settings → Docker Engine 添加 registry-mirrors(由 Docker 自身管理 daemon.json,避免覆盖冲突):

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.1ms.run"
  ]
}

配置后点 "Apply & Restart",后续 docker pull 直连标准镜像名即可自动走加速器。⚠ 此操作会重启 Docker,请在无运行中容器时执行。

建议 2:PATH 持久化

当前 Docker CLI(C:\Program Files\Docker\Docker\resources\bin\)未注入系统 PATH,Code Agent 脚本若直接调用 docker 会报 "not recognized"。建议将该路径加入用户环境变量 PATH(Docker Desktop 安装时通常应自动配置,疑似安装后未刷新 shell)。

建议 3:DB 环境就绪后 Code Agent 可推进项

环境阻塞解除后,DWLG-02 待办 #2(Alembic 0001+0002 三循环验证)可立即执行。建议 Code Agent 下一步: 1. 执行 alembic upgrade head 验证 22 表迁移 2. 执行 alembic downgrade baseupgrade head 循环验证可逆性 3. 跑种子数据 CLI:python -m app.infrastructure.db.seed.cli 4. 推进 C-B1(QSV)持久化集成测试

六、问题与待办

# 问题 状态 负责人 截止
1 Docker Hub 网络阻塞 ✅ 已解除 TL 2026-08-09 完成
2 PG/Redis 容器服务就绪 ✅ 已就绪 TL 2026-08-09 完成
3 镜像加速器持久化配置(建议 1) 🟡 待 TL 决策 TL 2026-W33
4 Docker CLI PATH 持久化(建议 2) 🟡 待 TL 配置 TL 2026-W33
5 Alembic 迁移三循环验证(原 DWLG-02 #2) 🟢 可启动 Code Agent 环境就绪后 1d

七、状态矩阵更新

DIP1-IMP §7.1 矩阵变更: - C-A0(§A 环境 9 项基线):🟡 → 🟢(Python/Docker/依赖/PG/Redis/Mailpit/Jaeger 全部就绪) - C-B1(QSV 报价域):🟢(核心计算+接口+单测 OK)→ 持久化集成测试可启动 - C-C3/C-C4(RN 双端):🟡(不变,待 §C 阶段)


修订记录

版本 日期 修订人 修订内容
V1.0 2026-08-09 DT 创建:环境网络阻塞解除全程记录(诊断+处置+验证+长期建议)

本记录由听写(DT)根据 TL 主导的处置全过程整理。环境阻塞已解除,Code Agent 可恢复 DB 相关工作。