2015-11-14 35 views
2

当我尝试推送到我之前创建的注册表时,我遇到了问题。以下是我遵循的步骤。码头推送到注册表不起作用

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 

下面是搬运工图像的输出命令:

 ~/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  

我检查网络集在虚拟机中。他们是如下:

名称:dockersetting 协议:TCP 主机IP: 主机端口:50100 GuestIP: 来宾端口:50100

+0

了,你能重试' -p 5000:5000',只是为了清除任何端口问题? – VonC

+0

5000:5000工作但创建注册表时5001:5002不起作用。为什么? – Zack

+0

我已编辑答案以解决您的评论。 – VonC

回答

1

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

你必须在docker/distributionissue 523(新的注册表服务器)

报道当您绑定到容器内本地主机类似的错误消息,该服务将不可用的容器外,即使你指定端口映射。
当docker守护程序进行连接时,由于服务未绑定到容器的“外部”接口,因此无法连接到端口。

这意味着您需要设置port forwarding, or to use the docker-machine ip new_registry ip address

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

5000:5000级的作品,但5001:5002创建注册表时不起作用。

这可能是虚拟机已设置为端口转发端口是5000,而不是5001(类似于this picture)。

这意味着registry image exposes port 5000:您可以映射主机端口5000或5001或任何你想要的端口上:但它必须是5000端口,你映射:

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

如何检查VM是否已设置为转发端口5000而不是5001? – Zack

+0

@查看http://odewahn.github.io/docker-jumpstart/images/vboxmanage.png:虚拟机的网络设置。 – VonC

+0

默认是现在端口2376.我给我的问题添加了更多的细节:输出“docker-machine env default”命令,吐出主机IP地址,然后是端口号 – Zack