docker - 使用 docker 注册表设置 gitlab 错误 500

标签 docker gitlab docker-registry

我在 example.domain.com 上使用 docker 注册表运行 docker

docker run -d -p 5000:5000 --restart=always --name registry \
-v /etc/ssl/certs/:/certs \
-e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry \
-v /git/docker_registry:/var/lib/registry \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/server.key \
registry:2

我可以推送和拉取此 Docker 注册表,但是当我尝试使用 gitlab.yml 将其与在同一台计算机上运行的 gitlab 连接时 example.domain.com > 配置:

  registry:
    enabled: true
    host: example.domain.com
    port: 5005
    api_url: http://localhost:5000/
    key: /etc/ssl/certs/server.key
    path: /git/docker_registry

在网络浏览器中,在项目上启用 docker 注册表工作正常,但是当我转到项目页面并打开 Regisry 页面 时,我收到错误 500

Gitlab 日志显示:

Started POST "/api/v3/internal/allowed" for 10.10.200.96 at 2016-11-25 10:15:01 +0100
Started POST "/api/v3/internal/allowed" for 10.10.200.96 at 2016-11-25 10:15:01 +0100
Started POST "/api/v3/internal/allowed" for 10.10.200.96 at 2016-11-25 10:15:01 +0100
Started GET "/data-access-servicess/centipede-rest/container_registry" for 10.11.0.232 at 2016-11-25 10:15:01 +0100
Processing by Projects::ContainerRegistryController#index as HTML
  Parameters: {"namespace_id"=>"data-access-servicess", "project_id"=>"centipede-rest"}
Completed 500 Internal Server Error in 195ms (ActiveRecord: 25.9ms)

Faraday::ConnectionFailed (wrong status line: "\x15\x03\x01\x00\x02\x02"):
  lib/container_registry/client.rb:19:in `repository_tags'
  lib/container_registry/repository.rb:22:in `manifest'
  lib/container_registry/repository.rb:31:in `tags'
  app/controllers/projects/container_registry_controller.rb:8:in `index'
  lib/gitlab/request_profiler/middleware.rb:15:in `call'
  lib/gitlab/middleware/go.rb:16:in `call'

和 Docker 注册表日志:

2016/11/25 09:15:01 http: TLS handshake error from 172.17.0.1:44608: tls: first record does not look like a TLS handshake

最佳答案

问题是 gitlab 尝试通过 http 而不是 httpS 连接到注册表。因此您会收到 TLS 握手错误。

更改您的 gitlab 配置

registry:
  api_url: http://localhost:5000/

registry:
  api_url: https://localhost:5000/

如果您使用自签名证书,请不要忘记在安装 gitlab 的计算机上信任它。请参阅 -> https://docs.docker.com/registry/insecure/#troubleshooting-insecure-registry

关于docker - 使用 docker 注册表设置 gitlab 错误 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40801406/

相关文章:

variables - 为仅针对一个管道运行的作业动态保存 GitLab 变量

node.js - 使用我的应用程序登录登录我的 Gitlab CE 安装

gitlab - 在 gitlab 管道中使用 semver 或时间戳

Azure 容器 - 无法登录私有(private)注册表 "Error response received from the docker registry"

docker - 如何在 Apache httpd 后面公开 Docker-Registry?

python - 有没有一种简单的方法可以将目录的特定部分复制到 Dockerfile 中?

docker - 看板Docker SSL

docker - 在 docker 文件中执行 gradle 命令时出错

linux - Docker 容器作为 Linux 服务?

docker - kubectl apply -f behind 代理