Korzystam z rejestru dokera v1 i jestem zainteresowany migracją do nowszej wersji v2. Potrzebuję jednak sposobu, aby uzyskać listę obrazów obecnych w rejestrze; na przykład z rejestrem v1 mogę wykonać żądanie GET http://myregistry:5000/v1/search?
i wynik jest następujący:
{
"num_results": 2,
"query": "",
"results": [
{
"description": "",
"name": "deis/router"
},
{
"description": "",
"name": "deis/database"
}
]
}
Ale nie mogę znaleźć w oficjalnej dokumentacji czegoś podobnego, aby uzyskać listę obrazów w rejestrze. Czy ktoś wie, jak to zrobić w nowej wersji v2?
docker
docker-registry
kikicarbonell
źródło
źródło
Odpowiedzi:
W najnowszej (na dzień 31.07.2015) wersji rejestru V2 można uzyskać ten obraz z DockerHub:
Wyświetl wszystkie repozytoria (efektywnie obrazy):
Wyświetl wszystkie tagi dla repozytorium:
źródło
http://<registry-url>/v2/_catalog?n=<count>
z liczbą na przykład 2000.curl -u <user>:<pass> -X GET ...
możesz szukać dalej
źródło
Uzyskaj katalogi
Domyślnie interfejs API rejestru zwraca 100 pozycji katalogu, jest kod :
Po zwinięciu interfejsu API rejestru:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
odpowiada to :
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=100
To jest metoda paginacji.
Gdy suma wpisów powyżej 100, możesz to zrobić na dwa sposoby:
Po pierwsze : podaj większą liczbę
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=2000
Sencond : parsuj następny adres linku
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
Element odsyłacza zawarty w nagłówku odpowiedzi:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
nagłówek odpowiedzi:
Link: </v2/_catalog?last=pro-octopus-ws&n=100>; rel="next"
Element linku ma ostatni wpis tego żądania, a następnie możesz poprosić o następną „stronę”:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?last=pro-octopus-ws
Jeśli nagłówek odpowiedzi zawiera element łącza , możesz to zrobić w pętli .
Uzyskaj obrazy
Gdy otrzymasz wynik z katalogu, wygląda to następująco:
{ "repositories": [ "busybox", "ceph/mds" ] }
obrazy można uzyskać w każdym katalogu:
curl --cacert domain.crt https://your.registry:5000/v2/busybox/tags/list
zwroty:
{"name":"busybox","tags":["latest"]}
źródło
ceph/mds
? ogólnie dla każdego repozytorium zdefiniowanego za pomocą/
-/v2/_catalog/ceph/mdt/tags/list
nie działaNajnowsza wersja rejestru Docker dostępna na stronie https://github.com/docker/distribution obsługuje API katalogu. (v2 / _catalog). Pozwala to na przeszukiwanie repozytoriów
W razie zainteresowania możesz wypróbować interfejs wiersza polecenia obrazu dokera, który zbudowałem, aby ułatwić korzystanie z funkcji wyszukiwania w nowej dystrybucji rejestru Docker ( https://github.com/vivekjuneja/docker_registry_cli )
źródło
W tym celu napisaliśmy narzędzie CLI: docker-ls. Umożliwia przeglądanie rejestru dokera i obsługuje uwierzytelnianie za pomocą tokena lub podstawowego uwierzytelniania.
źródło
Doprowadziło mnie to do szaleństwa, ale w końcu zebrałem wszystkie elementy. Na dzień 25.01.2015 potwierdziłem, że można wyświetlać obrazy w rejestrze dokera V2 (dokładnie tak, jak wspomniano powyżej w @jonatan).
Poparłbym tę odpowiedź, gdybym miał za to przedstawiciela.
Zamiast tego rozwinę odpowiedź. Ponieważ rejestr V2 jest tworzony z myślą o bezpieczeństwie, uważam, że należy uwzględnić sposób jego konfiguracji z certyfikatem z podpisem własnym i uruchomić kontener z tym certyfikatem , aby można było do niego wywołać https z tym certyfikatem:
Oto skrypt, którego faktycznie używam do uruchomienia rejestru:
Dla niektórych może to być oczywiste, ale zawsze mylę się z kluczami i certyfikatami. Plik, do którego należy odwołać się, aby wywołanie wspomniane powyżej @jonaton **, to domena.crt wymieniona powyżej. (Od kiedy wstawiłem domain.crt
/root
, zrobiłem kopię do katalogu użytkownika, gdzie można było uzyskać do niej dostęp).** Powyższe polecenie zostało zmienione: -X GET faktycznie nie działało, kiedy go wypróbowałem.
Uwaga:
https://myregistry:5000
(jak wyżej) musi pasować do domeny podanej do wygenerowanego certyfikatu.źródło
Zainstalować rejestru: 2.1.1 lub nowszy (można sprawdzić ostatni, tutaj ) i wykorzystanie GET / v2 / _catalog aby uzyskać listę.
https://github.com/docker/distribution/blob/master/docs/spec/api.md#listing-repositories
Lista wszystkich zdjęć według przykładu skryptu Shell: https://gist.github.com/OndrejP/a2386d08e5308b0776c0
źródło
Oto fajny mały linijka (używa JQ) do wydrukowania listy repozytoriów i powiązanych tagów.
Jeśli nie masz
jq
zainstalowanego, możesz użyć:brew install jq
źródło
Musiałem zrobić to samo tutaj i powyższe prace, z wyjątkiem tego, że musiałem podać dane logowania, ponieważ było to lokalne repozytorium dokerów.
Jest tak jak powyżej, ale z podaniem nazwy użytkownika / hasła w adresie URL.
Wraca jako niesformatowany JSON.
Przepuściłem go przez formater Pythona, aby ułatwić czytanie, na wypadek, gdybyś chciał go mieć w tym formacie.
źródło
Używając punktów końcowych „/ v2 / _catalog” i „/ tags / list”, nie można tak naprawdę wyświetlić wszystkich obrazów. Jeśli wybrałeś kilka różnych zdjęć i oznaczyłeś je jako „najnowsze”, tak naprawdę nie możesz wymienić starych zdjęć! Nadal możesz je wyciągnąć, jeśli odniesiesz się do nich, używając skrótu „docker pull ubuntu @ sha256: ac13c5d2 ...”. Tak więc odpowiedź brzmi - nie ma sposobu, aby wyświetlić listę obrazów, można jedynie wymienić tagi, które nie są takie same
źródło
Jeśli niektórzy dotrą tak daleko.
Biorąc to, co inni już powiedzieli powyżej. Oto jedno-linijka, która umieszcza odpowiedź w formacie tekstowym, json.
To wygląda jak
Być może trzeba zmienić `? N = xxxx ', aby dopasować liczbę posiadanych pojemników.
Dalej to sposób automatycznego usuwania starych i nieużywanych pojemników.
źródło
W chwili pisania tego tekstu funkcja Docker Search Registry v2 nie jest obecnie obsługiwana. Zobacz dyskusję od lutego 2015 r .: „zaproponuj funkcję wyszukiwania rejestru # 206” https://github.com/docker/distribution/issues/206
Napisałem skrypt, który można znaleźć: https://github.com/BradleyA/Search-docker-registry-v2-script.1.0 Nie jest ładny, ale otrzymuje potrzebne informacje z prywatnego rejestru.
źródło
Napisałem łatwe w użyciu narzędzie wiersza poleceń do wyświetlania zdjęć na różne sposoby (np. Wyświetl listę wszystkich zdjęć, listę wszystkich tagów tych obrazów, listę wszystkich warstw tych tagów).
Umożliwia także usuwanie nieużywanych obrazów na różne sposoby, takie jak usuwanie tylko starszych znaczników jednego obrazu lub wszystkich obrazów itp. Jest to wygodne, gdy wypełniasz rejestr z serwera CI i chcesz zachować tylko najnowsze / stabilne wersje.
Jest napisany w pythonie i nie wymaga pobierania dużych, niestandardowych obrazów rejestru.
źródło
Oto przykład z listą wszystkich tagów wszystkich obrazów w rejestrze. Obsługuje również rejestr skonfigurowany dla uwierzytelniania HTTP Basic.
Wyjaśnienie:
źródło
Wątki te pochodzą z dawnych czasów, a najczęściej wymienianymi narzędziami, które należy wziąć pod uwagę, są
skopeo
icrane
.skopeo
obsługuje podpisywanie i ma wiele innych funkcji, a jednocześniecrane
jest nieco bardziej minimalistyczny i łatwiej mi było go zintegrować z prostym skryptem powłoki.źródło
Ponieważ każdy rejestr działa jako kontener, identyfikator kontenera ma powiązany plik dziennika ID-json.log, ten plik dziennika zawiera vars.name = [image] i vars.reference = [tag]. Do ekstrapolacji i wydrukowania można użyć skryptu. Jest to być może jedna z metod wyświetlania obrazów przesłanych do rejestru V2-2.0.1.
źródło