web-dev-qa-db-ja.com

Dockerのプライベート1.0レジストリから画像を検索する方法は?

私はプライベートレジストリを作成しました。カール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から情報を見つけることができません。いずれかが役立ちますか? :)

72
edwardsbean

プライベート レジストリ の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
70
faide

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

例えばセントス画像の検索:

docker search localhost:5000/centos

84
iTech

だから私はこれが急速に変化する分野であることを知っていますが、(2015-09-08現在) Docker Registry HTTP API V2 で次を見つけました:

リポジトリのリスト( link

GET /v2/_catalog

画像タグのリスト( link

GET /v2/<name>/tags/list

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

$ curl -X GET http://localhost:5000/v2/_catalog
{"repositories":["ubuntu"]}
$ curl -X GET http://localhost:5000/v2/ubuntu/tags/list
{"name":"ubuntu","tags":["latest"]}
66
snth

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

トピックの長時間実行スレッド がありました。現在の計画では、最後に extension を使用した検索をサポートすることです。これは ready by v2.1 である必要があります。

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

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

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

16
mre

「ライブラリ」だけを検索して、プライベートレジストリのすべてを取得できました。

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

戻り値(例):

NAME                    DESCRIPTION   STARS     OFFICIAL   AUTOMATED
library/custom-image                  0                    
library/another-image                 0                    
library/hello-world                   0
12

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

これはドッキングされており、次の方法で実行できます。

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

registry_ui_Host.name:8080を参照して内容を確認します

6
Larisa Sabban

すべての画像を一覧表示

docker search <registry_Host>:<registry_port>/

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

docker search <registry_Host>:<registry_port>/vcs
5
smishra

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

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

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

3
odk

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

例:一般的なレジストリを想定: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

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

0
Phil Pinkerton

@mreからの回答を変更して、1つのコマンドだけでリストを取得します(少なくともDocker Registry v2で有効)。

docker exec -it <your_registry_container_id> ls -a /var/lib/registry/docker/registry/v2/repositories/
0
user9269906