Docker:通过ip地址引用注册表

时间:2016-02-10 11:35:13

标签: docker docker-registry

我有一个想要推送到我的注册表的Docker镜像(托管在localhost上)。我这样做:

docker push localhost:5000/my_image

并且工作正常。但是,如果我标记图像并按下它:

docker push 172.20.20.20:5000/my_image

我收到错误。

  

The push refers to a repository [172.20.20.20:5000/my_tomcat] (len: 1)
  unable to ping registry endpoint https://172.20.20.20:5000/v0/ v2
  ping attempt failed with error:
Get https://172.20.20.20:5000/v2/: Gateway Time-out

我不能通过IP引用注册表吗?如果是这样,我怎么能从其他主机推送不是localhost的图像?

修改

我正在以这种方式运行注册表:

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

2 个答案:

答案 0 :(得分:2)

正如“IPs for all the Things”(Jess Frazelle)中所述,您应该能够使用docker 1.10运行具有固定IP地址的注册表。

它使用--net= --ip= options of docker run

# create a new bridge network with your subnet and gateway for your ip block
$ docker network create --subnet 203.0.113.0/24 --gateway 203.0.113.254 iptastic

# run a nginx container with a specific ip in that block
$ docker run --rm -it --net iptastic --ip 203.0.113.2 nginx

# curl the ip from any other place (assuming this is a public ip block duh)
$ curl 203.0.113.2

您可以将此示例调整为注册表泊坞窗运行参数。

答案 1 :(得分:0)

首先请检查您是否能够在端口5000上连接注册表。在Linux / Windows中,您可以使用telnet执行此操作。下面是命令。

$ telnet 172.20.20.20 5000

如果连接检查失败,请检查防火墙设置。

我不确定您是否正在使用登录功能运行正在运行的注册表。但是从这个问题我可以假设你没有使用它。在这种情况下,请将您的注册表添加为您尝试访问注册表的docker守护程序中的不安全注册表。此处描述了该过程 - https://docs.docker.com/registry/insecure/

如果成功,请告诉我。