82

プライベート レジストリを作成しました。curl xx.xx.xx.xx:5000 は問題ありません。次のようにして、イメージを docker private registry にプッシュします docker push xx.xx.xx.xx:5000/centos

http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latest

問題は、レジストリ Web またはコマンドからすべてのイメージを取得する方法です。docker registry api からの情報が見つかりません。誰でも助けますか?:)

4

10 に答える 10

91

Docker クライアントから、HTTP API やその他のツールを使用せずに、プライベート レジストリを直接検索できます。

たとえば、centos イメージの検索:

docker search localhost:5000/centos

于 2014-11-04T12:40:32.373 に答える
79

したがって、これが急速に変化する分野であることはわかっていますが、(2015 年 9 月 8 日現在) Docker Registry HTTP API V2で次のことがわかりました。

リポジトリの一覧表示 (リンク)

GET /v2/_catalog

イメージタグのリスト (リンク)

GET /v2/<name>/tags/list

それに基づいて、ローカルレジストリで次のことが機能しました(レジストリ:2015-08-25T07:55:17.072に作成された2 IMAGE ID 1e847b14150e365a95d76a9cc6b71cd67ca89905e3a0400fa44381ecf00890e1):

$ curl -X GET http://localhost:5000/v2/_catalog
{"repositories":["ubuntu"]}
$ curl -X GET http://localhost:5000/v2/ubuntu/tags/list
{"name":"ubuntu","tags":["latest"]}
于 2015-09-08T13:39:28.073 に答える
72

プライベートレジストリの v 0.7.0 以降では、次のことができます。

$ curl -X GET http://localhost:5000/v1/search?q=postgresql

json ペイロードを取得します。

{"num_results": 1, "query": "postgresql", "results": [{"description": "", "name": "library/postgresql"}]}

ここでさらに背景を説明するために、レジストリを開始した方法を次に示します。

docker run \
        -e SETTINGS_FLAVOR=local \
        -e STORAGE_PATH=/registry \
        -e SEARCH_BACKEND=sqlalchemy \
        -e LOGLEVEL=DEBUG \
        -p 5000:5000 \
        registry
于 2014-06-17T19:51:28.517 に答える
18

現在、Docker Registry v2 の検索サポートはありません

このトピックには長期にわたるスレッドがありました。現在の計画では、最後に拡張機能を使用して検索をサポートする予定で、v2.1 までに準備が整うはずです。

回避策として、レジストリ v2 が実行されているマシンで次のコマンドを実行します。

> docker exec -it <your_registry_container_id> bash
> ls /var/lib/registry/docker/registry/v2/repositories/

画像は、名前空間に対応するサブディレクトリにあります。jwilder/nginx-proxy

于 2015-06-30T12:15:54.783 に答える
13

「ライブラリ」を検索するだけで、プライベートレジストリのすべてを取り戻すことができました:

docker search [my.registry.host]:[port]/library

返品 (例):

NAME                    DESCRIPTION   STARS     OFFICIAL   AUTOMATED
library/custom-image                  0                    
library/another-image                 0                    
library/hello-world                   0
于 2015-03-03T21:40:14.343 に答える
11

すべての画像を一覧表示する

docker search <registry_host>:<registry_port>/

「vcs」などの画像を一覧表示する

docker search <registry_host>:<registry_port>/vcs
于 2016-03-22T20:15:43.720 に答える
5

UI を提供し、プライベート レジストリを検索する atc-/docker-registry-web プロジェクトをインストールしました。 https://github.com/atc-/docker-registry-web

Docker化されており、実行するだけです

docker run -p 8080:8080 -e REG1=http://registry_host.name:5000/v1/atcol/docker-registry-ui

を参照して内容を確認するregistry_ui_host.name:8080

于 2014-09-17T12:45:28.717 に答える
2

現在、これを行う簡単な方法はありません。この情報は、プライベートレジストリにはないインデックスによって保存される必要があるためです。ただし、レジストリの開始方法に応じて、次の 2 つのオプションがあります。

  1. 別のホスト フォルダーにデータを保存するために -v なしでレジストリを開始した場合はdocker diff <id_of_registry_container>、これを試すことができます。コンテナー fs の変更に関する情報を取得する必要があります。プッシュされたすべてのイメージは /tmp/registry/repositories/ のどこかにあるはずです
  2. -v でレジストリを開始した場合は、ホストにマウントされたディレクトリの内容を確認するだけです

名前として「centos」を使用した場合、/tmp/registry/repositories/library/centos にある必要があります。このフォルダには、画像構造を説明するテキスト ファイルが含まれます。実際のデータは /tmp/registry/images/ にあります。

于 2014-05-19T13:40:28.097 に答える
0

別の方法を 1 行で示します (必要に応じて、実際のパス/ポートを置き換えてください)。

例: Generic registry:2.0 の起動を想定すると、実行中のレジストリ コンテナーには、イメージとタグ名を保持するログ ファイルがあります。次のようにデータを推定します。

grep -r -o "vars\.name=.* vars.reference=.*" /var/lib/docker/containers/* | cut -c 167-225 | sed 's/ver.*$//' | sed 's/vars\.name=//' | sed 's/ vars\.reference=/:/' | sort -u

必要な出力を得るには、カット値を微調整する必要がある場合があります。

于 2015-08-05T15:30:07.253 に答える