Làm thế nào để tìm kiếm hình ảnh từ sổ đăng ký riêng tư 1.0 trong docker? [đóng cửa]


76

Tôi đã tạo một sổ đăng ký riêng, curl xx.xx.xx.xx: 5000 là được. Tôi đẩy một hình ảnh vào sổ đăng ký riêng tư của docker bằng cách thực hiện: docker push xx.xx.xx.xx:5000/centos
nó trả về:
http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latest

câu hỏi là làm thế nào để lấy tất cả hình ảnh từ web đăng ký hoặc lệnh bất cứ điều gì. Tôi không thể tìm thấy bất kỳ thông tin nào từ api đăng ký docker. bất kỳ ai giúp đỡ? :)


tôi có nghĩa là làm thế nào để tìm kiếm hình ảnh từ registry tin bằng dòng lệnh hoặc http
edwardsbean

Câu trả lời:


71

Kể từ phiên bản 0.7.0 của sổ đăng ký cá nhân, bạn có thể làm:

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

và bạn sẽ nhận được một tải trọng json:

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

để cung cấp thêm thông tin cơ bản, đây là cách tôi bắt đầu sổ đăng ký của mình:

docker run \
        -e SETTINGS_FLAVOR=local \
        -e STORAGE_PATH=/registry \
        -e SEARCH_BACKEND=sqlalchemy \
        -e LOGLEVEL=DEBUG \
        -p 5000:5000 \
        registry

vì vậy đây là tính năng không có giấy tờ chosearch
Larry Cai

5
xem tài liệu tham khảo cho vấn đề này github.com/docker/docker-registry/issues/63 curl -X GET http://localhost:5000/v1/search có thể liệt kê tất cả các hình ảnh
Larry Cai

12
Kể từ api v2, nó được thực hiện với http://localhost:5000/v2/_catalog docs.docker.com/registry/spec/api
mimo

89

Giờ đây, từ ứng dụng khách docker, bạn có thể chỉ cần trực tiếp tìm kiếm sổ đăng ký riêng tư của mình mà không cần sử dụng API HTTP hoặc bất kỳ công cụ bổ sung nào:

ví dụ: tìm kiếm hình ảnh centos:

docker search localhost:5000/centos


Đối với hồ sơ, điều này đã hoạt động với tôi bằng cách sử dụng Docker phiên bản 1.3.1, bản dựng 4e9bbfa
Marcello Romani

4
Điều này chắc chắn nên được đề cập trên trang trợ giúp của cli! docs.docker.com/reference/commandline/cli/#search
Marcello Romani

1
@MarcelloRomani Tôi nghĩ đây là liên kết chính xác: docs.docker.com/engine/reference/commandline/search
Hexaholic,

73

Vì vậy, tôi biết đây là một lĩnh vực thay đổi nhanh chóng nhưng (kể từ 2015-09-08) tôi đã tìm thấy thông tin sau trong API Docker Registry HTTP V2 :

Kho lưu trữ danh sách ( liên kết )

GET /v2/_catalog

Thẻ hình ảnh danh sách ( liên kết )

GET /v2/<name>/tags/list

Dựa trên cơ sở đó, điều sau làm việc cho tôi trên sổ đăng ký cục bộ (đăng ký: 2 ID ẢNH 1e847b14150e365a95d76a9cc6b71cd67ca89905e3a0400fa44381ecf00890e1 được tạo vào 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"]}

17

Hiện tại không có hỗ trợ tìm kiếm nào cho Docker Registry v2 .

Có một chủ đề dài về chủ đề này . Cuối cùng, kế hoạch hiện tại là hỗ trợ tìm kiếm với một tiện ích mở rộng , sẽ sẵn sàng cho v2.1 .

Như một giải pháp thay thế , hãy thực thi những điều sau trên máy mà sổ đăng ký v2 của bạn đang chạy:

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

Các hình ảnh nằm trong các thư mục con tương ứng với không gian tên của chúng, ví dụ: jwilder/nginx-proxy


nếu Docker exec -nó <your_registry_container_id> bash lệnh không làm việc sau đó thử Docker exec -nó <your_registry_container_id> / bin / sh
KurioZ7

13

Có thể lấy lại mọi thứ trong sổ đăng ký riêng tư của tôi bằng cách chỉ tìm kiếm 'thư viện':

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

Trả về (ví dụ):

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

33
Với docker 1.8.1 trên Ubuntu 14.04 tôi đang nhận được Error response from daemon: Unexpected status code 404, có chuyện gì vậy?
carloreggiani

4
Tôi có cùng một vấn đề lệnh 'tìm kiếm Docker repositroy_ip: 5000 / busybox' trả về 404, nhưng trước lệnh 'Docker đẩy repository_ip: 5000 / busybox' đã thành công
ksopyla

bạn có thể cần phải sử dụng curl cho cơ quan đăng ký không an toàn, ví dụcurl --insecure -u "test:password" https://myregistrydomain.com:5000/v2/_catalog
Leon Mak

"Nếu bạn khởi động docker-registry của mình mà không bật tìm kiếm, thì giao diện người dùng này sẽ không hoạt động và không rõ lý do tại sao. Tôi có thể thêm sổ đăng ký tốt vì docker-registry-host: 5000 / v1 / ping trả về HTTP 200, nhưng khi điều hướng đến Hình ảnh, giao diện người dùng sẽ báo cáo "Registry is Unreachable" b / c docker-registry-host: 5000 / v1 / search trả về HTTP 404. " github.com/atcol/docker-registry-ui/issues/…
sm4rk0

7

Liệt kê tất cả hình ảnh

docker search <registry_host>:<registry_port>/

Liệt kê các hình ảnh như 'vcs'

docker search <registry_host>:<registry_port>/vcs

5

Tôi đã cài đặt dự án web atc- / docker-registry-web cung cấp cho tôi giao diện người dùng và tìm kiếm sổ đăng ký riêng của tôi. https://github.com/atc-/docker-registry-web

Nó được làm dày và bạn có thể chạy nó bằng cách

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

và xem lại nội dung bằng cách duyệt đến registry_ui_host.name:8080


2

AFAIK hiện tại không có cách nào dễ dàng để thực hiện việc này vì thông tin này phải được lưu trữ theo chỉ mục mà sổ đăng ký riêng không có. Nhưng tùy thuộc vào cách bạn bắt đầu đăng ký, bạn có 2 tùy chọn:

  1. nếu bạn bắt đầu đăng ký mà không có -v để lưu trữ dữ liệu trong thư mục máy chủ lưu trữ riêng biệt, bạn có thể thử docker diff <id_of_registry_container>với điều này, bạn sẽ nhận được thông tin về những thay đổi trong vùng chứa fs. Tất cả các hình ảnh được đẩy phải ở đâu đó trong / tmp / registry / repositories /
  2. nếu bạn bắt đầu đăng ký với -v chỉ cần kiểm tra nội dung của thư mục được gắn kết trên máy chủ

Nếu bạn sử dụng "centos" làm tên, nó phải nằm trong / tmp / registry / repositories / library / centos. Thư mục này sẽ chứa các tệp văn bản mô tả cấu trúc hình ảnh. Dữ liệu thực tế có trong / tmp / registry / images /.


xin lỗi, tôi có nghĩa là làm thế nào để tìm kiếm hình ảnh từ registry tin bằng dòng lệnh hoặc http
edwardsbean

Có, tôi biết nhưng AFAIK không có chỉ mục, bạn không thể tìm kiếm hình ảnh trong sổ đăng ký riêng tư. Có /v1/searchphương thức api trong sổ đăng ký nhưng nó yêu cầu phần phụ trợ chỉ mục. Có triển khai chỉ mục cơ bản trong mã đăng ký riêng ( github.com/dotcloud/docker-registry/blob/master/docker_registry/… ) nhưng nó chỉ cung cấp các chức năng cơ bản ở chế độ độc lập. Vài ngày trước, tôi tìm thấy cái này: github.com/ekristen/docker-index nhưng không có thời gian để kiểm tra.
odk

1

Sửa đổi câu trả lời từ @mre để nhận danh sách chỉ từ một lệnh (ít nhất là hợp lệ đối với Docker Registry v2).

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

Cũng niêm yết thẻ của một kho lưu trữ: Docker exec -nó <your_registry_container_id> ls -a / var / lib / đăng ký / Docker / đăng ký / v2 / kho / postgresql / _manifests / thẻ
Mohsen Abasi

0

Một phương pháp khác trong một dòng (thay thế đường dẫn / cổng thực tế của bạn nếu cần).

Ví dụ: Giả sử một sổ đăng ký chung: khởi động 2.0, vùng chứa đăng ký đang chạy có tệp nhật ký chứa hình ảnh và tên thẻ. Tôi ngoại suy dữ liệu như thế này:

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

Bạn có thể cần phải tinh chỉnh các giá trị cắt để có được đầu ra mong muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.