docs: fixed links for storage drivers

Signed-off-by: Ian Babrou <ibobrik@gmail.com>
(cherry picked from commit 824e7e8ae2)

Conflicts:
	docs/mkdocs.yml

Add environment variable override instructions

Signed-off-by: Richard Scothern <richard.scothern@gmail.com>
(cherry picked from commit 937c356585)

Fixing headings

Signed-off-by: Mary Anthony <mary@docker.com>
(cherry picked from commit 7c93c8c265)

Fixes Issue #471 with Publish

- Add sed to Dockerfile; this sed exists on publish script; breaks headings/nav in files without metadata
- Ensure sed runs over storage-driver/ subdir
- Add metadata to all the files (including specs) that don't have it; this ensures they display correctly on publish
- Implement the fix for the showing up in Github
- Update template with GITHUB IGNORES

Signed-off-by: Mary Anthony <mary@docker.com>
(cherry picked from commit 68c0682e00)
This commit is contained in:
Ian Babrou 2015-04-20 10:41:32 +03:00 committed by Mary Anthony
parent ec0f53a8f6
commit d58bf9ed47
15 changed files with 104 additions and 22 deletions

View file

@ -7,11 +7,13 @@ COPY . /src
# Reset the /docs dir so we can replace the theme meta with the new repo's git info # Reset the /docs dir so we can replace the theme meta with the new repo's git info
RUN git reset --hard RUN git reset --hard
RUN grep "VERSION =" /src/version/version.go | sed 's/.*"\(.*\)".*/\1/' > /docs/VERSION
# #
# RUN git describe --match 'v[0-9]*' --dirty='.m' --always > /docs/VERSION # RUN git describe --match 'v[0-9]*' --dirty='.m' --always > /docs/VERSION
# The above line causes a floating point error in our tools # The above line causes a floating point error in our tools
# #
RUN grep "VERSION =" /src/version/version.go | sed 's/.*"\(.*\)".*/\1/' > /docs/VERSION
COPY docs/* /docs/sources/registry/ COPY docs/* /docs/sources/registry/
COPY docs/images/* /docs/sources/registry/images/ COPY docs/images/* /docs/sources/registry/images/
COPY docs/spec/* /docs/sources/registry/spec/ COPY docs/spec/* /docs/sources/registry/spec/
@ -19,6 +21,17 @@ COPY docs/spec/auth/* /docs/sources/registry/spec/auth/
COPY docs/storage-drivers/* /docs/sources/registry/storage-drivers/ COPY docs/storage-drivers/* /docs/sources/registry/storage-drivers/
COPY docs/mkdocs.yml /docs/mkdocs-distribution.yml COPY docs/mkdocs.yml /docs/mkdocs-distribution.yml
RUN sed -i.old '1s;^;no_version_dropdown: true;' \
/docs/sources/registry/*.md \
/docs/sources/registry/spec/*.md \
/docs/sources/registry/spec/auth/*.md \
/docs/sources/registry/storage-drivers/*.md
RUN sed -i.old -e '/^<!--GITHUB/g' -e '/^IGNORES-->/g'\
/docs/sources/registry/*.md \
/docs/sources/registry/spec/*.md \
/docs/sources/registry/spec/auth/*.md \
/docs/sources/registry/storage-drivers/*.md
# Then build everything together, ready for mkdocs # Then build everything together, ready for mkdocs
RUN /docs/build.sh RUN /docs/build.sh

View file

@ -1,6 +1,8 @@
<!--GITHUB
page_title: Configure a Registry page_title: Configure a Registry
page_description: Explains how to deploy a registry page_description: Explains how to deploy a registry
page_keywords: registry, service, images, repository page_keywords: registry, service, images, repository
IGNORES-->
# Registry Configuration Reference # Registry Configuration Reference
@ -9,6 +11,18 @@ You configure a registry server using a YAML file. This page explains the
configuration options and the values they can take. You'll also find examples of configuration options and the values they can take. You'll also find examples of
middleware and development environment configurations. middleware and development environment configurations.
## Overriding configuration options
Environment variables may be used to override configuration parameters other than
version. To override a configuration option, create an environment variable named
REGISTRY\_variable_ where *variable* is the name of the configuration option.
e.g
```
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/tmp/registry/test
```
will set the storage root directory to `/tmp/registry/test`
## List of configuration options ## List of configuration options
This section lists all the registry configuration options. Some options in This section lists all the registry configuration options. Some options in

View file

@ -1,6 +1,9 @@
<!--GITHUB
page_title: Deploying a registry server page_title: Deploying a registry server
page_description: Explains how to deploy a registry server page_description: Explains how to deploy a registry server
page_keywords: registry, service, images, repository page_keywords: registry, service, images, repository
IGNORES-->
# Deploying a registry server # Deploying a registry server

View file

@ -1,6 +1,8 @@
<!--GITHUB
page_title: Docker Registry 2.0 page_title: Docker Registry 2.0
page_description: Introduces the Docker Registry page_description: Introduces the Docker Registry
page_keywords: registry, images, repository page_keywords: registry, images, repository
IGNORES-->
# Docker Registry 2.0 # Docker Registry 2.0

View file

@ -7,10 +7,7 @@
- ['registry/spec/json.md', 'Reference', '&nbsp;&nbsp;&nbsp;&nbsp;&blacksquare;&nbsp; JSON format' ] - ['registry/spec/json.md', 'Reference', '&nbsp;&nbsp;&nbsp;&nbsp;&blacksquare;&nbsp; JSON format' ]
- ['registry/spec/auth/token.md', 'Reference', '&nbsp;&nbsp;&nbsp;&nbsp;&blacksquare;&nbsp; Authenticate via central service' ] - ['registry/spec/auth/token.md', 'Reference', '&nbsp;&nbsp;&nbsp;&nbsp;&blacksquare;&nbsp; Authenticate via central service' ]
<<<<<<< HEAD
=======
- ['registry/storage-drivers/azure.md', '**HIDDEN**' ] - ['registry/storage-drivers/azure.md', '**HIDDEN**' ]
- ['registry/storage-drivers/filesystem.md', '**HIDDEN**' ] - ['registry/storage-drivers/filesystem.md', '**HIDDEN**' ]
- ['registry/storage-drivers/inmemory.md', '**HIDDEN**' ] - ['registry/storage-drivers/inmemory.md', '**HIDDEN**' ]
- ['registry/storage-drivers/s3.md','**HIDDEN**' ] - ['registry/storage-drivers/s3.md','**HIDDEN**' ]
>>>>>>> d5c0300... Pushing fix for mkdocs.yml introduced

View file

@ -1,6 +1,9 @@
<!--GITHUB
page_title: Work with Notifications page_title: Work with Notifications
page_description: Explains how to deploy a registry server page_description: Explains how to deploy a registry server
page_keywords: registry, service, images, repository page_keywords: registry, service, images, repository
IGNORES-->
# Notifications # Notifications

View file

@ -1,3 +1,9 @@
<!--GITHUB
page_title: Docker Registry HTTP API V2
page_description: Explains how to use registry API
page_keywords: registry, service, driver, images, storage, api
IGNORES-->
# Docker Registry HTTP API V2 # Docker Registry HTTP API V2
## Introduction ## Introduction

View file

@ -1,3 +1,9 @@
<!--GITHUB
page_title: Docker Registry HTTP API V2
page_description: Explains how to use registry API
page_keywords: registry, service, driver, images, storage, api
IGNORES-->
# Docker Registry HTTP API V2 # Docker Registry HTTP API V2
## Introduction ## Introduction

View file

@ -1,3 +1,10 @@
<!--GITHUB
page_title: Docker Registry v2 Authentication
page_description: Introduces the Docker Registry v2 authentication
page_keywords: registry, images, repository, v2, authentication
IGNORES-->
# Docker Registry v2 authentication via central service # Docker Registry v2 authentication via central service
Today a Docker Registry can run in standalone mode in which there are no Today a Docker Registry can run in standalone mode in which there are no

View file

@ -1,3 +1,10 @@
<!--GITHUB
page_title: Docker Distribution JSON Canonicalization
page_description: Explains registry JSON objects
page_keywords: registry, service, images, repository, json
IGNORES-->
# Docker Distribution JSON Canonicalization # Docker Distribution JSON Canonicalization
To provide consistent content hashing of JSON objects throughout Docker To provide consistent content hashing of JSON objects throughout Docker

View file

@ -1,5 +1,10 @@
# Microsoft Azure storage driver <!--GITHUB
page_title: Microsoft Azure storage driver
page_description: Explains how to use the Azure storage drivers
page_keywords: registry, service, driver, images, storage, azure
IGNORES-->
# Microsoft Azure storage driver
An implementation of the `storagedriver.StorageDriver` interface which uses [Microsoft Azure Blob Storage][azure-blob-storage] for object storage. An implementation of the `storagedriver.StorageDriver` interface which uses [Microsoft Azure Blob Storage][azure-blob-storage] for object storage.

View file

@ -1,3 +1,9 @@
<!--GITHUB
page_title: Filesystem storage driver
page_description: Explains how to use the filesystem storage drivers
page_keywords: registry, service, driver, images, storage, filesystem
IGNORES-->
# Filesystem storage driver # Filesystem storage driver
An implementation of the `storagedriver.StorageDriver` interface which uses the local filesystem. An implementation of the `storagedriver.StorageDriver` interface which uses the local filesystem.

View file

@ -1,3 +1,9 @@
<!--GITHUB
page_title: In-memory storage driver
page_description: Explains how to use the in-memory storage drivers
page_keywords: registry, service, driver, images, storage, in-memory
IGNORES-->
# In-memory storage driver # In-memory storage driver
An implementation of the `storagedriver.StorageDriver` interface which uses local memory for object storage. An implementation of the `storagedriver.StorageDriver` interface which uses local memory for object storage.

View file

@ -1,3 +1,9 @@
<!--GITHUB
page_title: S3 storage driver
page_description: Explains how to use the S3 storage drivers
page_keywords: registry, service, driver, images, storage, S3
IGNORES-->
# S3 storage driver # S3 storage driver
An implementation of the `storagedriver.StorageDriver` interface which uses Amazon S3 for object storage. An implementation of the `storagedriver.StorageDriver` interface which uses Amazon S3 for object storage.

View file

@ -1,20 +1,23 @@
Docker-Registry Storage Driver <!--GITHUB
============================== page_title: Docker Registry Storage Driver
page_description: Explains how to use the storage drivers
page_keywords: registry, service, driver, images, storage
IGNORES-->
# Docker Registry Storage Driver
This document describes the registry storage driver model, implementation, and explains how to contribute new storage drivers. This document describes the registry storage driver model, implementation, and explains how to contribute new storage drivers.
Provided Drivers ## Provided Drivers
================
This storage driver package comes bundled with several drivers: This storage driver package comes bundled with several drivers:
- [inmemory](storage-drivers/inmemory): A temporary storage driver using a local inmemory map. This exists solely for reference and testing. - [inmemory](storage-drivers/inmemory.md): A temporary storage driver using a local inmemory map. This exists solely for reference and testing.
- [filesystem](storage-drivers/filesystem): A local storage driver configured to use a directory tree in the local filesystem. - [filesystem](storage-drivers/filesystem.md): A local storage driver configured to use a directory tree in the local filesystem.
- [s3](storage-drivers/s3): A driver storing objects in an Amazon Simple Storage Solution (S3) bucket. - [s3](storage-drivers/s3.md): A driver storing objects in an Amazon Simple Storage Solution (S3) bucket.
- [azure](storage-drivers/azure): A driver storing objects in [Microsoft Azure Blob Storage](http://azure.microsoft.com/en-us/services/storage/). - [azure](storage-drivers/azure.md): A driver storing objects in [Microsoft Azure Blob Storage](http://azure.microsoft.com/en-us/services/storage/).
Storage Driver API ## Storage Driver API
==================
The storage driver API is designed to model a filesystem-like key/value storage in a manner abstract enough to support a range of drivers from the local filesystem to Amazon S3 or other distributed object storage systems. The storage driver API is designed to model a filesystem-like key/value storage in a manner abstract enough to support a range of drivers from the local filesystem to Amazon S3 or other distributed object storage systems.
@ -22,23 +25,21 @@ Storage drivers are required to implement the `storagedriver.StorageDriver` inte
Storage drivers are intended (but not required) to be written in go, providing compile-time validation of the `storagedriver.StorageDriver` interface, although an IPC driver wrapper means that it is not required for drivers to be included in the compiled registry. The `storagedriver/ipc` package provides a client/server protocol for running storage drivers provided in external executables as a managed child server process. Storage drivers are intended (but not required) to be written in go, providing compile-time validation of the `storagedriver.StorageDriver` interface, although an IPC driver wrapper means that it is not required for drivers to be included in the compiled registry. The `storagedriver/ipc` package provides a client/server protocol for running storage drivers provided in external executables as a managed child server process.
Driver Selection and Configuration ## Driver Selection and Configuration
==================================
The preferred method of selecting a storage driver is using the `StorageDriverFactory` interface in the `storagedriver/factory` package. These factories provide a common interface for constructing storage drivers with a parameters map. The factory model is based off of the [Register](http://golang.org/pkg/database/sql/#Register) and [Open](http://golang.org/pkg/database/sql/#Open) methods in the builtin [database/sql](http://golang.org/pkg/database/sql) package. The preferred method of selecting a storage driver is using the `StorageDriverFactory` interface in the `storagedriver/factory` package. These factories provide a common interface for constructing storage drivers with a parameters map. The factory model is based off of the [Register](http://golang.org/pkg/database/sql/#Register) and [Open](http://golang.org/pkg/database/sql/#Open) methods in the builtin [database/sql](http://golang.org/pkg/database/sql) package.
Storage driver factories may be registered by name using the `factory.Register` method, and then later invoked by calling `factory.Create` with a driver name and parameters map. If no driver is registered with the given name, this factory will attempt to find an executable storage driver with the executable name "registry-storage-\<driver name\>" and return an IPC storage driver wrapper managing the driver subprocess. If no such storage driver can be found, `factory.Create` will return an `InvalidStorageDriverError`. Storage driver factories may be registered by name using the `factory.Register` method, and then later invoked by calling `factory.Create` with a driver name and parameters map. If no driver is registered with the given name, this factory will attempt to find an executable storage driver with the executable name "registry-storage-\<driver name\>" and return an IPC storage driver wrapper managing the driver subprocess. If no such storage driver can be found, `factory.Create` will return an `InvalidStorageDriverError`.
Driver Contribution ## Driver Contribution
===================
## Writing new storage drivers ### Writing new storage drivers
To create a valid storage driver, one must implement the `storagedriver.StorageDriver` interface and make sure to expose this driver via the factory system and as a distributable IPC server executable. To create a valid storage driver, one must implement the `storagedriver.StorageDriver` interface and make sure to expose this driver via the factory system and as a distributable IPC server executable.
### In-process drivers #### In-process drivers
Storage drivers should call `factory.Register` with their driver name in an `init` method, allowing callers of `factory.New` to construct instances of this driver without requiring modification of imports throughout the codebase. Storage drivers should call `factory.Register` with their driver name in an `init` method, allowing callers of `factory.New` to construct instances of this driver without requiring modification of imports throughout the codebase.
### Out-of-process drivers #### Out-of-process drivers
As many users will run the registry as a pre-constructed docker container, storage drivers should also be distributable as IPC server executables. Drivers written in go should model the main method provided in `storagedriver/filesystem/registry-storage-filesystem/filesystem.go`. Parameters to IPC drivers will be provided as a JSON-serialized map in the first argument to the process. These parameters should be validated and then a blocking call to `ipc.StorageDriverServer` should be made with a new storage driver. As many users will run the registry as a pre-constructed docker container, storage drivers should also be distributable as IPC server executables. Drivers written in go should model the main method provided in `storagedriver/filesystem/registry-storage-filesystem/filesystem.go`. Parameters to IPC drivers will be provided as a JSON-serialized map in the first argument to the process. These parameters should be validated and then a blocking call to `ipc.StorageDriverServer` should be made with a new storage driver.
Out-of-process drivers must also implement the `ipc.IPCStorageDriver` interface, which exposes a `Version` check for the storage driver. This is used to validate storage driver api compatibility at driver load-time. Out-of-process drivers must also implement the `ipc.IPCStorageDriver` interface, which exposes a `Version` check for the storage driver. This is used to validate storage driver api compatibility at driver load-time.