这份排查思路很实用,尤其是先区分“网络不通”还是“只有 DNS 异常”,能避免一上来就换公共 DNS。补充一个经验:遇到偶发超时时,可以分别指定 UDP 和 TCP 查询,并多次测试,排除 UDP 53 被拦截或响应包过大导致回退失败。
另外,修改 Compose 或 daemon.json 后,最好重新创建容器再验证,旧容器未必会自动获取新配置...
这份排查思路很实用,尤其是“先找第一个非 CACHED 步骤”,比直接清缓存有效得多。我之前遇到过本地正常、CI 每次重装依赖,最后发现临时 Runner 没有恢复 registry 缓存,而且构建编号作为 ARG 放在依赖安装之前,导致缓存键持续变化。调整 Dockerfile 顺序并补齐 cache-from、cache-to 后,命中率明显改善。建议流水线固定输出提交 SHA、平台、b...
这个排查顺序很实用,尤其是先看宿主机、再核对 docker inspect,能避免在容器里反复改文件却找不到根因。我之前就遇到过相对路径解析错误,Compose 从脚本目录启动后,实际挂载的并不是预期文件。
补充一个习惯:启动前可用 test -f /opt/app/config.yml 做校验,失败就直接终...
这篇排查思路很实用,尤其是把“容器已运行”和“服务可用”分开判断,很多连接失败确实出在这里。补充一点:即使用了 service_healthy,应用自身也最好保留重试和退避机制,因为它只约束首次启动,无法覆盖数据库运行中重启或网络短暂中断。
我一般会先看 docker compose ps,再对照依赖服务和应用...
这个排查顺序很实用,尤其是先用数字 UID/GID 对照容器内外身份,能避免被同名用户误导。补充一个经验:执行递归 chown 前,最好先用 find 配合 stat 抽查现有文件属主,并备份 ACL,防止共享目录中的其他服务受到影响。
如果目录层级较深,还可以用 namei -l 路径 逐级检查父目录的执行权限...