注意: 这是一个转自 StackOverflow。
我正在尝试将 Windows Core Docker 映像推送到我的 Docker Hub 帐户。我收到的错误消息 (1) 是:
$ docker push <MY_DOCKER_HUB_USERNAME>/<MY_IMAGE>
The push refers to a repository [docker.io/MY_DOCKER_HUB_USERNAME/MY_IMAGE] (len: 2)
46e2fd82ef4a: Preparing
Error parsing HTTP response: invalid character '<' looking for
beginning of value: "<html><body><h1>403 Forbidden</h1>\nRequest
forbidden by administrative rules.\n</body></html>\n\n"
在推送之前,我已经通过登录使用从我的 Mac OS X 框中获得了正确的身份验证:
$ docker login --username=<MY_USERNAME> --email=<MY_EMAIL@MY_SERVER.COM>
WARNING: login credentials saved in /Users/<MY_USERNAME>/.docker/config.json
Login Succeeded
一旦我通过了身份验证,我认为从 Docker Hub 收到“403 Forbidden”错误是没有意义的。此外,不清楚这些“管理规则”是什么,但也许它们阻止我将我的镜像推送到 Docker Hub 注册表中。请注意我的存储库被标记为“公共”,并且我的默认策略(Docker Hub 仪表板中“设置”中的“默认存储库可见性”)。
我尝试在 Windows Server Core 中执行相同操作,无法使用相同的凭证进行身份验证:
C:\>docker login --username=<MY_USERNAME> --email=<MY_EMAIL@MY_SERVER.COM>
Password:
Error response from daemon: Unexpected status code [403] :
<html><body <h1>403 Forbidden</h1>
Request forbidden by administrative rules.
</body></html>
Windows Core 框中的 Docker 客户端版本:
C:\>docker --version
Docker version 1.10.0-dev, build 59a341e
Mac OS X 中的 Docker 客户端:
$ docker --version
Docker version 1.9.1, build a34a1d5
Windows Server 核心版本:
PS C:\> [System.Environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 10586 0
附言:无论我尝试从 Mac OS X 框内推送(使用我的 Windows Core 框公开的 API)还是直接从我的 Windows Core 框内推送,它们总是会导致相同的错误消息 (1)。它指出整个过程取决于 Windows Server Core 框的身份验证,并且由于它无法正常工作,结果将始终相同。
答案1
目前,这是预期的行为。Docker 仍处于 Windows 开发的早期阶段。本文档具体指出,与 DockerHub 相关的命令尚不受支持。根据 #docker-dev (Freenode) 中的 jhowardmsft 的说法:“使用 (Win Server 2016) Technical Preview 4,它应该能够推送到 Docker Trusted Registry”。