2016-02-10 79 views
1

我有一個Docker鏡像我想推送到我的註冊表(託管在localhost)。我這樣做:Docker:請參考註冊表的IP地址

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 
+0

對我來說,這表明服務綁定到本地IP(127.0.0.1),因此不會對另一方做出響應。你如何指定註冊表監聽的IP? –

+0

我編輯了這個問題。基本上,我使用'-p'選項作爲端口,但我對IP沒有任何作用。 –

回答

1

正如在 「IPs for all the Things」 提到(由Jess Frazelle),你應該能夠與搬運工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 

您可以將此示例應用於註冊表碼頭運行參數。

0

首先請檢查您是否能夠連接端口5000上的註冊表。在Linux/Windows中,您可以使用telnet執行此操作。下面是命令。

$的telnet 172.20.20.20 5000

如果連接檢查失敗,則請檢查您的防火牆設置。

我不確定您是否正在使用登錄功能運行您的運行註冊表。但從這個問題我可以假設你沒有使用它。在這種情況下,請將您的註冊表添加爲您嘗試訪問註冊表的docker守護進程中不安全的註冊表。這裏描述的過程 - https://docs.docker.com/registry/insecure/

請讓我知道如果成功。