如何将用户名和密码传递给私有Docker注册表以进行“ htpasswd”身份验证

时间:2019-06-10 07:13:41

标签: docker-compose docker-registry

我有一个docker Registry:2使用docker-compose和“ htpasswd”身份验证实现。 这很正常。我可以通过在终端上传递凭据来使用“ docker login”命令登录到注册表。 可以执行所有docker push / pull操作。 但是,curl查询因身份验证错误而失败。

curl -s -H“内容类型:application / json” -X POST -d'{“ username”:“ regisrty-admin”,“ password”:“ Password @ 123”}'https://my-registry.com:5000/v2/_catalog

错误: {“错误”:[{“代码”:“未经授权”,“消息”:“需要验证”,“详细信息”:[{“类型”:“注册表”,“类别”:“”,“名称”:“目录“,”动作“:” *“}]}}}

Docker-Compose.yml

version: '3.7'

services:
  my-registry:
    container_name: my-registry
    restart: always
    image: registry:2
    ports:
    - "5000:5000"
    environment:
      REGISTRY_HTTP_ADDR: 0.0.0.0:5000
      REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
      REGISTRY_HTTP_TLS_KEY: /certs/domain.key
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
    volumes:
      - type: bind
        source: /opt/docker/registry/certs/
        target: /certs
      - type: volume
        source: registry_data
        target: /data
      - type: bind
        source: /opt/docker/registry/auth/
        target: /auth  

volumes:
  registry_data:

将“ htpasswd”凭据与CURL命令一起用于列出注册表映像之类的操作的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用curl验证对私有Docker注册表的请求,例如:

curl --user ${user}:${password} http://${domain}:${port}/v2/*

在您的用例中,应为:

curl --user regisrty-admin:Password@123 https://my-registry.com:5000/v2/_catalog
相关问题