{ "info": { "author": "Docker Registry Contributors", "author_email": "docker-dev@googlegroups.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Utilities" ], "description": "> **Notice:** *This repository hosts the classic (stable) python docker-registry. If you are looking for the next-generation of docker distribution tools (including the new golang registry), please head over to [docker/distribution](https://github.com/docker/distribution) instead.*\n\nDocker-Registry\n===============\n\n[![Build Status](https://travis-ci.org/docker/docker-registry.png)](https://travis-ci.org/docker/docker-registry)\n\nAbout this document\n===================\n\nAs the documentation evolves with different registry versions, be sure that before reading any further you:\n\n * check which version of the registry you are running\n * switch to the corresponding tag to access the README that matches your product version\n\nThe stable, released version is the [0.9.1 tag](https://github.com/docker/docker-registry/tree/0.9.1).\n\nPlease also have a quick look at the [FAQ](FAQ.md) before reporting bugs.\n\n# Table of Contents\n- [Quick Start](#quick-start)\n- [Configuration mechanism overview](#configuration-mechanism-overview)\n- [Configuration flavors](#configuration-flavors)\n - [Example config](#example-config)\n- [Available configuration options](#available-configuration-options)\n - [General options](#general-options)\n - [Authentication options](#authentication-options)\n - [Search-engine options](#search-engine-options)\n - [sqlalchemy](#sqlalchemy)\n - [Mirroring Options](#mirroring-options)\n - [Cache options](#cache-options)\n - [Storage options](#storage-options)\n - [storage file](#storage-file)\n - [Persistent storage](#persistent-storage)\n - [storage s3](#storage-s3)\n- [Your own config](#your-own-config)\n- [Advanced use](#advanced-user)\n- [Drivers](#drivers)\n- [For developers](#for-developers)\n\n# Quick start\n\nThe fastest way to get running:\n\n * [install docker](https://docs.docker.com/installation/#installation)\n * run the registry: `docker run -p 5000:5000 registry`\n\nThat will use the [official image from the Docker hub](https://registry.hub.docker.com/_/registry/).\n\nHere is a slightly more complex example that launches a registry on port 5000, using an Amazon S3 bucket to store images with a custom path, and enables the search endpoint:\n\n```\ndocker run \\\n -e SETTINGS_FLAVOR=s3 \\\n -e AWS_BUCKET=mybucket \\\n -e STORAGE_PATH=/registry \\\n -e AWS_KEY=myawskey \\\n -e AWS_SECRET=myawssecret \\\n -e SEARCH_BACKEND=sqlalchemy \\\n -p 5000:5000 \\\n registry\n```\n\n\n# Configuration mechanism overview\n\nBy default, the registry will use the [config_sample.yml](config/config_sample.yml) configuration to start.\n\nIndividual configuration options from that file may be overridden using environment variables. Example: `docker run -e STORAGE_PATH=/registry`.\n\nYou may also use different \"flavors\" from that file (see below).\n\nFinally, you can use your own configuration file (see below).\n\n\n# Configuration flavors\n\nThe registry can be instructed to use a specific flavor from a configuration file.\n\nThis mechanism lets you define different running \"mode\" (eg: \"development\", \"production\" or anything else).\n\nIn the `config_sample.yml` file, you'll see several sample flavors:\n\n1. `common`: used by all other flavors as base settings\n1. `local`: stores data on the local filesystem\n1. `s3`: stores data in an AWS S3 bucket\n1. `ceph-s3`: stores data in a Ceph cluster via a Ceph Object Gateway, using the S3 API\n1. `azureblob`: stores data in an Microsoft Azure Blob Storage ([(docs)](ADVANCED.md))\n1. `dev`: basic configuration using the `local` flavor\n1. `test`: used by unit tests\n1. `prod`: production configuration (basically a synonym for the `s3` flavor)\n1. `gcs`: stores data in Google cloud storage\n1. `swift`: stores data in OpenStack Swift\n1. `glance`: stores data in OpenStack Glance, with a fallback to local storage\n1. `glance-swift`: stores data in OpenStack Glance, with a fallback to Swift\n1. `elliptics`: stores data in Elliptics key/value storage\n\nYou can define your own flavors by adding a new top-level yaml key.\n\nTo specify which flavor you want to run, set the `SETTINGS_FLAVOR`\nenvironment variable: `export SETTINGS_FLAVOR=dev`\n\nThe default flavor is `dev`.\n\nNOTE: it's possible to load environment variables from within the config file\nwith a simple syntax: `_env:VARIABLENAME[:DEFAULT]`. Check this syntax\nin action in the example below...\n\n\n## Example config\n\n```yaml\n\ncommon: &common\n standalone: true\n loglevel: info\n search_backend: \"_env:SEARCH_BACKEND:\"\n sqlalchemy_index_database:\n \"_env:SQLALCHEMY_INDEX_DATABASE:sqlite:////tmp/docker-registry.db\"\n\nprod:\n <<: *common\n loglevel: warn\n storage: s3\n s3_access_key: _env:AWS_S3_ACCESS_KEY\n s3_secret_key: _env:AWS_S3_SECRET_KEY\n s3_bucket: _env:AWS_S3_BUCKET\n boto_bucket: _env:AWS_S3_BUCKET\n storage_path: /srv/docker\n smtp_host: localhost\n from_addr: docker@myself.com\n to_addr: my@myself.com\n\ndev:\n <<: *common\n loglevel: debug\n storage: local\n storage_path: /home/myself/docker\n\ntest:\n <<: *common\n storage: local\n storage_path: /tmp/tmpdockertmp\n```\n\n\n\n# Available configuration options\n\nWhen using the `config_sample.yml`, you can pass all options through as environment variables. See [`config_sample.yml`](config/config_sample.yml) for the mapping.\n\n## General options\n\n1. `loglevel`: string, level of debugging. Any of python's\n [logging](http://docs.python.org/2/library/logging.html) module levels:\n `debug`, `info`, `warn`, `error` or `critical`\n1. `debug`: boolean, make the `/_ping` endpoint output more useful information, such as library versions and host information.\n1. `storage_redirect`: Redirect resource requested if storage engine supports\n this, e.g. S3 will redirect signed URLs, this can be used to offload the\n server.\n1. `boto_host`/`boto_port`: If you are using `storage: s3` the\n [standard boto config file locations](http://docs.pythonboto.org/en/latest/boto_config_tut.html#details)\n (`/etc/boto.cfg, ~/.boto`) will be used. If you are using a\n *non*-Amazon S3-compliant object store (such as Ceph), in one of the boto config files'\n `[Credentials]` section, set `boto_host`, `boto_port` as appropriate for the\n service you are using. Alternatively, set `boto_host` and `boto_port` in the config file.\n\n## Authentication options\n\n1. `standalone`: boolean, run the server in stand-alone mode. This means that\n the Index service on index.docker.io will not be used for anything. This\n implies `disable_token_auth`.\n\n1. `index_endpoint`: string, configures the hostname of the Index endpoint.\n This is used to verify passwords of users that log in. It defaults to\n https://index.docker.io. You should probably leave this to its default.\n\n1. `disable_token_auth`: boolean, disable checking of tokens with the Docker\n index. You should provide your own method of authentication (such as Basic\n auth).\n\n## Search-engine options\n\nThe Docker Registry can optionally index repository information in a\ndatabase for the `GET /v1/search` [endpoint][search-endpoint]. You\ncan configure the backend with a configuration like:\n\nThe `search_backend` setting selects the search backend to use. If\n`search_backend` is empty, no index is built, and the search endpoint always\nreturns empty results.\n\n1. `search_backend`: The name of the search backend engine to use.\n Currently supported backends are:\n 1. `sqlalchemy`\n\nIf `search_backend` is neither empty nor one of the supported backends, it\nshould point to a module.\n\nExample:\n\n```yaml\ncommon:\n search_backend: foo.registry.index.xapian\n```\n\nIn this case, the module is imported, and an instance of its `Index`\nclass is used as the search backend.\n\n### sqlalchemy\n\nUse [SQLAlchemy][] as the search backend.\n\n1. `sqlalchemy_index_database`: The database URL passed through to\n [create_engine][].\n\nExample:\n\n```yaml\ncommon:\n search_backend: sqlalchemy\n sqlalchemy_index_database: sqlite:////tmp/docker-registry.db\n```\n\nOn initialization, the `SQLAlchemyIndex` class checks the database\nversion. If the database doesn't exist yet (or does exist, but lacks\na `version` table), the `SQLAlchemyIndex` creates the database and\nrequired tables.\n\n## Mirroring Options\n\nAll mirror options are placed in a `mirroring` section.\n\n1. `mirroring`:\n 1. `source`:\n 1. `source_index`:\n 1. `tags_cache_ttl`:\n\nExample:\n\n```yaml\ncommon:\n mirroring:\n source: https://registry-1.docker.io\n source_index: https://index.docker.io\n tags_cache_ttl: 172800 # 2 days\n```\n\n## Cache options\n\nIt's possible to add an LRU cache to access small files. In this case you need\nto spawn a [redis-server](http://redis.io/) configured in\n[LRU mode](http://redis.io/topics/config). The config file \"config_sample.yml\"\nshows an example to enable the LRU cache using the config directive `cache_lru`.\n\nOnce this feature is enabled, all small files (tags, meta-data) will be cached\nin Redis. When using a remote storage backend (like Amazon S3), it will speed\nthings up dramatically since it will reduce roundtrips to S3.\n\nAll config settings are placed in a `cache` or `cache_lru` section.\n\n1. `cache`/`cache_lru`:\n 1. `host`: Host address of server\n 1. `port`: Port server listens on\n 1. `password`: Authentication password\n\n\n\n## Storage options\n\n`storage` selects the storage engine to use. The registry ships with two storage engine by default (`file` and `s3`).\n\nIf you want to find other (community provided) storages: `pip search docker-registry-driver`\n\nTo use and install one of these alternate storages:\n\n * `pip install docker-registry-driver-NAME`\n * in the configuration set `storage` to `NAME`\n * add any other storage dependent configuration option to the conf file\n * review the storage specific documentation for additional dependency or configuration instructions.\n\n Currently, we are aware of the following storage drivers:\n\n * [azure](https://github.com/ahmetalpbalkan/docker-registry-driver-azure)\n * [elliptics](https://github.com/noxiouz/docker-registry-driver-elliptics)\n * [swift](https://github.com/bacongobbler/docker-registry-driver-swift)\n * [gcs](https://github.com/dmp42/docker-registry-driver-gcs)\n * [glance](https://github.com/dmp42/docker-registry-driver-glance)\n * [oss](https://github.com/chris-jin/docker-registry-driver-alioss.git)\n\n### storage file\n\n1. `storage_path`: Path on the filesystem where to store data\n\nExample:\n\n```yaml\nlocal:\n storage: file\n storage_path: /mnt/registry\n```\n\n#### Persistent storage\nIf you use any type of local store along with a registry running within a docker\nremember to use a data volume for the `storage_path`. Please read the documentation\nfor [data volumes](http://docs.docker.io/en/latest/use/working_with_volumes/) for more information.\n\nExample:\n\n```\ndocker run -p 5000 -v /tmp/registry:/tmp/registry registry\n```\n\n### storage s3\nAWS Simple Storage Service options\n\n1. `s3_access_key`: string, S3 access key\n1. `s3_secret_key`: string, S3 secret key\n1. `s3_bucket`: string, S3 bucket name\n1. `s3_region`: S3 region where the bucket is located\n1. `s3_encrypt`: boolean, if true, the container will be encrypted on the\n server-side by S3 and will be stored in an encrypted form while at rest\n in S3.\n1. `s3_secure`: boolean, true for HTTPS to S3\n1. `s3_use_sigv4`: boolean, true for USE_SIGV4 (boto_host needs to be set or use_sigv4 will be ignored by boto.)\n1. `boto_bucket`: string, the bucket name for *non*-Amazon S3-compliant object store\n1. `boto_host`: string, host for *non*-Amazon S3-compliant object store\n1. `boto_port`: for *non*-Amazon S3-compliant object store\n1. `boto_debug`: for *non*-Amazon S3-compliant object store\n1. `boto_calling_format`: string, the fully qualified class name of the boto calling format to use when accessing S3 or a *non*-Amazon S3-compliant object store\n1. `storage_path`: string, the sub \"folder\" where image data will be stored.\n\nExample:\n```yaml\nprod:\n storage: s3\n s3_region: us-west-1\n s3_bucket: acme-docker\n storage_path: /registry\n s3_access_key: AKIAHSHB43HS3J92MXZ\n s3_secret_key: xdDowwlK7TJajV1Y7EoOZrmuPEJlHYcNP2k4j49T\n```\n\n# Your own config\n\nStart from a copy of [config_sample.yml](config/config_sample.yml).\n\nThen, start your registry with a mount point to expose your new configuration inside the container (`-v /home/me/myfolder:/registry-conf`), and point to it using the `DOCKER_REGISTRY_CONFIG` environment variable:\n\n```\nsudo docker run -p 5000:5000 -v /home/me/myfolder:/registry-conf -e DOCKER_REGISTRY_CONFIG=/registry-conf/mysuperconfig.yml registry\n```\n\n# Advanced use\n\nFor more features and advanced options, have a look at the [advanced features documentation](ADVANCED.md)\n\n# Drivers\n\nFor more backend drivers, please read [drivers.md](DRIVERS.md)\n\n# For developers\n\nRead [contributing](CONTRIBUTING.md)\n\n[search-endpoint]: http://docs.docker.com/reference/api/docker-io_api/#search\n[SQLAlchemy]: http://docs.sqlalchemy.org/\n[create_engine]: http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/docker/docker-registry/archive/master.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/docker/docker-registry", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "docker-registry", "package_url": "https://pypi.org/project/docker-registry/", "platform": "Independent", "project_url": "https://pypi.org/project/docker-registry/", "project_urls": { "Download": "https://github.com/docker/docker-registry/archive/master.zip", "Homepage": "https://github.com/docker/docker-registry" }, "release_url": "https://pypi.org/project/docker-registry/0.9.1/", "requires_dist": null, "requires_python": null, "summary": "Registry server for Docker", "version": "0.9.1" }, "last_serial": 1376110, "releases": { "0.7.0": [ { "comment_text": "", "digests": { "md5": "65ed82ed698ea7ddc01151952134883e", "sha256": "f4c27e16a3d10670873831135fe7a11ae637ba86d9c2505f1c4609f156aaac2c" }, "downloads": -1, "filename": "docker-registry-0.7.0.tar.gz", "has_sig": false, "md5_digest": "65ed82ed698ea7ddc01151952134883e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47579, "upload_time": "2014-05-29T21:22:12", "url": "https://files.pythonhosted.org/packages/df/98/8438600a9c998cfe6eda9ec0dabca8b46a393bbd232c84e22a7895fd45a0/docker-registry-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "3ce5ab60137ab2476eef852f80aaa2ad", "sha256": "1f5fe81a2b50fdffee47c0310c19b70ea9c0704f470b93faa0373d4c8b650de0" }, "downloads": -1, "filename": "docker-registry-0.7.1.tar.gz", "has_sig": false, "md5_digest": "3ce5ab60137ab2476eef852f80aaa2ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47586, "upload_time": "2014-06-04T01:58:04", "url": "https://files.pythonhosted.org/packages/2e/bb/7e083a8b7a941e93621e7d06ae80f0849d4cb13b9b263bfd2c0e7394be20/docker-registry-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "cf3e204ecb0900128fbf237dc942ab8e", "sha256": "2b2bc32620c8d4d78ca1184e1824899ddaa6d635be9472b4e6ac0fdf1fa2d7b6" }, "downloads": -1, "filename": "docker-registry-0.7.2.tar.gz", "has_sig": false, "md5_digest": "cf3e204ecb0900128fbf237dc942ab8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47612, "upload_time": "2014-06-13T17:31:30", "url": "https://files.pythonhosted.org/packages/06/24/fa4d30d56fefd4b9ff6317a145e44ed0fcced01aa4eb68eb81d03af48c13/docker-registry-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "a2c3b967bc69172054d8434ad060c823", "sha256": "18f7c4f8bae22c06bd84704b381f1c15a0bae497b91191704eb92b630a2143bc" }, "downloads": -1, "filename": "docker-registry-0.7.3.tar.gz", "has_sig": false, "md5_digest": "a2c3b967bc69172054d8434ad060c823", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47610, "upload_time": "2014-06-18T22:54:29", "url": "https://files.pythonhosted.org/packages/f0/b7/1a741671f2a1840a9599d34d9940de9b4d2330fbe94647fdc8470ece493d/docker-registry-0.7.3.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "5a8758282b68f2170db59cc128caf081", "sha256": "3d2628b74c05a86d8c30a495be114b0ea2bdadfd18cf6d4c9509bdbf4a266aae" }, "downloads": -1, "filename": "docker-registry-0.8.0.tar.gz", "has_sig": false, "md5_digest": "5a8758282b68f2170db59cc128caf081", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51148, "upload_time": "2014-08-12T23:22:09", "url": "https://files.pythonhosted.org/packages/fe/04/34e3b3b46aa0487ab3a76c5382611008423adb733afcc017aeb9d725b752/docker-registry-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "441f22fee7f88e2d287aaa387bb4b43e", "sha256": "30f6c15ab758d3ea84f7354f78db9236b7b42465784e3bd03faf0fb329113564" }, "downloads": -1, "filename": "docker-registry-0.8.1.tar.gz", "has_sig": false, "md5_digest": "441f22fee7f88e2d287aaa387bb4b43e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51184, "upload_time": "2014-08-23T19:30:34", "url": "https://files.pythonhosted.org/packages/5e/4f/e0fb342f4edcd2cfa602d637815999aa26f9a9037f478f0f77de8a1e726c/docker-registry-0.8.1.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "65eb9fd05b94f7f9fbbb5e2e8ca62912", "sha256": "6a576f5f6d40045248f34f7e278426bc20aef7bb4b7b2476def702aebdb35a1f" }, "downloads": -1, "filename": "docker-registry-0.9.0.tar.gz", "has_sig": false, "md5_digest": "65eb9fd05b94f7f9fbbb5e2e8ca62912", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46036, "upload_time": "2014-11-05T23:40:50", "url": "https://files.pythonhosted.org/packages/57/d0/7d816678370f9a3d200c8248a35cdedd7875bb38873ccd5302ded9e511f6/docker-registry-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "ea1837aa0eeea248f3cdedd18d547155", "sha256": "83d3ddec5cfa1068cc2f3fdb126c8cb703f94c001504cf8ae48b3c9d0a0c75eb" }, "downloads": -1, "filename": "docker-registry-0.9.1.tar.gz", "has_sig": false, "md5_digest": "ea1837aa0eeea248f3cdedd18d547155", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46979, "upload_time": "2015-01-08T22:53:52", "url": "https://files.pythonhosted.org/packages/5e/9a/aa31b1a497c603837a6f1db979d4436a47a9d5c04051bfd9397add9b7078/docker-registry-0.9.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ea1837aa0eeea248f3cdedd18d547155", "sha256": "83d3ddec5cfa1068cc2f3fdb126c8cb703f94c001504cf8ae48b3c9d0a0c75eb" }, "downloads": -1, "filename": "docker-registry-0.9.1.tar.gz", "has_sig": false, "md5_digest": "ea1837aa0eeea248f3cdedd18d547155", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46979, "upload_time": "2015-01-08T22:53:52", "url": "https://files.pythonhosted.org/packages/5e/9a/aa31b1a497c603837a6f1db979d4436a47a9d5c04051bfd9397add9b7078/docker-registry-0.9.1.tar.gz" } ] }