Make the index.html files the visible overview menu entry
And move menu entry definition into a page that the user has no reason to navigate to Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au>
This commit is contained in:
parent
a5f72a6032
commit
3069a04b8c
@ -1,9 +1,9 @@
|
|||||||
FROM docs/base:oss
|
FROM docs/base:oss
|
||||||
MAINTAINER Mary Anthony <mary@docker.com> (@moxiegirl)
|
MAINTAINER Docker Docs <docs@docker.com>
|
||||||
|
|
||||||
ENV PROJECT=registry
|
ENV PROJECT=registry
|
||||||
|
|
||||||
# To get the git info for this repo
|
# To get the git info for this repo
|
||||||
COPY . /src
|
COPY . /src
|
||||||
RUN rm -r /docs/content/$PROJECT/
|
RUN rm -rf /docs/content/$PROJECT/
|
||||||
COPY . /docs/content/$PROJECT/
|
COPY . /docs/content/$PROJECT/
|
||||||
|
@ -1,17 +1,4 @@
|
|||||||
.PHONY: all binary build cross default docs docs-build docs-shell shell test test-unit test-integration test-integration-cli test-docker-py validate
|
.PHONY: all default docs docs-build docs-shell shell test
|
||||||
|
|
||||||
# env vars passed through directly to Docker's build scripts
|
|
||||||
# to allow things like `make DOCKER_CLIENTONLY=1 binary` easily
|
|
||||||
# `docs/sources/contributing/devenvironment.md ` and `project/PACKAGERS.md` have some limited documentation of some of these
|
|
||||||
DOCKER_ENVS := \
|
|
||||||
-e BUILDFLAGS \
|
|
||||||
-e DOCKER_CLIENTONLY \
|
|
||||||
-e DOCKER_EXECDRIVER \
|
|
||||||
-e DOCKER_GRAPHDRIVER \
|
|
||||||
-e TESTDIRS \
|
|
||||||
-e TESTFLAGS \
|
|
||||||
-e TIMEOUT
|
|
||||||
# note: we _cannot_ add "-e DOCKER_BUILDTAGS" here because even if it's unset in the shell, that would shadow the "ENV DOCKER_BUILDTAGS" set in our Dockerfile, which is very important for our official builds
|
|
||||||
|
|
||||||
# to allow `make DOCSDIR=docs docs-shell` (to create a bind mount in docs)
|
# to allow `make DOCSDIR=docs docs-shell` (to create a bind mount in docs)
|
||||||
DOCS_MOUNT := $(if $(DOCSDIR),-v $(CURDIR)/$(DOCSDIR):/$(DOCSDIR))
|
DOCS_MOUNT := $(if $(DOCSDIR),-v $(CURDIR)/$(DOCSDIR):/$(DOCSDIR))
|
||||||
@ -25,9 +12,8 @@ HUGO_BASE_URL=$(shell test -z "$(DOCKER_IP)" && echo localhost || echo "$(DOCKER
|
|||||||
HUGO_BIND_IP=0.0.0.0
|
HUGO_BIND_IP=0.0.0.0
|
||||||
|
|
||||||
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
||||||
DOCKER_IMAGE := docker$(if $(GIT_BRANCH),:$(GIT_BRANCH))
|
GIT_BRANCH_CLEAN := $(shell echo $(GIT_BRANCH) | sed -e "s/[^[:alnum:]]/-/g")
|
||||||
DOCKER_DOCS_IMAGE := docs-base$(if $(GIT_BRANCH),:$(GIT_BRANCH))
|
DOCKER_DOCS_IMAGE := registry-docs$(if $(GIT_BRANCH_CLEAN),:$(GIT_BRANCH_CLEAN))
|
||||||
|
|
||||||
|
|
||||||
DOCKER_RUN_DOCS := docker run --rm -it $(DOCS_MOUNT) -e AWS_S3_BUCKET -e NOCACHE
|
DOCKER_RUN_DOCS := docker run --rm -it $(DOCS_MOUNT) -e AWS_S3_BUCKET -e NOCACHE
|
||||||
|
|
||||||
@ -42,14 +28,11 @@ docs: docs-build
|
|||||||
docs-draft: docs-build
|
docs-draft: docs-build
|
||||||
$(DOCKER_RUN_DOCS) -p $(if $(DOCSPORT),$(DOCSPORT):)8000 -e DOCKERHOST "$(DOCKER_DOCS_IMAGE)" hugo server --buildDrafts="true" --port=$(DOCSPORT) --baseUrl=$(HUGO_BASE_URL) --bind=$(HUGO_BIND_IP)
|
$(DOCKER_RUN_DOCS) -p $(if $(DOCSPORT),$(DOCSPORT):)8000 -e DOCKERHOST "$(DOCKER_DOCS_IMAGE)" hugo server --buildDrafts="true" --port=$(DOCSPORT) --baseUrl=$(HUGO_BASE_URL) --bind=$(HUGO_BIND_IP)
|
||||||
|
|
||||||
|
|
||||||
docs-shell: docs-build
|
docs-shell: docs-build
|
||||||
$(DOCKER_RUN_DOCS) -p $(if $(DOCSPORT),$(DOCSPORT):)8000 "$(DOCKER_DOCS_IMAGE)" bash
|
$(DOCKER_RUN_DOCS) -p $(if $(DOCSPORT),$(DOCSPORT):)8000 "$(DOCKER_DOCS_IMAGE)" bash
|
||||||
|
|
||||||
|
|
||||||
docs-build:
|
docs-build:
|
||||||
# ( git remote | grep -v upstream ) || git diff --name-status upstream/release..upstream/docs ./ > ./changed-files
|
|
||||||
# echo "$(GIT_BRANCH)" > GIT_BRANCH
|
|
||||||
# echo "$(AWS_S3_BUCKET)" > AWS_S3_BUCKET
|
|
||||||
# echo "$(GITCOMMIT)" > GITCOMMIT
|
|
||||||
docker build -t "$(DOCKER_DOCS_IMAGE)" .
|
docker build -t "$(DOCKER_DOCS_IMAGE)" .
|
||||||
|
|
||||||
|
test: docs-build
|
||||||
|
$(DOCKER_RUN_DOCS) "$(DOCKER_DOCS_IMAGE)"
|
||||||
|
@ -1680,7 +1680,7 @@ The TCP address to connect to, including a port number.
|
|||||||
username: [username]
|
username: [username]
|
||||||
password: [password]
|
password: [password]
|
||||||
|
|
||||||
Proxy enables a registry to be configured as a pull through cache to the official Docker Hub. See [mirror](mirror.md) for more information. Pushing to a registry configured as a pull through cache is currently unsupported.
|
Proxy enables a registry to be configured as a pull through cache to the official Docker Hub. See [mirror](recipes/mirror.md) for more information. Pushing to a registry configured as a pull through cache is currently unsupported.
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -11,7 +11,7 @@ weight=3
|
|||||||
|
|
||||||
# Deploying a registry server
|
# Deploying a registry server
|
||||||
|
|
||||||
You need to [install Docker version 1.6.0 or newer](https://docs.docker.com/installation/).
|
You need to [install Docker version 1.6.0 or newer](/engine/installation/index.md).
|
||||||
|
|
||||||
## Running on localhost
|
## Running on localhost
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ To stop your registry, you would:
|
|||||||
|
|
||||||
## Storage
|
## Storage
|
||||||
|
|
||||||
By default, your registry data is persisted as a [docker volume](https://docs.docker.com/userguide/dockervolumes/) on the host filesystem. Properly understanding volumes is essential if you want to stick with a local filesystem storage.
|
By default, your registry data is persisted as a [docker volume](/engine/userguide/containers/dockervolumes.md) on the host filesystem. Properly understanding volumes is essential if you want to stick with a local filesystem storage.
|
||||||
|
|
||||||
Specifically, you might want to point your volume location to a specific place in order to more easily access your registry data. To do so you can:
|
Specifically, you might want to point your volume location to a specific place in order to more easily access your registry data. To do so you can:
|
||||||
|
|
||||||
@ -180,7 +180,7 @@ Seeing X509 errors is usually a sign you are trying to use self-signed certifica
|
|||||||
|
|
||||||
### Alternatives
|
### Alternatives
|
||||||
|
|
||||||
1. You may want to leverage more advanced basic auth implementations through a proxy design, in front of the registry. You will find examples of such patterns in the [recipes list](recipes.md).
|
1. You may want to leverage more advanced basic auth implementations through a proxy design, in front of the registry. You will find examples of such patterns in the [recipes list](recipes/index.md).
|
||||||
|
|
||||||
2. Alternatively, the Registry also supports delegated authentication, redirecting users to a specific, trusted token server. That approach requires significantly more investment, and only makes sense if you want to fully configure ACLs and more control over the Registry integration into your global authorization and authentication systems.
|
2. Alternatively, the Registry also supports delegated authentication, redirecting users to a specific, trusted token server. That approach requires significantly more investment, and only makes sense if you want to fully configure ACLs and more control over the Registry integration into your global authorization and authentication systems.
|
||||||
|
|
||||||
@ -192,7 +192,7 @@ Beware that you will have to implement your own authentication service for this
|
|||||||
|
|
||||||
As your registry configuration grows more complex, dealing with it can quickly become tedious.
|
As your registry configuration grows more complex, dealing with it can quickly become tedious.
|
||||||
|
|
||||||
It's highly recommended to use [Docker Compose](https://docs.docker.com/compose/) to facilitate operating your registry.
|
It's highly recommended to use [Docker Compose](/compose/index.md) to facilitate operating your registry.
|
||||||
|
|
||||||
Here is a simple `docker-compose.yml` example that condenses everything explained so far:
|
Here is a simple `docker-compose.yml` example that condenses everything explained so far:
|
||||||
|
|
||||||
@ -226,7 +226,7 @@ You will find more specific and advanced informations in the following sections:
|
|||||||
|
|
||||||
- [Configuration reference](configuration.md)
|
- [Configuration reference](configuration.md)
|
||||||
- [Working with notifications](notifications.md)
|
- [Working with notifications](notifications.md)
|
||||||
- [Advanced "recipes"](recipes.md)
|
- [Advanced "recipes"](recipes/index.md)
|
||||||
- [Registry API](spec/api.md)
|
- [Registry API](spec/api.md)
|
||||||
- [Storage driver model](storagedrivers.md)
|
- [Storage driver model](storage-drivers/index.md)
|
||||||
- [Token authentication](spec/auth/token.md)
|
- [Token authentication](spec/auth/token.md)
|
||||||
|
@ -21,4 +21,4 @@ If you want to report a bug:
|
|||||||
- be sure to first read about [how to contribute](https://github.com/docker/distribution/blob/master/CONTRIBUTING.md)
|
- be sure to first read about [how to contribute](https://github.com/docker/distribution/blob/master/CONTRIBUTING.md)
|
||||||
- you can then do so on the [GitHub project bugtracker](https://github.com/docker/distribution/issues)
|
- you can then do so on the [GitHub project bugtracker](https://github.com/docker/distribution/issues)
|
||||||
|
|
||||||
You can also find out more about the Docker's project [Getting Help resources](https://docs.docker.com/opensource/get-help/).
|
You can also find out more about the Docker's project [Getting Help resources](/opensource/get-help.md).
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
<!--[metadata]>
|
<!--[metadata]>
|
||||||
+++
|
+++
|
||||||
title = "Docker Registry"
|
title = "Registry Overview"
|
||||||
description = "High-level overview of the Registry"
|
description = "High-level overview of the Registry"
|
||||||
keywords = ["registry, on-prem, images, tags, repository, distribution"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution"]
|
||||||
|
aliases = ["/registry/overview/"]
|
||||||
[menu.main]
|
[menu.main]
|
||||||
identifier="smn_registry"
|
parent="smn_registry"
|
||||||
parent="mn_components"
|
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ Users interact with a registry by using docker push and pull commands.
|
|||||||
|
|
||||||
> Example: `docker pull registry-1.docker.io/distribution/registry:2.1`.
|
> Example: `docker pull registry-1.docker.io/distribution/registry:2.1`.
|
||||||
|
|
||||||
Storage itself is delegated to drivers. The default storage driver is the local posix filesystem, which is suitable for development or small deployments. Additional cloud-based storage drivers like S3, Microsoft Azure, OpenStack Swift and Aliyun OSS are also supported. People looking into using other storage backends may do so by writing their own driver implementing the [Storage API](storagedrivers.md).
|
Storage itself is delegated to drivers. The default storage driver is the local posix filesystem, which is suitable for development or small deployments. Additional cloud-based storage drivers like S3, Microsoft Azure, OpenStack Swift and Aliyun OSS are also supported. People looking into using other storage backends may do so by writing their own driver implementing the [Storage API](storage-drivers/index.md).
|
||||||
|
|
||||||
Since securing access to your hosted images is paramount, the Registry natively supports TLS and basic authentication.
|
Since securing access to your hosted images is paramount, the Registry natively supports TLS and basic authentication.
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ Image names as used in typical docker commands reflect their origin:
|
|||||||
* `docker pull ubuntu` instructs docker to pull an image named `ubuntu` from the official Docker Hub. This is simply a shortcut for the longer `docker pull docker.io/library/ubuntu` command
|
* `docker pull ubuntu` instructs docker to pull an image named `ubuntu` from the official Docker Hub. This is simply a shortcut for the longer `docker pull docker.io/library/ubuntu` command
|
||||||
* `docker pull myregistrydomain:port/foo/bar` instructs docker to contact the registry located at `myregistrydomain:port` to find the image `foo/bar`
|
* `docker pull myregistrydomain:port/foo/bar` instructs docker to contact the registry located at `myregistrydomain:port` to find the image `foo/bar`
|
||||||
|
|
||||||
You can find out more about the various Docker commands dealing with images in the [official Docker engine documentation](https://docs.docker.com/reference/commandline/cli/).
|
You can find out more about the various Docker commands dealing with images in the [official Docker engine documentation](/engine/reference/commandline/cli.md).
|
||||||
|
|
||||||
## Use cases
|
## Use cases
|
||||||
|
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<!--[metadata]>
|
<!--[metadata]>
|
||||||
+++
|
+++
|
||||||
title = "Registry Overview"
|
title = "Docker Registry"
|
||||||
description = "High-level overview of the Registry"
|
description = "High-level overview of the Registry"
|
||||||
keywords = ["registry, on-prem, images, tags, repository, distribution"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution"]
|
||||||
|
type = "menu"
|
||||||
[menu.main]
|
[menu.main]
|
||||||
parent="smn_registry"
|
identifier="smn_registry"
|
||||||
|
parent="mn_components"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
@ -17,5 +19,5 @@ The Docker Registry documentation includes the following topics:
|
|||||||
* [Deploying a registry server](deploying.md)
|
* [Deploying a registry server](deploying.md)
|
||||||
* [Registry Configuration Reference](configuration.md)
|
* [Registry Configuration Reference](configuration.md)
|
||||||
* [Notifications](notifications.md)
|
* [Notifications](notifications.md)
|
||||||
* [Recipes](recipes.md)
|
* [Recipes](recipes/index.md)
|
||||||
* [Getting help](help.md)
|
* [Getting help](help.md)
|
@ -3,6 +3,8 @@
|
|||||||
title = "Authenticating proxy with apache"
|
title = "Authenticating proxy with apache"
|
||||||
description = "Restricting access to your registry using an apache proxy"
|
description = "Restricting access to your registry using an apache proxy"
|
||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, authentication, proxy, apache, httpd, TLS, recipe, advanced"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution, authentication, proxy, apache, httpd, TLS, recipe, advanced"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_recipes"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
@ -16,7 +18,7 @@ Usually, that includes enterprise setups using LDAP/AD on the backend and a SSO
|
|||||||
|
|
||||||
### Alternatives
|
### Alternatives
|
||||||
|
|
||||||
If you just want authentication for your registry, and are happy maintaining users access separately, you should really consider sticking with the native [basic auth registry feature](deploying.md#native-basic-auth).
|
If you just want authentication for your registry, and are happy maintaining users access separately, you should really consider sticking with the native [basic auth registry feature](../deploying.md#native-basic-auth).
|
||||||
|
|
||||||
### Solution
|
### Solution
|
||||||
|
|
||||||
@ -34,7 +36,7 @@ Furthermore, introducing an extra http layer in your communication pipeline will
|
|||||||
|
|
||||||
## Setting things up
|
## Setting things up
|
||||||
|
|
||||||
Read again [the requirements](recipes.md#requirements).
|
Read again [the requirements](index.md#requirements).
|
||||||
|
|
||||||
Ready?
|
Ready?
|
||||||
|
|
@ -3,6 +3,8 @@
|
|||||||
title = "Build instructions"
|
title = "Build instructions"
|
||||||
description = "Explains how to build & hack on the registry"
|
description = "Explains how to build & hack on the registry"
|
||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, build, recipe, advanced"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution, build, recipe, advanced"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_recipes"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
@ -1,11 +1,11 @@
|
|||||||
<!--[metadata]>
|
<!--[metadata]>
|
||||||
+++
|
+++
|
||||||
title = "Recipes"
|
title = "Recipes Overview"
|
||||||
description = "Fun stuff to do with your registry"
|
description = "Fun stuff to do with your registry"
|
||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, recipes, advanced"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution, recipes, advanced"]
|
||||||
[menu.main]
|
[menu.main]
|
||||||
parent="smn_registry"
|
parent="smn_recipes"
|
||||||
weight=7
|
weight=-10
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ Most users are not expected to have a use for these.
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
You should have followed entirely the basic [deployment guide](deploying.md).
|
You should have followed entirely the basic [deployment guide](../deploying.md).
|
||||||
|
|
||||||
If you have not, please take the time to do so.
|
If you have not, please take the time to do so.
|
||||||
|
|
22
docs/recipes/menu.md
Normal file
22
docs/recipes/menu.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<!--[metadata]>
|
||||||
|
+++
|
||||||
|
title = "Recipes"
|
||||||
|
description = "Registry Recipes"
|
||||||
|
keywords = ["registry, on-prem, images, tags, repository, distribution"]
|
||||||
|
type = "menu"
|
||||||
|
[menu.main]
|
||||||
|
identifier="smn_recipes"
|
||||||
|
parent="smn_registry"
|
||||||
|
weight=6
|
||||||
|
+++
|
||||||
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
# Recipes
|
||||||
|
|
||||||
|
## The List
|
||||||
|
|
||||||
|
* [using Apache as an authenticating proxy](apache.md)
|
||||||
|
* [using Nginx as an authenticating proxy](nginx.md)
|
||||||
|
* [running a Registry on OS X](osx-setup-guide.md)
|
||||||
|
* [hacking the registry: build instructions](building.md)
|
||||||
|
* [mirror the Docker Hub](mirror.md)
|
@ -3,6 +3,8 @@
|
|||||||
title = "Mirroring Docker Hub"
|
title = "Mirroring Docker Hub"
|
||||||
description = "Setting-up a local mirror for Docker Hub images"
|
description = "Setting-up a local mirror for Docker Hub images"
|
||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, mirror, Hub, recipe, advanced"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution, mirror, Hub, recipe, advanced"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_recipes"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
@ -3,6 +3,8 @@
|
|||||||
title = "Authenticating proxy with nginx"
|
title = "Authenticating proxy with nginx"
|
||||||
description = "Restricting access to your registry using a nginx proxy"
|
description = "Restricting access to your registry using a nginx proxy"
|
||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, nginx, proxy, authentication, TLS, recipe, advanced"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution, nginx, proxy, authentication, TLS, recipe, advanced"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_recipes"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
@ -17,7 +19,7 @@ Usually, that includes enterprise setups using LDAP/AD on the backend and a SSO
|
|||||||
|
|
||||||
### Alternatives
|
### Alternatives
|
||||||
|
|
||||||
If you just want authentication for your registry, and are happy maintaining users access separately, you should really consider sticking with the native [basic auth registry feature](deploying.md#native-basic-auth).
|
If you just want authentication for your registry, and are happy maintaining users access separately, you should really consider sticking with the native [basic auth registry feature](../deploying.md#native-basic-auth).
|
||||||
|
|
||||||
### Solution
|
### Solution
|
||||||
|
|
||||||
@ -53,7 +55,7 @@ Otherwise nginx will reset the ELB's values, and the requests will not be routed
|
|||||||
|
|
||||||
## Setting things up
|
## Setting things up
|
||||||
|
|
||||||
Read again [the requirements](recipes.md#requirements).
|
Read again [the requirements](index.md#requirements).
|
||||||
|
|
||||||
Ready?
|
Ready?
|
||||||
|
|
@ -3,6 +3,8 @@
|
|||||||
title = "Running on OS X"
|
title = "Running on OS X"
|
||||||
description = "Explains how to run a registry on OS X"
|
description = "Explains how to run a registry on OS X"
|
||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, OS X, recipe, advanced"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution, OS X, recipe, advanced"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_recipes"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
@ -16,7 +18,7 @@ This is useful if you intend to run a registry server natively on OS X.
|
|||||||
|
|
||||||
You can start a VM on OS X, and deploy your registry normally as a container using Docker inside that VM.
|
You can start a VM on OS X, and deploy your registry normally as a container using Docker inside that VM.
|
||||||
|
|
||||||
The simplest road to get there is traditionally to use the [docker Toolbox](https://www.docker.com/toolbox), or [docker-machine](https://docs.docker.com/machine/), which usually relies on the [boot2docker](http://boot2docker.io/) iso inside a VirtualBox VM.
|
The simplest road to get there is traditionally to use the [docker Toolbox](https://www.docker.com/toolbox), or [docker-machine](/machine/index.md), which usually relies on the [boot2docker](http://boot2docker.io/) iso inside a VirtualBox VM.
|
||||||
|
|
||||||
### Solution
|
### Solution
|
||||||
|
|
@ -3,6 +3,9 @@
|
|||||||
title = "Docker Registry Token Authentication"
|
title = "Docker Registry Token Authentication"
|
||||||
description = "Docker Registry v2 authentication schema"
|
description = "Docker Registry v2 authentication schema"
|
||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, authentication, advanced"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution, authentication, advanced"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_registry_ref"
|
||||||
|
weight=100
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ description = "Describe the reference implementation of the Docker Registry v2 a
|
|||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, JWT authentication, advanced"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution, JWT authentication, advanced"]
|
||||||
[menu.main]
|
[menu.main]
|
||||||
parent="smn_registry_ref"
|
parent="smn_registry_ref"
|
||||||
|
weight=101
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ description = "Specifies the Docker Registry v2 authentication"
|
|||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, oauth2, advanced"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution, oauth2, advanced"]
|
||||||
[menu.main]
|
[menu.main]
|
||||||
parent="smn_registry_ref"
|
parent="smn_registry_ref"
|
||||||
|
weight=102
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ description = "Describes the scope and access fields used for registry authoriza
|
|||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, advanced, access, scope"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution, advanced, access, scope"]
|
||||||
[menu.main]
|
[menu.main]
|
||||||
parent="smn_registry_ref"
|
parent="smn_registry_ref"
|
||||||
|
weight=103
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ description = "Specifies the Docker Registry v2 authentication"
|
|||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, Bearer authentication, advanced"]
|
keywords = ["registry, on-prem, images, tags, repository, distribution, Bearer authentication, advanced"]
|
||||||
[menu.main]
|
[menu.main]
|
||||||
parent="smn_registry_ref"
|
parent="smn_registry_ref"
|
||||||
|
weight=104
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
<!--[metadata]>
|
<!--[metadata]>
|
||||||
+++
|
+++
|
||||||
title = "Reference"
|
title = "Reference Overview"
|
||||||
description = "Explains registry JSON objects"
|
description = "Explains registry JSON objects"
|
||||||
keywords = ["registry, service, images, repository, json"]
|
keywords = ["registry, service, images, repository, json"]
|
||||||
[menu.main]
|
[menu.main]
|
||||||
identifier="smn_registry_ref"
|
parent="smn_registry_ref"
|
||||||
parent="smn_registry"
|
weight=-1
|
||||||
weight=7
|
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
# Docker Registry Reference
|
# Docker Registry Reference
|
||||||
|
|
||||||
* [HTTP API V2](api.md)
|
* [HTTP API V2](api.md)
|
||||||
* [Storage Driver](../storagedrivers.md)
|
* [Storage Driver](../storage-drivers/index.md)
|
||||||
* [Token Authentication Specification](auth/token.md)
|
* [Token Authentication Specification](auth/token.md)
|
||||||
* [Token Authentication Implementation](auth/jwt.md)
|
* [Token Authentication Implementation](auth/jwt.md)
|
||||||
|
13
docs/spec/menu.md
Normal file
13
docs/spec/menu.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<!--[metadata]>
|
||||||
|
+++
|
||||||
|
title = "Reference"
|
||||||
|
description = "Explains registry JSON objects"
|
||||||
|
keywords = ["registry, service, images, repository, json"]
|
||||||
|
type = "menu"
|
||||||
|
[menu.main]
|
||||||
|
identifier="smn_registry_ref"
|
||||||
|
parent="smn_registry"
|
||||||
|
weight=7
|
||||||
|
+++
|
||||||
|
<![end-metadata]-->
|
||||||
|
|
@ -3,6 +3,8 @@
|
|||||||
title = "Microsoft Azure storage driver"
|
title = "Microsoft Azure storage driver"
|
||||||
description = "Explains how to use the Azure storage drivers"
|
description = "Explains how to use the Azure storage drivers"
|
||||||
keywords = ["registry, service, driver, images, storage, azure"]
|
keywords = ["registry, service, driver, images, storage, azure"]
|
||||||
|
[menu.main]
|
||||||
|
parent = "smn_storagedrivers"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
title = "Filesystem storage driver"
|
title = "Filesystem storage driver"
|
||||||
description = "Explains how to use the filesystem storage drivers"
|
description = "Explains how to use the filesystem storage drivers"
|
||||||
keywords = ["registry, service, driver, images, storage, filesystem"]
|
keywords = ["registry, service, driver, images, storage, filesystem"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_storagedrivers"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
title = "GCS storage driver"
|
title = "GCS storage driver"
|
||||||
description = "Explains how to use the Google Cloud Storage drivers"
|
description = "Explains how to use the Google Cloud Storage drivers"
|
||||||
keywords = ["registry, service, driver, images, storage, gcs, google, cloud"]
|
keywords = ["registry, service, driver, images, storage, gcs, google, cloud"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_storagedrivers"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -1,7 +1,66 @@
|
|||||||
<!--[metadata]>
|
<!--[metadata]>
|
||||||
+++
|
+++
|
||||||
draft=true
|
title = "Storage Driver overview"
|
||||||
title = "List of storage drivers"
|
description = "Explains how to use storage drivers"
|
||||||
description = "Placeholder for redesign"
|
keywords = ["registry, on-prem, images, tags, repository, distribution, storage drivers, advanced"]
|
||||||
|
aliases = ["/registry/storagedrivers/"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_storagedrivers"
|
||||||
|
identifier="storage_index"
|
||||||
|
weight=-1
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
|
||||||
|
# Docker Registry Storage Driver
|
||||||
|
|
||||||
|
This document describes the registry storage driver model, implementation, and explains how to contribute new storage drivers.
|
||||||
|
|
||||||
|
## Provided Drivers
|
||||||
|
|
||||||
|
This storage driver package comes bundled with several drivers:
|
||||||
|
|
||||||
|
- [inmemory](inmemory.md): A temporary storage driver using a local inmemory map. This exists solely for reference and testing.
|
||||||
|
- [filesystem](filesystem.md): A local storage driver configured to use a directory tree in the local filesystem.
|
||||||
|
- [s3](s3.md): A driver storing objects in an Amazon Simple Storage Solution (S3) bucket.
|
||||||
|
- [azure](azure.md): A driver storing objects in [Microsoft Azure Blob Storage](http://azure.microsoft.com/en-us/services/storage/).
|
||||||
|
- [swift](swift.md): A driver storing objects in [Openstack Swift](http://docs.openstack.org/developer/swift/).
|
||||||
|
- [oss](oss.md): A driver storing objects in [Aliyun OSS](http://www.aliyun.com/product/oss).
|
||||||
|
- [gcs](gcs.md): A driver storing objects in a [Google Cloud Storage](https://cloud.google.com/storage/) bucket.
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
Storage drivers are required to implement the `storagedriver.StorageDriver` interface provided in `storagedriver.go`, which includes methods for reading, writing, and deleting content, as well as listing child objects of a specified prefix key.
|
||||||
|
|
||||||
|
Storage drivers are intended to be written in Go, providing compile-time
|
||||||
|
validation of the `storagedriver.StorageDriver` interface.
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
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 such storage driver can be found,
|
||||||
|
`factory.Create` will return an `InvalidStorageDriverError`.
|
||||||
|
|
||||||
|
## Driver Contribution
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
#### Registering
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
Storage driver test suites are provided in
|
||||||
|
`storagedriver/testsuites/testsuites.go` and may be used for any storage
|
||||||
|
driver written in Go. Tests can be registered using the `RegisterSuite`
|
||||||
|
function, which run the same set of tests for any registered drivers.
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
title = "In-memory storage driver"
|
title = "In-memory storage driver"
|
||||||
description = "Explains how to use the in-memory storage drivers"
|
description = "Explains how to use the in-memory storage drivers"
|
||||||
keywords = ["registry, service, driver, images, storage, in-memory"]
|
keywords = ["registry, service, driver, images, storage, in-memory"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_storagedrivers"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
13
docs/storage-drivers/menu.md
Normal file
13
docs/storage-drivers/menu.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<!--[metadata]>
|
||||||
|
+++
|
||||||
|
title = "Storage Drivers"
|
||||||
|
description = "Storage Drivers"
|
||||||
|
keywords = ["registry, on-prem, images, tags, repository, distribution"]
|
||||||
|
type = "menu"
|
||||||
|
[menu.main]
|
||||||
|
identifier="smn_storagedrivers"
|
||||||
|
parent="smn_registry"
|
||||||
|
weight=7
|
||||||
|
+++
|
||||||
|
<![end-metadata]-->
|
||||||
|
|
@ -3,6 +3,8 @@
|
|||||||
title = "Aliyun OSS storage driver"
|
title = "Aliyun OSS storage driver"
|
||||||
description = "Explains how to use the Aliyun OSS storage driver"
|
description = "Explains how to use the Aliyun OSS storage driver"
|
||||||
keywords = ["registry, service, driver, images, storage, OSS, aliyun"]
|
keywords = ["registry, service, driver, images, storage, OSS, aliyun"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_storagedrivers"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
title = "S3 storage driver"
|
title = "S3 storage driver"
|
||||||
description = "Explains how to use the S3 storage drivers"
|
description = "Explains how to use the S3 storage drivers"
|
||||||
keywords = ["registry, service, driver, images, storage, S3"]
|
keywords = ["registry, service, driver, images, storage, S3"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_storagedrivers"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
title = "Swift storage driver"
|
title = "Swift storage driver"
|
||||||
description = "Explains how to use the OpenStack swift storage driver"
|
description = "Explains how to use the OpenStack swift storage driver"
|
||||||
keywords = ["registry, service, driver, images, storage, swift"]
|
keywords = ["registry, service, driver, images, storage, swift"]
|
||||||
|
[menu.main]
|
||||||
|
parent="smn_storagedrivers"
|
||||||
+++
|
+++
|
||||||
<![end-metadata]-->
|
<![end-metadata]-->
|
||||||
|
|
||||||
|
@ -1,64 +0,0 @@
|
|||||||
<!--[metadata]>
|
|
||||||
+++
|
|
||||||
title = "Storage Drivers"
|
|
||||||
description = "Explains how to use storage drivers"
|
|
||||||
keywords = ["registry, on-prem, images, tags, repository, distribution, storage drivers, advanced"]
|
|
||||||
aliases = ["/registry/storage-drivers/"]
|
|
||||||
[menu.main]
|
|
||||||
parent="smn_registry_ref"
|
|
||||||
+++
|
|
||||||
<![end-metadata]-->
|
|
||||||
|
|
||||||
|
|
||||||
# Docker Registry Storage Driver
|
|
||||||
|
|
||||||
This document describes the registry storage driver model, implementation, and explains how to contribute new storage drivers.
|
|
||||||
|
|
||||||
## Provided Drivers
|
|
||||||
|
|
||||||
This storage driver package comes bundled with several drivers:
|
|
||||||
|
|
||||||
- [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.md): A local storage driver configured to use a directory tree in the local filesystem.
|
|
||||||
- [s3](storage-drivers/s3.md): A driver storing objects in an Amazon Simple Storage Solution (S3) bucket.
|
|
||||||
- [azure](storage-drivers/azure.md): A driver storing objects in [Microsoft Azure Blob Storage](http://azure.microsoft.com/en-us/services/storage/).
|
|
||||||
- [swift](storage-drivers/swift.md): A driver storing objects in [Openstack Swift](http://docs.openstack.org/developer/swift/).
|
|
||||||
- [oss](storage-drivers/oss.md): A driver storing objects in [Aliyun OSS](http://www.aliyun.com/product/oss).
|
|
||||||
- [gcs](storage-drivers/gcs.md): A driver storing objects in a [Google Cloud Storage](https://cloud.google.com/storage/) bucket.
|
|
||||||
|
|
||||||
## 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.
|
|
||||||
|
|
||||||
Storage drivers are required to implement the `storagedriver.StorageDriver` interface provided in `storagedriver.go`, which includes methods for reading, writing, and deleting content, as well as listing child objects of a specified prefix key.
|
|
||||||
|
|
||||||
Storage drivers are intended to be written in Go, providing compile-time
|
|
||||||
validation of the `storagedriver.StorageDriver` interface.
|
|
||||||
|
|
||||||
## 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.
|
|
||||||
|
|
||||||
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 such storage driver can be found,
|
|
||||||
`factory.Create` will return an `InvalidStorageDriverError`.
|
|
||||||
|
|
||||||
## Driver Contribution
|
|
||||||
|
|
||||||
### 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.
|
|
||||||
|
|
||||||
#### Registering
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
## Testing
|
|
||||||
|
|
||||||
Storage driver test suites are provided in
|
|
||||||
`storagedriver/testsuites/testsuites.go` and may be used for any storage
|
|
||||||
driver written in Go. Tests can be registered using the `RegisterSuite`
|
|
||||||
function, which run the same set of tests for any registered drivers.
|
|
Loading…
Reference in New Issue
Block a user