2017-01-04 119 views
2

當我直接運行docker run -d -p 5000:5000 --restart=always --name registry registry:2時,我可以訪問註冊表curl localhost:5000/v2/_catalog。但在我使用TLS參考https://docs.docker.com/registry/deploying/保護註冊表後。像curl localhost:5000/v2/_catalog這樣的命令無法使用。那麼我怎樣才能使用curl訪問註冊表?是否應該添加一些選項?就像我想使用docker remote api一樣,我可以使用curl --insecure --cert ~/cert.pem --key ~/key.pem https://$host:2376/_ping如何使用curl訪問docker registry v2?

回答

1

如果您熟悉httpparty/Ruby中,你可以看看這個實現:https://github.com/EugenMayer/docker_registry_cli/blob/master/requests/DockerRegistryRequest.rb

取決於你有你的註冊表中的身份驗證機制,你要麼需要添加基本認證informartions或者,如果承載使用令牌,你需要每一個要求身份驗證,請參閱https://github.com/EugenMayer/docker_registry_cli/tree/master/auth

這意味着,你首先發送一個GET請求,如果你得到一個401,你的憑據發送到服務器範圍參數:https://github.com/EugenMayer/docker_registry_cli/blob/master/requests/DockerRegistryRequest.rb#L52

它或多或少都是平常的JWT令牌實現。因此,您需要添加basic-auth頭文件來捲曲,或者添加每個範圍的JWT令牌(每個intent需要2個curl請求)。

對於JWT令牌身份驗證也看到https://docs.docker.com/registry/spec/auth/jwt/

對於基本認證,則需要這個頭:https://github.com/EugenMayer/docker_registry_cli/blob/master/auth/BasicAuthService.rb#L27

-1

捲曲狀curl --cacert domain.crt https://myregistry.com:5000/v2/_catalog會工作。

相關問題