当遇到 Docker 注册表回传错误时,可能是由多种原因引起的。以下是常见问题的排查和解决方法:
Error response from daemon: Get "https://registry-1.docker.io/v2/": unauthorized: incorrect username or password
解决方法:
- 重新登录 Docker Hub:
bash
docker logout
docker login
- 检查 ~/.docker/config.json
文件中的凭证是否正确
- 如果是私有仓库,确保有正确的访问权限
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection
解决方法:
- 检查网络连接是否正常
- 尝试更换 DNS 服务器(如使用 8.8.8.8 或 1.1.1.1)
- 配置 Docker 使用代理(如有需要):
bash
mkdir -p /etc/systemd/system/docker.service.d
echo '[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1"' > /etc/systemd/system/docker.service.d/http-proxy.conf
systemctl daemon-reload
systemctl restart docker
Error response from daemon: manifest for image-name:tag not found
解决方法:
- 检查镜像名称和标签是否正确
- 确保镜像存在于目标仓库中
- 对于 Docker Hub,尝试先搜索镜像是否存在:
bash
docker search image-name
Error response from daemon: failed to copy: write /var/lib/docker/tmp/...: no space left on device
解决方法:
- 清理 Docker 占用的空间:
bash
docker system prune -a
- 检查磁盘空间:
bash
df -h
- 扩大 Docker 的存储空间或迁移存储位置
Error response from daemon: toomanyrequests: You have reached your pull rate limit
解决方法:
- 登录 Docker Hub 以获取更高的拉取限制
- 考虑使用镜像加速器(如阿里云、腾讯云等提供的镜像服务)
- 配置镜像加速器:
bash
# 对于Linux系统,编辑/etc/docker/daemon.json
{
"registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"]
}
然后重启 Docker 服务
启用调试模式:
dockerd --debug
检查 Docker 守护进程日志:
journalctl -u docker.service
手动测试 API 连接:
curl -v https://registry-1.docker.io/v2/
检查 DNS 解析:
nslookup registry-1.docker.io
重置 Docker 环境(作为最后手段):
# 警告:这将删除所有容器、镜像、卷和网络
docker system prune -a --volumes
如果以上方法都不能解决问题,请提供具体的错误信息以便进一步诊断。