如何pipe理Docker私有registry

我已经设置了Docker并在example.com:5000上运行一个私有存储库。 我按照这里列出的说明: https : //docs.docker.com/registry/deploying/

并使用docker-compose.yml:

 registry: restart: always image: registry:2 ports: - 5000:5000 environment: REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm volumes: - /path/data:/var/lib/registry - /path/certs:/certs - /path/auth:/auth 

我可以推送图像到存储库,但我不能得到docker search example.com:5000/library运行。 我得到一个: Error response from daemon: Unexpected status code 404

当我将curl指向端点时,我得到以下结果:

 $ curl -v -X GET http://example.com:5000/v2/images Note: Unnecessary use of -X or --request, GET is already inferred. * Trying 37.139.20.160... * Connected to example.com (192.167.201.2) port 5000 (#0) > GET /v2/images HTTP/1.1 > Host: domain.com:5000 > User-Agent: curl/7.47.0 > Accept: */* > * Connection #0 to host example.com left intact 

如何使search命令工作,以便我可以pipe理存储库? 我在哪里可以find端点的API文档? 还是有更好的方法来pipe理Docker私人回购?

看起来您必须根据search引擎选项激活search选项

Docker Registry可以select为GET /v1/search端点在数据库中索引仓库信息。

(我没有看到V2 API中的search,你可以列出标签 )

search_backend设置select要使用的search后端。
如果search_backend为空,则不会构build索引,并且search端点始终返回空结果。

例如,使用SQLAlchemy数据库

 common: search_backend: sqlalchemy sqlalchemy_index_database: sqlite:////tmp/docker-registry.db 

初始化时,SQLAlchemyIndex类检查数据库版本。 如果数据库尚不存在(或者确实存在,但缺less版本表),则SQLAlchemyIndex将创build数据库和所需的表。