我有一个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命令一起用于列出注册表映像之类的操作的正确方法是什么?
答案 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