You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用IP拉取私有Docker Registry镜像遇Tunnel or SSL Forbidden错误求助

解决Docker私有Registry用IP拉取镜像时的SSL/Tunnel错误

嘿,我来帮你搞定这个问题!你遇到的Error response from daemon: Get https://10.118.56.140:5000/v2/: Tunnel or SSL Forbidden错误,本质是Docker默认要求私有Registry使用HTTPS通信,但你本地搭建的Registry默认是HTTP的。而Docker对localhost开了特例,允许HTTP访问,换成其他IP就会触发安全校验,所以才会报错。

下面给你两个可行的解决方案,按需选择:

方案一:让Docker允许该IP的HTTP Registry(快速解决,适合测试环境)

这个方法最直接,把你的Registry IP加入Docker的“不安全注册表”白名单:

  1. 找到Docker配置文件:

    • Linux:编辑/etc/docker/daemon.json,如果文件不存在就新建一个
    • Windows/macOS:打开Docker Desktop,进入「设置」→「Docker Engine」,直接编辑JSON配置
  2. 添加配置内容:
    在JSON里加入insecure-registries字段,内容是你的Registry地址:

    {
      "insecure-registries": ["10.118.56.140:5000"]
    }
    
  3. 重启Docker服务:

    • Linux:执行sudo systemctl restart docker
    • Windows/macOS:在Docker Desktop界面点击「重启」按钮

完成后再试docker pull 10.118.56.140:5000/new_buntu,应该就能正常拉取了。

方案二:给Registry配置SSL证书(推荐生产环境)

如果是生产环境使用,更安全的做法是给Registry配置合法的SSL证书,步骤大概是这样:

  1. 获取SSL证书:可以用Let's Encrypt的免费证书,或者生成自签名证书(自签名的话需要把证书添加到Docker的信任列表)
  2. 带证书启动Registry:
    用以下命令启动Registry,挂载证书目录并指定证书路径:
    docker run -d \
      -p 5000:5000 \
      --restart=always \
      --name registry \
      -v /your/cert/path:/certs \
      -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/your-domain.crt \
      -e REGISTRY_HTTP_TLS_KEY=/certs/your-domain.key \
      registry:latest
    
  3. 信任证书:如果是自签名证书,需要把证书放到Docker的信任目录,比如Linux下是/etc/docker/certs.d/10.118.56.140:5000/,Windows/macOS可以在Docker Desktop里配置信任。

额外:查看私有Registry的镜像列表

等你解决了拉取问题后,想要查看Registry里的镜像列表,可以用curl命令:

  • 如果是HTTP(方案一):
    curl http://10.118.56.140:5000/v2/_catalog
    
  • 如果是HTTPS(方案二):
    curl https://10.118.56.140:5000/v2/_catalog
    

返回的JSON里就会列出所有镜像名称。

内容的提问来源于stack exchange,提问作者7_R3X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:23:13