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

如何从GitLab CI作业容器推送Docker镜像至本地Registry?

解决GitLab CI DinD推送镜像到本地HTTP Registry的问题

问题原因

Docker客户端默认强制要求Registry使用HTTPS协议,但你的本地Registry是HTTP服务,所以作业容器里的Docker客户端连接时会报错拒绝请求。

解决方案

1. 配置DinD服务允许HTTP访问目标Registry

在你的.gitlab-ci.yml里,给DinD服务添加--insecure-registry参数,指定本地Registry的IP和端口:

services:
  - name: docker:dind
    command: ["--insecure-registry", "some_ip_address:5000"]

这个参数会告诉DinD的Docker daemon,允许以HTTP方式访问指定的Registry地址。

2. 确认作业容器能访问主机Registry

  • 确保主机的5000端口已对外开放(比如调整防火墙规则允许外部访问)
  • 确认本地Registry容器的端口映射正确,启动命令类似:docker run -d -p 5000:5000 registry:latest

3. 执行推送命令

配置完成后,在CI作业里直接执行推送命令即可:

docker push some_ip_address:5000/my-ubuntu

额外说明

如果你的GitLab Runner是运行在主机的Docker容器内,可以在启动Runner时添加--network host参数,让Runner直接使用主机网络,这样作业容器就能直接通过localhost:5000访问Registry,无需使用主机IP。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:42:20