设置gitlab时出现docker注册表错误500

设置gitlab时出现docker注册表错误500,docker,gitlab,docker-registry,Docker,Gitlab,Docker Registry,我在example.domain.com 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_CERTIFICA

我在
example.domain.com

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连接时,
example.domain.com
使用
gitlab.yml
config:

  registry:
    enabled: true
    host: example.domain.com
    port: 5005
    api_url: http://localhost:5000/
    key: /etc/ssl/certs/server.key
    path: /git/docker_registry
在web浏览器中,在项目上启用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/


如果您使用的是自签名证书,请不要忘记在安装gitlab的计算机上信任它。请参阅->

您是否按照说明中的详细说明在注册表前配置了nginx反向代理:配置在这里:不幸的是,我们使用的是Gitlab Bitnami堆栈,它运行的是Apache。在配置nginx时,这是im完全丢失的地方(它应该同时运行gitlab还是只运行registry的代理?)
registry:
  api_url: https://localhost:5000/