docker推送到registry不起作用

当我尝试推送到之前创build的registry时,我遇到了问题。 以下是我遵循的步骤。

docker run -d -p 5001:5002 --restart=always --name new_registry registry:2 docker build -t test-app . docker run -p 50100:8080 -d --name app test-app docker tag test-app localhost:5001/test:latest docker push localhost:5001/test:latest 

=================================================

  ✘  ~/G/S/d/a/App   master  docker push localhost:5001/test:latest The push refers to a repository [localhost:5001/test] (len: 1) Sending image list Put http://localhost:5001/v1/repositories/test/: net/http: transport closed before response was received 

以下是docker images命令的输出:

   ~/G/S/d/a/App   master  docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE test-app latest 78f9362f7cd5 51 minutes ago 547.8 MB localhost:5001/test latest 78f9362f7cd5 51 minutes ago 547.8 MB registry 2 5d165b8e4b20 3 weeks ago 220.1 MB 

更多细节如下:

  ~/G/S/d/a/patterns_and_tools  docker-machine env default set -x DOCKER_TLS_VERIFY "1"; set -x DOCKER_HOST "tcp://192.168.yyy.xxx:2376"; set -x DOCKER_CERT_PATH "/Users/zack/.docker/machine/machines/default"; set -x DOCKER_MACHINE_NAME "default"; # Run this command to configure your shell: # eval (docker-machine env default) ~/G/S/d/a/patterns_and_tools  

我检查了虚拟机中的networking设置。 他们如下:

名称:docker设置协议:TCP主机IP:主机端口:50100 GuestIP:访客端口:50100

标签boot2docker (即使它已被docker 机器废弃)意味着你不是直接在Linux上,而是在Windows或Mac上,使用Linux VM。

docker/distribution 问题523中报告的类似错误消息(新的registry服务器)

当绑定到容器内的本地主机时,即使您指定了端口映射,该服务也不会在容器外部可用。
当docker守护进程连接时,由于服务未绑定到容器的“外部”接口,因此无法连接到端口。

这意味着你需要设置端口转发,或者使用docker-machine ip new_registry ip地址 。

 docker push $(docker-machine ip new_registry):5001/test:latest 

创buildregistry时5000:5000工作,但5001:5002不起作用。

VM可能已经被设置为端口转发端口5000,但不是5001(类似于这张图片 )。

这意味着registry映像公开了端口5000 :您可以将其映射到主机端口5000或5001或任何您想要的端口上:但它必须是您映射的端口5000:

 docker run -d -p 5001:5000 --restart=always --name new_registry registry:2 ^^^^