自托管 docker-registry 不请求在根域(即registry.mydomain.com)进行身份验证

问题描述 投票:0回答:1

除了一些 Node.js 应用程序之外,我还有一个由 ubuntu、nginx-proxyacme-companion 提供服务的自托管 docker 注册表。注册表的基本身份验证是使用

htpasswd
设置的。如果我尝试导航到根域,例如 https://myregistry.com,则不需要身份验证。如果尝试打开 https://myregistry.com/v2https://myregistry.com/v2/_catalog,则需要进行身份验证。这是预期的吗?如果不是,我该如何查明发生这种情况的原因?

由于身份验证在

/v2
/v2/_catalog
路径上成功(和失败),我假设凭据和 htpasswd 文件 + 位置是有效的。

# compose-registry.yml

version: '3.8'
services:
  registry.mydomain.com:
    image: registry:2.8
    platform: linux/amd64
    container_name: registry.mydomain.com
    restart: always
    expose:
    - 5000
    depends_on:
      - nginx-proxy
      - acme-companion
    environment:
      VIRTUAL_HOST: registry.mydomain.com
      LETSENCRYPT_HOST: registry.mydomain.com
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
      REGISTRY_AUTH: 'htpasswd'
      REGISTRY_AUTH_HTPASSWD_REALM: 'basic-realm'
      REGISTRY_AUTH_HTPASSWD_PATH: '/auth/registry.mydomain.com'
    volumes:
      - data:/data
      - /home/lala/docker-registry/auth:/auth
    networks:
      - registry
volumes:
  data:
networks:
  registry:
basic-authentication docker-registry
1个回答
0
投票

OCI distribution-spec 未指定 /

 端点的任何行为,仅指定 
/v2/
 及以下端点的行为。因此,OCI 注册机构可以按照他们希望的方式自由处理该端点。

分发项目的行为将与他们如何在 Go 中定义路由器/复用器相关,但我没有花足够的时间挖掘他们的代码来找到行为差异的具体位置。如果您希望您的应用程序可移植到其他注册表,我会避免使用未定义的端点并坚持使用

/v2/

© www.soinside.com 2019 - 2024. All rights reserved.