curl - 如何使用 curl 访问 docker registry v2?

标签 curl docker registry

当我直接运行 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

最佳答案

如果你熟悉 httpparty/ruby​​ 你可以看看这个实现:https://github.com/EugenMayer/docker_registry_cli/blob/master/requests/DockerRegistryRequest.rb

根据您在注册表中的身份验证机制,您将需要添加基本身份验证信息,或者,如果使用承载 token ,则需要对每个请求进行身份验证,请参阅 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 token 实现。因此,您需要将 basic-auth header 添加到 curl 或每个范围的 JWT token (每个意图需要 2 个 curl 请求)。

对于 JWT token 身份验证,另请参阅 https://docs.docker.com/registry/spec/auth/jwt/

对于基本身份验证,需要此 header :https://github.com/EugenMayer/docker_registry_cli/blob/master/auth/BasicAuthService.rb#L27

关于curl - 如何使用 curl 访问 docker registry v2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41456996/

相关文章:

database - Postgresql Docker 角色不存在

windows - 将 SMB 添加到 Windows,这有多安全?

php - 关闭 cURL 中的 CURLOPT_SSL_VERIFYPEER 是否会使传输不安全?

ruby-on-rails - 从 Rails 中的 CURL 命令访问 CSV 文件

curl - 为什么获取 Twitter API 的仅应用程序身份验证的不记名 token 的 POST 请求会返回 400 Bad 请求?

docker - 无法从 WSL2 docker 容器连接到 WSL2 localhost 服务器

php - 使用未定义常量 CURLOPT_POST - 假定为 'CURLOPT_POST'

docker - 如何在 docker 镜像上执行完美的 Flow?

magento 注册表已经

python - 在 Python 中获取所有已安装 Windows 程序的“正确”和可靠方法?