docker推得到“错误parsingHTTP 405 … POST不允许”

我正在关注Docker教程

https://docs.docker.com/get-started/part2/#conclusion-of-part-two

当我运行docker push的命令时,我得到了这个错误

 [root@pecan-9 firstDocker]# docker push leeyuiwah/get-started:part2 The push refers to a repository [registry.access.redhat.com/leeyuiwah/get-started] 7a8cded9ffac: Preparing 77a209967ebf: Preparing 00d1486114fa: Preparing 24b02a08f57d: Preparing aed9311ebf15: Preparing 17f9d9d4ce37: Waiting 18f9b4e2e1bc: Waiting error parsing HTTP 405 response body: invalid character '<' looking for beginning of value: "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<title>405 Method Not Allowed</title>\n <h1>Method Not Allowed</h1>\n<p> The method POST is not allowed for the requested URL.</p>\n" 

我在互联网上search。 在这个论坛上已经有很多关于这个错误的报道,但没有回答:

https://forums.docker.com/t/docker-push-command-is-throwing-error-405-method-not-allowed/28384/4

我在防火墙后面,但是当我用docker run hello-world进行testing时,从Internet docker run hello-world拉取图像,这个命令没有问题。

我使用的版本略低于本教程的build议。 不知道这是否是原因。

 [root@pecan-9 firstDocker]# docker --version Docker version 1.12.6, build 3a094bd/1.12.6 

检查您的主机名(特别是如果您在RedHat系统上运行)

(参考Redhat的这个bug报告 )

我意识到,通过不给标签和推命令的参数,我实际上使用不同的registry( registry.access.redhat.com而不是hub.docker.com )。

 [root@pecan-9A firstDocker]# docker push leeyuiwah/get-started:part2 The push refers to a repository [registry.access.redhat.com/leeyuiwah/get-started] Error: Status 404 trying to push repository leeyuiwah/get-started: "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n <title>404 Not Found</title>\n<h1>Not Found</h1>\n <p>The requested URL was not found on the server.</p> <p>If you entered the URL manually please check your spelling and try again.</p> \n" 

所以现在我明确地设置了registry,但是我得到的Index response didn't contain any endpoints

 [root@pecan-9A firstDocker]# docker-latest tag friendlyhello hub.docker.com/leeyuiwah/get-started:part2 [root@pecan-9A firstDocker]# docker-latest push hub.docker.com/leeyuiwah/get-started:part2 The push refers to a repository [hub.docker.com/leeyuiwah/get-started] 3088bc0df692: Preparing fa9c71108753: Preparing 4cc654f2b860: Preparing 24b02a08f57d: Preparing aed9311ebf15: Preparing 17f9d9d4ce37: Waiting 18f9b4e2e1bc: Waiting Index response didn't contain any endpoints 

我也切换到使用最新的docker工具,以确保问题不是由于版本。

 [root@pecan-9A firstDocker]# docker-latest --version Docker version 1.13.1, build 6774275/1.13.1 

docker login虚假回应?

我注意到的另一件事是login命令已经给我Login Succeeded假响应。 这可能是一个因素吗?

 [root@pecan-9A firstDocker]# docker-latest login hub.docker.com Username (leeyuiwah): bogus (I don't think this is a valid account) Password: (just type in some junk) Login Succeeded 

使用本地自托piperegistry进行testing

(参考Docker Doc:运行本地registry )

我可以使用本地自托piperegistry进行推送。 我还在使用一个虚假login

安装本地自托pipe的registry

 [root@pecan-9A firstDocker]# docker run -d -p 5000:5000 --restart=always --name registry registry:2 Unable to find image 'registry:2' locally Trying to pull repository registry.access.redhat.com/registry ... Trying to pull repository docker.io/library/registry ... 2: Pulling from docker.io/library/registry 90f4dba627d6: Pull complete b3e11d7b4f5e: Pull complete 1f032f3c8932: Pull complete 425585e7aedb: Pull complete f45f535a83d2: Pull complete Digest: sha256:0f8fe61fa337b8ef02217702ba979b47a7d68717d4628f31592ebff85915f3ba 37f70dbd0e4f96707d07579c8ab8577032cefa9142af0c13c2dace23adda213a 

做一个假login

 [root@pecan-9A firstDocker]# docker-latest login localhost:5000 Username: dkfjld (bogus account name) Password: (bogus password) Login Succeeded (this still bugs me!) 

标记然后推==>这次它工作!

 [root@pecan-9A firstDocker]# docker-latest tag friendlyhello localhost:5000/leeyuiwah/get-started:part2 [root@pecan-9A firstDocker]# docker-latest push localhost:5000/leeyuiwah/get-started:part2 The push refers to a repository [localhost:5000/leeyuiwah/get-started] 3088bc0df692: Pushed fa9c71108753: Pushed 4cc654f2b860: Pushed 24b02a08f57d: Pushed aed9311ebf15: Pushed 17f9d9d4ce37: Pushed 18f9b4e2e1bc: Pushed part2: digest: sha256:23c9720ee308ab6fa6ec8b0c23c40fadc7562fe34352d64b2322f43a90dfec0b size: 1787