2017-05-04 49 views
0

我花了相當多的時間試圖讓羣集運行起來。實際上,使用this article中提供的腳本可以輕鬆地運行它。本地私有Docker註冊表不會迴應

但是後來我遇到了一個問題,那就是工作人員沒有和主人一樣的圖像。看起來好像這不應該成爲問題,因爲每個工作者節點都是以--registry-mirror標誌啓動的。

但是,當我試圖調試這個,我發現我似乎有什麼根本錯誤的地方。因此,在處理羣註冊表中更復雜的內容之前,我需要能夠運行基本的本地註冊表,並且在那裏遇到問題。

Docker文檔討論running your own registry on localhost。因此,與絕對沒有我的碼頭工人主機上運行的其他並按照該指南,我所做的:

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

運行docker ps表明它推出了就好了。抓住最新ubuntu形象也工作沒有問題:

$ docker pull ubuntu && docker tag ubuntu localhost:5000/ubuntu 

但下一步就是問題的所在:

$ docker push localhost:5000/ubuntu 
The push refers to a repository [localhost:5000/ubuntu] 
Get https://localhost:5000/v1/_ping: dial tcp 192.168.21.146:5000: i/o timeout 

現在我使用的是碼頭工人的Mac(多克爾版本17.03.1策,編譯c6d412e),並且我已經將localhost:5000配置爲首選項中的不安全註冊表(並重新啓動)。所以我很困惑爲什麼a)它帶來了192.168.21.146? (這是我的子網,但不是我的主機地址)和b)它引用https

我想也許有些不對勁與DNS解析所以我檢查/etc/hosts,我甚至在node運行此腳本只是雙重檢查:

$ node 
> var x = require('dns').lookup("localhost", (err, ip) => console.log("IP = ", ip)) 
undefined 
> IP = 127.0.0.1 

所以它似乎並沒有被不正確的問題本地主機的解析。 事實證明,如果我運行curl http://localhost:5000/v2/_catalog,我得到一個空的註冊表,正如我所料。那麼爲什麼推送失敗?但是,如果我這樣做:

$ docker pull ubuntu && docker tag ubuntu 127.0.0.1:5000/ubuntu 
Using default tag: latest 
latest: Pulling from library/ubuntu 
Digest: sha256:f3a61450ae43896c4332bda5e78b453f4a93179045f20c8181043b26b5e79028 
Status: Image is up to date for ubuntu:latest 

$ docker push 127.0.0.1:5000/ubuntu 
The push refers to a repository [127.0.0.1:5000/ubuntu] 
73e5d2de6e3e: Pushed 
08f405d988e4: Pushed 
511ddc11cf68: Pushed 
a1a54d352248: Pushed 
9d3227c1793b: Pushed 
latest: digest: sha256:f3a61450ae43896c4332bda5e78b453f4a93179045f20c8181043b26b5e79028 size: 1357 

現在我完全困惑。爲什麼127.0.0.1localhost沒有?

我還有其他關於設置本地註冊表的問題,以及如何將羣集鏡像到工作節點。但我不認爲在問我在那裏的問題之前是否有任何意義,除非我至少能在Docker文檔中獲得the 4 basic steps

是否有一些我可以在這裏運行的診斷程序(我還沒有)找出錯誤配置的內容?任何幫助診斷這將不勝感激。謝謝。

回答

0

所以寫完所有這些後,我挖得更深。我看到不知何故IP地址192.168.21.146被彈出。考慮到Docker在網絡方面所做的所有事情,我無法確定它是否以某種方式從我的網絡中獲取IP。但事實證明,當我進入我的路由器找出哪臺機器是192.168.21.146時,我發現它不僅是電視機,而且電視機實際上是在DNS中註冊自己,主機名爲localhost

似乎Docker必須使用不同的解析方法,而不是我Mac上的其他任何程序,這就是爲什麼我拋棄了氣味。但是,我決定繼續這個職位,因爲可能有其他人(例如擁有三星智能電視的人)可能會遇到同樣的問題。

呃。