web-dev-qa-db-ja.com

Docker Registry 2.0 API v2

ローカルのdocker registry:2.0を取得してセットアップしました

画像を正常にプッシュしようとしましたが、画像を検索しようとすると404が表示されます。

root@ip-10-232-0-153:~# curl -v -X GET http://localhost:5000/v2/search
* Hostname was NOT found in DNS cache
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 5000 (#0)
> GET /v2/search HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:5000
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Content-Type: text/plain; charset=utf-8
< Docker-Distribution-Api-Version: registry/2.0
< Date: Fri, 08 May 2015 00:00:45 GMT
< Content-Length: 19
<
404 page not found
* Connection #0 to Host localhost left intact

また、localhost:5000をカールしようとすると、404が表示されます:

404 page not found
21
alexfvolk

[〜#〜] update [〜#〜](2016年4月14日): 配布ロードマップ にはまだありませんしかし、これは 検索に関する特定の問題 です。

[〜#〜] update [〜#〜](2015年11月12日):APIエンドポイントはまだ存在せず、Dockerにはまだありませんレジストリロードマップ。

ここでの問題は、この質問と回答の時点で、 新しいv2 Dockerレジストリ が特定のエンドポイントyetをサポートしていないことです。ルートエンドポイントの ソース自体 を確認できます。ほとんどのAPIエンドポイントには、アップロードやタグ付けなどの単純な操作が含まれますが、検索エンドポイントの実装はまだありません。ここで重要なのは、v2レジストリは完全にv1レジストリとは異なるプロジェクトです。完全に異なる言語で記述されていることもあります(v1はPythonプロジェクトでしたが、v2はGoを使用しますが、これは他のDockerプロジェクトとより一致しています)。ここでレジストリ間の二分法を理解するために読んでください。 v2レジストリに関するこの特定のGithub問題で v2レジストリの状態に関する最近の議論と、彼らがどこでそれを取っているかについての議論。

そのため、v2レジストリにはまだ検索エンドポイントがありません。タスク番号8 このドキュメント で説明されているように、タグまたはイメージ名自体でイメージをリストできます。

32
L0j1k

windowsを使用している場合、基本的なhttp認証を使用してWindowsからv2/_catalogを照会するPowershellスクリプトを次に示します。

https://Gist.github.com/so0k/b59382ea7fd959cf704

参考までに、これを使用するには、docker pull distribution/registry:masterの代わりにdocker pull registry:2を使用する必要があります。 registry:2イメージバージョンは現在2.0.1であり、カタログエンドポイントには付属していません。

3
Vincent De Smet

Dockerイメージが存在するかどうかを確認する最も簡単な方法は、 Docker V2 REST APITagsリストサービス

例:-

curl $CURLOPTS -H "Authorization: Bearer $token" "https://hub.docker.com:4443/v2/your-repo-name/tags/list"

上記の結果が画像タグのリストとともに2000kを返す場合、画像が存在することがわかります

{"name":"your-repo-name","tags":["1.0.0.1533677221","1.0.0.1533740305","1.0.0.1535659921","1.0.0.1535665433","latest"]}

他のようなものを見たら

{"errors":[{"code":"NAME_UNKNOWN","message":"repository name not known to registry","detail":{"name":"your-repo-name"}}]} 

その画像が存在しないことが確実にわかります。

1
Abhishek J

今日、私はregistry:master画像ですが、存在しません。

xotl@xotl-VM:~$ docker run registry:master
Unable to find image 'registry:master' locally
Pulling repository docker.io/library/registry
Tag master not found in repository docker.io/library/registry
xotl@xotl-VM:~$ 

これで、registry:2そしてエンドポイントを持ちます。

http://localhost:5000/v2/_catalog私のマシンでは、この出力を見ることができます{"repositories":["ubuntu"]}、正しい。試してみましたhttp://localhost:5000/v2/ubuntu/tags/listそして、この応答を受け取りました{"name":"ubuntu","tags":["latest"]}、それで動作します。

ドキュメントを見る を使用できます。

0
Xotl

この記事の執筆時点では、Dockerレジストリ検索機能v2はサポートされていません。 2015年2月以降の議論を参照してください: https://github.com/docker/distribution/issues/206

Registry V2は、画像を黒いバッグにドロップするようなものです。ドロップインしたものと画像に名前を付けたものを覚えておいてください。画像を削除することさえ考えないでください。 V2をリッピングしてV1に置き換えたくありません。 V1は機能し、検索や削除など、V1で機能するいくつかのツールがあります。私はマーケティングのレジストリV2から始めました。セキュリティとパフォーマンスの向上。

Ubuntu 14.04.3 LTS、CoreOS 723.3.0レジストリgithub.com/docker/distribution v2.1.1

レジストリV2 REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORYを検索するために、view-private-registryという名前のスクリプトを作成しました。 REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORYがマウントされている私のシステムで動作します。あなたが行う変更をお知らせください、ありがとう。

スクリプト: https://github.com/BradleyA/Search-docker-registry-v2-script.1.

#!/bin/bash
# %W% %G% %U%
#
#       View private registry,
#               if REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY is mounted on your system
#
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY="/mnt/three/docker-registry/registry-data"
#
find $REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY -print | \
    grep 'v2/repositories' | \
    grep 'current' | \
    grep -v 'link' | \
    sed -e 's/\/_manifests\/tags\//:/' | \
    sed -e 's/\/current//' | \
    sed -e 's/^.*repositories\//    /' | \
    sort > /tmp/a1
cat /tmp/a1
wc -l /tmp/a1 > /tmp/a2
echo "Number of images: `cat /tmp/a2 | awk {'print $1'}`"
echo "Disk space used:  `du -hs $REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY`"
rm /tmp/a1 /tmp/a2`

出力:

`$ ./view-private-registry`
busybox:latest
gcr.io/google_containers/etcd:2.0.9
gcr.io/google_containers/hyperkube:v0.21.2
gcr.io/google_containers/pause:0.8.0
google/cadvisor:latest
jenkins:latest
logstash:latest
mongo:latest
nginx:latest
python:2.7
redis:latest
registry:2.1.1
stackengine/controller:latest
Tomcat:7
Tomcat:latest
ubuntu:14.04.2
Number of images:   16
Disk space used:    1.7G    /mnt/three/docker-registry/registry-data
0
Bradley Allen

Linux(Centos 7)では、レジストリイメージが実行中の唯一のコンテナーである限り、これを使用します。これにより、レジストリー/コンテナーにプッシュされたすべてのイメージがリストされます。それをスクリプトに入れ、カットパラメーターを調整して、イメージ名の長さが少し異なるため、必要なものを取得しました。 Sudo "script-name.sh"として実行

grep -r -o "vars\.name=.* vars.reference=.*" /var/lib/docker/containers/* | cut -c 167-220 | sed 's/ver.*$//' | sed 's/vars\.name=//' | sed 's/ vars\.reference=/:/' | sort -u
0
Phil Pinkerton
@Xotl
curl -X GET registry.com:5000/v2/lashou/centos/tags/list
{"errors":[{"code":"NAME_UNKNOWN","message":"repository name not known to registry","detail":{"name":"lashou/centos"}}]}
0
user5443485