这个错误表明 Docker 无法从 Docker Hub 拉取镜像,通常是由于 网络连接问题 或 Docker Hub 访问受限 导致的。以下是几种解决方案:
解决方案
1. 检查网络连接
bash
# 测试 Docker Hub 连通性
curl -I https://registry-1.docker.io/v2/
# 检查 DNS 解析
nslookup registry-1.docker.io
2. 配置 Docker 镜像加速器(推荐)
在中国Docker Hub 官方源可能被限制,建议配置镜像加速器:
编辑 Docker 配置文件:
bash
sudo nano /etc/docker/daemon.json
添加以下内容(选择其中一个或多个加速器):
json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://hub.rat.dev",
"https://docker.mirrors.ustc.edu.cn",
"https://dockerpull.com",
"https://docker.1panel.top",
"https://docker.foreverlink.love"
]
}
重启 Docker:
bash
sudo systemctl daemon-reload
sudo systemctl restart docker
3. 手动拉取镜像
配置加速器后,先单独拉取失败的镜像:
bash
# 拉取失败的镜像
docker pull alpine/nikto:latest
docker pull zaproxy/zap-stable:latest
docker pull projectdiscovery/nuclei:latest
# 如果 alpine/nikto 找不到,尝试替代镜像
docker pull secfigo/nikto:latest
4. 修改 docker-compose 使用替代镜像
如果 alpine/nikto 镜像确实不存在或无法拉取,编辑 docker-compose.yml 修改镜像源:
yaml
# 找到 nikto 服务部分,修改为:
nikto:
image: secfigo/nikto:latest # 或其他可用镜像
# 或者使用官方 Kali Linux 中的 nikto
# image: kalilinux/kali-rolling:latest
5. 临时使用代理
如果你有 HTTP 代理:
bash
# 设置环境变量
export HTTP_PROXY=http://your-proxy:port
export HTTPS_PROXY=http://your-proxy:port
# 然后重新运行
make start
6. 检查防火墙/安全软件
bash
# 检查防火墙状态
sudo ufw status
sudo iptables -L
# 临时关闭防火墙测试(谨慎操作)
sudo ufw disable
快速排查步骤
bash
# 1. 验证 Docker 是否正常运行
docker info
# 2. 测试拉取一个简单的镜像
docker pull hello-world
# 3. 如果上面成功,尝试拉取失败的特定镜像
docker pull alpine/nikto:latest
# 4. 查看详细错误信息
docker pull alpine/nikto:latest 2>&1
如果问题持续
请提供以下信息以便进一步诊断:
bash
# 查看 Docker 版本
docker version
# 查看系统信息
uname -a
# 测试网络连通性
ping -c 4 128.242.245.244
curl -v https://registry-1.docker.io/v2/
最可能的解决方案是配置 Docker 镜像加速器(方案2),这通常能解决中国大陆访问 Docker Hub 的问题。