1

Ubuntu 14.04.1 で (コンテナーとしてではなく) ソースから docker-registry サーバーを構築しようとしています。digitalocean にある指示を使用して、ほとんどの方法でそこにたどり着くことができました。

http://localhost:5000https://user:password@localhost:8000を問題なくカールできます

うまくいけばそれ以上のものを表示するために Web ブラウザーを開こうとすると、問題が発生するように見えます。

/etc/nginx/sites-available/ にある私の docker-registry ファイルは次のとおりです。

# For versions of Nginx > 1.3.9 that include chunked transfer encoding support
# Replace with appropriate values where necessary
upstream docker-registry {
server 192.168.x.x:5000;
}
server {
listen 8000;
server_name docker-registry;
ssl on;
ssl_certificate /etc/nginx/ssl/docker-registry.crt;
ssl_certificate_key /etc/nginx/ssl/docker-registry.key;
proxy_set_header Host       $http_host;   # required for Docker client sake
X-Real-IP  $remote_addr; # pass on real client IP
client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads
# required to avoid HTTP 411: see Issue #1486 (https://github.com/dotcloud/docker/issues/1486)
chunked_transfer_encoding on;
location / {
 # let Nginx know about our auth file
 auth_basic              "Restricted";
 auth_basic_user_file    docker-registry.htpasswd;
proxy_pass http://docker-registry;
 }
location /_ping {
 auth_basic off;
 proxy_pass http://docker-registry;
}
location /v1/_ping {
 auth_basic off;
 proxy_pass http://docker-registry;
 }
}

Docker レジストリを /var/docker-registry にローカルに保存し、www-data ユーザーが読み取りできるようにしました。Web ブラウザで画像が表示されないのはなぜですか?

画像にタグを付けてリポジトリにプッシュすると、機能し、Web ブラウザーで表示できます。

https://192.168.x.x:8000/v1/repositories/ubuntu-test/tags/latest

次のように表示されます。

 "5ba9dab47459d81c0037ca3836a368a4f8ce5050505ce89720e1fb8839ea048a"

私が到達しようとすると:

https://192.168.x.x:8000/v1

または:

 https://192.168.x.x:8000/v1/repositories

または:

 https://192.168.x.x:8000/v1/images

「見つかりません」というエラーが表示される

/var/docker-registry フォルダー (これらが保存されている場所です....そして、はい、それらは www-data ユーザーによって所有されています) 内のすべてを Web インターフェースを介して表示するにはどうすればよいでしょうか?

4

1 に答える 1

0

これは仕様によるものです。URL パス全体を実装する理由がないだけでなく、実装には重大なセキュリティ上の影響があります。

Web プログラミングの経験があまりないと思います。ディレクトリ「/v1/repositories」などはありません。代わりに、URLパスをリッスンし、何をすべきかを決定するロジックが組み込まれたプログラム(この場合はPythonまたはRuby)があります。

つまり、url = /v1/_ping の場合: 「ok」を返す

于 2015-11-24T17:42:23.303 に答える