Docker 构建网络问题排查

张开发
2026/6/6 22:31:11 15 分钟阅读

分享文章

Docker 构建网络问题排查
构建时出现类似错误failed to resolve reference docker.io/oven/bun:1sha256:... Head https://registry-1.docker.io/v2/oven/bun/manifests/sha256:...: dial tcp ...:443: i/o timeout表示服务器无法访问 Docker Hubregistry-1.docker.io。国内云主机如腾讯云 Ubuntu上很常见。1. 快速确认# 测试能否访问 Docker Hubcurl-m10-Ihttps://registry-1.docker.io/v2/# 测试拉取任选一个基础镜像sudodockerpull hello-world若超时需要先解决镜像加速再执行./bin/docker.sh rebuild。2. 方案 A配置 Docker 镜像加速推荐腾讯云编辑/etc/docker/daemon.json不存在则新建sudomkdir-p/etc/dockersudotee/etc/docker/daemon.jsonEOF { registry-mirrors: [ https://mirror.ccs.tencentyun.com ] } EOFsudosystemctl daemon-reloadsudosystemctl restartdocker腾讯云内网机器优先使用mirror.ccs.tencentyun.com。验证必须能看到镜像地址否则说明配置未生效见第 3 节sudodockerinfo21|grep-imirror# 或Docker 29sudodockerinfo--format{{json .RegistryConfig.Mirrors}}sudodockerpull oven/bun:13. 镜像加速已写 daemon.json 但仍直连 docker.io3.1 现象docker info | grep mirror无输出docker pull仍访问https://registry-1.docker.io/...并超时registry-1.docker.io解析到31.13.88.26等明显错误的 IP非 Docker 官方地址3.2 排查安装方式与配置路径Ubuntu 上若通过snap安装 Docker配置文件路径是/var/snap/docker/current/config/daemon.json而不是/etc/docker/daemon.json。排查whichdockerdocker--versiondpkg-l|grep-Edocker.io|docker-cesnap list2/dev/null|grepdockersudojournalctl-udocker-n5--no-pager|grepcommitjournalctl若出现commit29.1.3-0ubuntu3~24.04.2这类格式说明是Ubuntu apt 自带的docker.io不是 Docker 官网的docker-ce。snap 版写入配置sudomkdir-p/var/snap/docker/current/configsudotee/var/snap/docker/current/config/daemon.jsonEOF { registry-mirrors: [ https://mirror.ccs.tencentyun.com ] } EOFsudosnap restartdockersudodockerinfo--format{{json .RegistryConfig.Mirrors}}apt 版使用/etc/docker/daemon.json。若restart后Mirrors仍为空可试stop startsudotee/etc/docker/daemon.jsonEOF { registry-mirrors: [ https://mirror.ccs.tencentyun.com ] } EOFsudochmod644/etc/docker/daemon.jsonsudosystemctl stopdockersudosystemctl startdockersudodockerinfo--format{{json .RegistryConfig.Mirrors}}输出应类似[https://mirror.ccs.tencentyun.com/]不能为空。注意Docker 29 已无RegistryConfig.MirrorQueue字段勿用旧文档里的--format {{json .RegistryConfig.MirrorQueue}}会报模板错误。3.3 换装 Docker 官方 docker-cemirror 仍为空时Ubuntu 自带的docker.io在部分环境下不加载/etc/docker/daemon.json中的registry-mirrors。可改用官方docker-ce。卸载会停止现有容器请先备份./data等业务数据。卸载 docker.iosudoapt-getremove-ydocker.io docker-doc containerd runc2/dev/null安装 docker-ceUbuntu 24.04 示例sudoapt-getupdatesudoapt-getinstall-yca-certificatescurlsudoinstall-m0755-d/etc/apt/keyringssudocurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg-o/etc/apt/keyrings/docker.ascsudochmodar /etc/apt/keyrings/docker.ascechodeb [arch$(dpkg --print-architecture)signed-by/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu$(./etc/os-releaseecho$VERSION_CODENAME)stable|sudotee/etc/apt/sources.list.d/docker.listsudoapt-getupdatesudoapt-getinstall-ydocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin重新配置腾讯云镜像加速sudotee/etc/docker/daemon.jsonEOF { registry-mirrors: [https://mirror.ccs.tencentyun.com] } EOFsudosystemctl restartdockersudodockerinfo--format{{json .RegistryConfig.Mirrors}}验证基础镜像拉取sudodockerpull oven/bun:1sudodockerpull golang:1.26.1-alpinesudodockerpull debian:bookworm-slim三条均成功后再执行./bin/docker.sh rebuild。4. 关于 Dockerfile 中的sha256:固定 digest当前Dockerfile基础镜像带 digest pin例如FROM oven/bun:1sha256:0733e50325078969732ebe3b15ce4c4be5082f18c4ac1a0f0ca4839c2e4e42a7若配置 mirror 后仍失败可在构建前预拉所有基础镜像sudodockerpull oven/bun:1sudodockerpull golang:1.26.1-alpinesudodockerpull debian:bookworm-slim再执行 rebuild。5. 与DOCKER_BUILDKIT0的关系日志中的DEPRECATED: The legacy builder只是提示旧版 builder 将被弃用不是失败原因。Hub 拉取超时发生在Step 1 拉取基础镜像与 BuildKit 开闭无关。低内存机器仍建议sudoDOCKER_BUILDKIT0./bin/docker.sh rebuild但必须先能拉到 mirror 上的基础镜像。6. 检查清单sudo docker info --format {{json .RegistryConfig.Mirrors}}非空sudo docker pull oven/bun:1成功sudo docker pull golang:1.26.1-alpine成功sudo docker pull debian:bookworm-slim成功构建前./bin/docker.sh stop释放内存4G 机器再执行sudo DOCKER_BUILDKIT0 ./bin/docker.sh rebuild7. 相关文档规模化部署与稳定性 — 小内存构建、不要在生产机长时间 buildCSDN 踩坑实录 — 腾讯云 2U4G 实际操作记录bin/docker.sh —rebuild/update命令说明

更多文章