当我尝试推送到之前创建的注册表时,我遇到了问题。以下是我遵循的步骤。
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
我检查了VM中的网络设置。它们如下:
名称:dockersetting 协议:TCP 主机IP: 主机端口:50100 GuestIP: 访客港口:50100
答案 0 :(得分:1)
标记boot2docker(即使它已被docker machine淘汰)意味着您不是直接使用Linux,而是使用Linux VM在Windows或Mac上。
您在issue 523 docker/distribution
(新注册服务器)中报告了类似的错误消息
当您绑定到容器内的localhost时,即使您指定了端口映射,该服务也不会在容器外部可用。 当docker守护进程连接时,它无法连接到端口,因为该服务未绑定到" external"容器的界面。
这意味着您需要设置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在创建注册表时不起作用。
VM可能已设置为端口转发端口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
^^^^