Artifactory docker 注册表登录失败,请求错误 400

Sar*_*thi 5 authentication artifactory docker

我正在尝试登录到 artifactory 中的 docker 注册表。我能够通过 curl 做到这一点,但是从 docker login 命令收到了 400 个错误的请求。这是一个企业工件,所以我没有检查日志的管理员权限。

卷曲

$ curl -I https://<EMAIL>:<TOKEN>@artifactory.myorg.com/api/docker/sample-docker/v2/
HTTP/1.1 200 OK
Date: Tue, 25 Aug 2020 18:41:35 GMT
Content-Type: application/json
Connection: keep-alive
Set-Cookie: X-Oracle-BMC-LBS-Route=7f4f0554bc358efb45fcb4fede9cb5632a7b7b07; Path=/
X-Artifactory-Id: 524cb1f38361d95717ff9ba8b8d5fc805d4547e6
X-Artifactory-Node-Id: node2
Docker-Distribution-Api-Version: registry/2.0
Run Code Online (Sandbox Code Playgroud)

Docker登录命令

$ docker login artifactory.myorg.com
Username: <EMAIL>
Password:
Error response from daemon: login attempt to https://artifactory.myorg.com/v2/ failed with status: 400 Bad Request
Run Code Online (Sandbox Code Playgroud)

码头工人版本

Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b
 Built:             Wed Mar 11 01:21:11 2020
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:29:16 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
Run Code Online (Sandbox Code Playgroud)

小智 11

这取决于 Artifactory 方面的设置。有 3 种方法可以设置对 Docker 存储库的访问:

  • 存储库路径(直接访问)
  • 港口
  • 子域名(主要使用JFrog推荐的这个)

您需要询问 Artifactory 支持团队或在他们的文档中查找使用哪种方法。docker login根据所使用的方法而有所不同。不幸的是,据我所知,Docker 存储库的“Set Me Up”按钮始终显示Repository Path方法命令,并且不反映配置的实际方法。

对于Sub-domain登录和拉/推应该如下所示:
docker login <REPOSITORY_KEY>.artifactory.myorg.com
docker pull / push <REPOSITORY_KEY>.artifactory.myorg.com/<IMAGE>:<TAG>
所以在您的示例中:
docker login sample-docker.artifactory.myorg.com

对于Repository Path登录和拉/推应该如下所示:
docker login artifactory.myorg.com
docker pull / push artifactory.myorg.com/<REPOSITORY_KEY>/<IMAGE>:<TAG>

对于Port登录和拉/推应该如下所示:
docker login artifactory.myorg.com:<REPOSITORY_PORT>
docker pull / push artifactory.myorg.com:<REPOSITORY_PORT>/<IMAGE>:<TAG>

400 Bad Request注意:如果您尝试使用不存在的存储库,您也会得到。