私は群れを稼働させようとかなりの時間を費やしました。実際には、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を通過するまで、私がそこにいる問題について質問することには意味がないと思います。
誤って何が設定されているかを把握するために、ここで実行できる診断プログラムはありますか(まだはありません)。これを診断する上での助けになると大変感謝しています。ありがとう。