You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动