构建问题排查
按错误信息查原因和最短解决办法。默认镜像 ghcr.io/xcanwin/manyoyo 会自动拉取,只有自定义镜像才需要构建。示例使用 2.2.0-common,请替换为实际标签。
构建失败的通用排查
先保存日志,再按下面的症状对号入座:
bash
manyoyo build --iv 2.2.0-common 2>&1 | tee build.log
grep -i "error\|failed\|fatal" build.log仍找不到原因时,先构建精简版验证基础链路,成功后再构建完整版:
bash
manyoyo build --iv 2.2.0-common --iba TOOL=common
manyoyo build --iv 2.2.0-full --iba TOOL=full镜像拉取失败
text
Error: pinging container registry localhost failed原因:本地没有镜像,且无法访问镜像仓库(网络、代理或指定了不存在的标签)。
bash
# 查看本机已有标签
docker images | grep manyoyo # 或 podman images
# 使用已有标签
manyoyo run --iv <x.y.z-后缀> -y c
# 或在本地构建
manyoyo build --iv 2.2.0-common想长期使用某个标签,在 ~/.manyoyo/manyoyo.json 里设置 "imageVersion": "2.2.0-common"。
网络问题
text
Error: unable to download from https://...
Error: connection timeout原因:访问不了镜像源、DNS 解析失败或需要代理。
bash
# 连通性与代理
curl -I https://mirrors.tencent.com
echo $HTTP_PROXY $HTTPS_PROXY
# DNS
nslookup mirrors.tencent.com- 代理:Docker 在
~/.docker/config.json的proxies.default里设置httpProxy/httpsProxy/noProxy;Podman 导出HTTP_PROXY、HTTPS_PROXY、NO_PROXY环境变量后重新构建。 - DNS:Docker 在
/etc/docker/daemon.json设置"dns": ["8.8.8.8"],Podman 在~/.config/containers/containers.conf的[containers]下设置dns_servers = ["8.8.8.8"],然后重启服务。 - 防火墙(firewalld):
sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0 && sudo firewall-cmd --reload(Podman 用cni-podman0)。 - 国外网络:默认镜像源是国内站点,可置空后用官方源:
bash
manyoyo build --iv 2.2.0-common --iba NODEJS_MIRROR= --iba NPM_REGISTRY= --iba PIP_INDEX_URL=- Git SSL 证书校验失败(仅限开发环境):
--iba GIT_SSL_NO_VERIFY=true。 - 下载超时:缓存会放在
docker/cache/(2 天有效),重试通常能跳过已下载的部分。
磁盘空间不足
text
Error: no space left on device原因:构建需要至少约 10GB 空闲空间。
bash
df -h
docker system df # 或 podman system df
manyoyo prune # 清理悬空和 <none> 镜像
docker builder prune -a # 清理构建缓存
rm -rf docker/cache/ # 清理 MANYOYO 下载缓存(下次构建会重新下载)不要轻易用 docker system prune -a,它会删除所有未使用的镜像和已停止的容器。系统盘不够用时,把数据目录移到大盘:Docker 在 /etc/docker/daemon.json 设置 "data-root",Podman 在 ~/.config/containers/storage.conf 的 [storage] 下设置 graphroot。
权限问题
text
Error: permission denied while trying to connect to the Docker daemon socket原因:当前用户不在 docker 组。
bash
sudo usermod -aG docker $USER
newgrp docker
docker ps平台问题
- Windows WSL2:确认 Docker Desktop 启用了 WSL2 后端并为当前发行版开启集成(
docker version能连上),或直接在 WSL 里安装原生 Docker / Podman。
缓存问题
缓存目录 docker/cache/(Node.js、JDT LSP、gopls),2 天内有效。
- 缓存损坏、构建时报解压或校验错误:
rm -rf docker/cache/后重新构建。 - 缓存没生效:
find docker/cache/ -type f -mtime +2列出的文件已过期,会被重新下载。
需要更详细的输出
手动构建并显示完整过程:
bash
podman build -t ghcr.io/xcanwin/manyoyo:test-full \
-f docker/manyoyo.Dockerfile . \
--build-arg TOOL=full --no-cache --progress=plain