使用GitLab创建私有Docker仓库

3
我希望拥有一个GitLab-Registry (https://docs.gitlab.com/ee/administration/container_registry.html)。它是一个Docker-Registry,GitLab将处理身份验证。
我的问题是它不起作用,而我又不知道该怎么办。
我的Registry容器是这样启动的:
 sudo docker run -d \
 -e REGISTRY_LOG_LEVEL=debug \
 -e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/registry \
 -e REGISTRY_AUTH_TOKEN_REALM=https://gitlab.***.com/jwt/auth \
 -e REGISTRY_AUTH_TOKEN_SERVICE=container_registry \
 -e REGISTRY_AUTH_TOKEN_ISSUER=gitlab-issuer \
 -e REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE=/root/certs/registry.pub \
 -e REGISTRY_AUTH_TOKEN_AUTOREDIRECT=true \
 -v /home/git/gitlab/ssl/:/root/certs/ \
 -p 5000:5000 --name registry registry:2

我的GitLab配置如下(GitLab未在Docker容器中运行,而是从源代码安装):

registry:
    enabled: true
    host: registry.***.com
    port: 443
    api_url: https://registry.***.com/ 
    cert: /home/git/gitlab/ssl/registry.pub
    key: /home/git/gitlab/ssl/registry.priv
    #path: /path/data
    issuer: gitlab-issuer

当我想要登录时,使用 `

`

docker login registry.***.com:443

它返回以下内容:

Error response from daemon: Get https://registry.***.com/v2/: error parsing HTTP 404 response body: invalid character 'p' after top-level     value: "404 page not found\n"

registry 的 Docker 日志返回:

GET /auth/token?    account=****&client_id=docker&offline_token=true&service=container_registry HTTP/1.0 404

我有没有漏掉什么部分或者做错了什么?

我尝试使用Traefik反向代理将gitlab链接到注册表时遇到了类似的问题,使用此docker-compose文件https://github.com/sameersbn/docker-gitlab/blob/master/docs/container_registry.md。您能否提供一个工作的docker命令或compose文件的示例来完成这个任务? - curunoir
你是如何生成公钥/私钥的?我找不到这方面的文档。 - Marcel
@Marcel:这是你的SSL证书的私钥。(也许你使用了letsencrypt) - Lee
1个回答

3
这个问题的解决方案是将REGISTRY_AUTH_TOKEN_AUTOREDIRECT设置为false。然后注册表会返回正确的URL。
目前,REGISTRY_AUTH_TOKEN_AUTOREDIRECT参数没有文档记录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接