Docker Compose构建Apache Hive超时问题排查与解决求助
Docker拉取Hive镜像超时的原因及解决方法
我之前在搭建Hive Docker环境时也碰到过一模一样的超时问题,本质上是Docker无法正常连接到Docker Hub官方镜像仓库导致的。下面整理了常见的原因和对应的解决办法:
一、问题原因分析
- 网络访问受限:Docker Hub服务器在国外,国内直接访问经常会有高延迟、丢包的情况,超过Docker默认的请求超时时间就会报错
- 未配置国内镜像源:默认使用官方仓库,没有切换到国内的镜像加速源,导致拉取速度过慢
- 代理/防火墙拦截:本地的防火墙、安全软件或者公司的代理服务器,阻止了Docker与镜像仓库的网络连接
- Docker网络配置异常:Docker自身的网络参数设置错误,导致无法正常发起网络请求
二、具体解决方法
1. 配置国内Docker镜像加速源(最推荐)
这是解决这类问题最有效的办法,把Docker的镜像源换成国内的服务商,比如阿里云、网易云或者中科大的:
- 编辑(如果没有就新建)Docker的守护进程配置文件:
/etc/docker/daemon.json - 在文件中添加以下内容:
{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn" ] }
- 重启Docker服务使配置生效:
systemctl daemon-reload systemctl restart docker
- 之后回到你的
/home/user/Stažené/docker-hive-master目录,重新执行docker-compose build即可
2. 检查并修复网络连接
- 先测试能否连通Docker Hub:执行
curl https://registry-1.docker.io/v2/,如果返回401 Unauthorized说明网络是通的(这个返回是正常的,因为需要认证);如果还是超时,那就是本地网络的问题 - 可以尝试切换网络(比如从WiFi换成有线,或者临时使用手机热点),排除本地网络的故障
- 如果是公司网络,联系IT部门确认是否允许访问
registry-1.docker.io这个域名和对应的HTTPS端口(443)
3. 处理代理与防火墙问题
- 如果本地使用了代理服务器,需要给Docker配置对应的代理:
- 在
/etc/docker/daemon.json中添加代理配置(替换成你的代理地址和端口):
{ "proxies": { "default": { "httpProxy": "http://your-proxy-address:port", "httpsProxy": "http://your-proxy-address:port", "noProxy": "localhost,127.0.0.1,internal-domain" } } }- 配置完成后重启Docker服务
- 在
- 临时关闭本地的防火墙或者安全软件,测试是否是它们拦截了Docker的网络请求(测试完成后记得重新开启)
4. 手动拉取镜像后再构建
如果上面的方法都没效果,可以先手动拉取需要的镜像,再执行构建命令:
- 执行手动拉取命令:
docker pull bde2020/hadoop-base:1.1.0-hadoop2.8-java8
- 等待镜像完全拉取完成后,回到你的项目目录执行
docker-compose build,此时Docker会直接使用本地已有的镜像,不会再去远程拉取
内容的提问来源于stack exchange,提问作者Daniel Sup




