我有 2 个 EC2,一个安装了 Gitlab-ee,另一个安装了 Docker 并运行 Gitlab-Runner 和一个注册表容器。
Gitlab-Runner 正在工作,并获取对 Gitlab 的提交,并将其发送到 docker 进行构建阶段。然而,在构建阶段,当 docker 容器尝试登录注册表容器时,会出现错误“http:服务器向 HTTPS 客户端提供了 HTTP 响应”
Docker 登录代码:
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
故障排除完成:
sudo docker login localhost:5000软件版本:
如果有人能在这方面帮助我,我将不胜感激!我已经用头撞它两天了。
我相信这个问题缺乏细节,无法为您提供所需的解决方案。无论如何,我将尝试概述您可能遇到的一些问题。
消息“ http:服务器向 HTTPS 客户端提供了 HTTP 响应”准确地表明 HTTPS 客户端(即docker login)正在套接字localhost:5000上期待 TLS (HTTPS) 服务器。
但是,您的注册表服务器仅配置了 HTTP,不支持 TLS。这就是服务器向 HTTPS 客户端返回 HTTP 响应的原因。
要解决这个问题,请遵循官方docker 指南。
如果你在 gitlab-runner 中使用docker executor,这个案例值得一读。这意味着您的 gitlab-runner 会为每个传入作业创建新容器。
您没有共享CI_REGISTRY变量的值。但是,我认为它可能等于本地主机或域名。请注意,容器中的localhost与主机的localhost不同,因为它们位于不同的网络命名空间中。
如果设置域名值,请确保该域名在容器命名空间中可解析。
您标记为您已尝试--insecure-registries标记但没有成功。确保您已将其配置为容器的 Docker 守护进程,而不是主机的 Docker。
如果您使用 Docker-in-Docker 镜像来处理基本上运行单独 Docker 守护进程的作业,这就是事实。
希望这些信息对那些仍在苦苦挣扎的人有用......
| 归档时间: |
|
| 查看次数: |
3798 次 |
| 最近记录: |