2017-05-04 21 views
0

私は群れを稼働させようとかなりの時間を費やしました。実際には、this articleで提供されているスクリプトを使用して実行していた。ローカルプライベートドッカーのレジストリは応答しません

しかし、私は、従業員がマスターと同じイメージを持っていない問題に遭遇しました。あたかも各ワーカーノードが--registry-mirrorフラグで起動されているので、これは問題ではないようです。

しかし、これをデバッグしようとしたとき、私はどこかに根本的に何かが間違っているように見えました。したがって、より複雑な機能を持つレジストリを扱う前に、基本的なローカルレジストリを実行できるだけでなく、問題が発生しています。

ドッカーのドキュメントは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 

しかし、問題がどこにある次のステップは次のとおりです。

今私は、Mac(ドッカー版17.03.1-CE用ドッカーを使用してい
$ 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 

、build c6d412e)、私はlocalhost:5000を環境設定の安全でないレジストリに設定しました(そして再起動しました)。だから私は絶対になぜそれが192.168.21.146をもたらすかわからない? (それは私のサブネットですが、ホストのアドレスではありません)、b)httpsを参照していますか?

私はので、私は/etc/hostsをチェックし、私もちょうどダブルチェックにnodeでこのスクリプトを実行した、おそらく何かがDNS解決と間違っていたと思った:

$ 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 

今私は完全に混乱しています。 localhostの場合、127.0.0.1はなぜ機能するのですか?

私はローカルレジストリを設定し、それをワーム内のワーカーノードにミラーリングすることに関して、他に質問があります。しかし、Dockerのドキュメントで少なくともthe 4 basic stepsを通過するまで、私がそこにいる問題について質問することには意味がないと思います。

誤って何が設定されているかを把握するために、ここで実行できる診断プログラムはありますか(まだはありません)。これを診断する上での助けになると大変感謝しています。ありがとう。

答えて

0

これをすべて書いた後、私はさらに深く掘りました。どういうわけかIPアドレス192.168.21.146がポップアップしていました。 Dockerがネットワーキングで行うすべてのことを考えると、ネットワークからIPを何とか取得していないかどうかはわかりませんでした。しかし、私がルーターに入って192.168.21.146のマシンを見つけたとき、テレビだっただけでなく、実際にテレビがホスト名のDNSに登録していたことがわかったlocalhost !!!

Dockerは私のMac上の他のすべてのプログラムとは異なる解決方法を使用しなければならないと思われるので、私は香りを捨てました。しかし、誰か(例えば、サムスンのスマートテレビを所有している)がこの同じ問題に遭遇する可能性があるので、私はここに投稿を残すことにした。

関連する問題