Browse code

Rewrite Official Repositories page.

The existing page is focused on listing a set of requirements for
proposing a new repository. This information has become outdated and is
duplicated in the `docker-library/official-images` and
`docker-library/docs` GitHub repositories. This PR rewrites the
Official Repositories page to describe what they actually are, and
defers to GitHub/IRC for the subset of users that are interested in
contributing. I also removed the requirement to contact
partners@docker.com and made it optional to reduce the barrier to entry.

Signed-off-by: Peter Salvatore <peter@psftw.com>

Peter Salvatore authored on 2015/04/22 12:36:27
Showing 8 changed files
... ...
@@ -76,7 +76,7 @@ pages:
76 76
 - ['docker-hub/accounts.md', 'Docker Hub', 'Accounts']
77 77
 - ['docker-hub/repos.md', 'Docker Hub', 'Repositories']
78 78
 - ['docker-hub/builds.md', 'Docker Hub', 'Automated Builds']
79
-- ['docker-hub/official_repos.md', 'Docker Hub', 'Official repo guidelines']
79
+- ['docker-hub/official_repos.md', 'Docker Hub', 'Official Repositories']
80 80
 
81 81
 # Docker Hub Enterprise:
82 82
 - ['docker-hub-enterprise/index.md', 'Docker Hub Enterprise', 'Overview' ]
... ...
@@ -65,4 +65,4 @@ There are lots more resources available to help you write your 'Dockerfile`.
65 65
 * There's a [complete guide to all the instructions](/reference/builder/) available for use in a `Dockerfile` in the reference section.
66 66
 * To help you write a clear, readable, maintainable `Dockerfile`, we've also
67 67
 written a [`Dockerfile` Best Practices guide](/articles/dockerfile_best-practices).
68
-* If you're working on an Official Repo, be sure to check out the [Official Repo Guidelines](/docker-hub/official_repos/).
68
+* If your goal is to create a new Official Repository, be sure to read up on Docker's [Official Repositories](/docker-hub/official_repos/).
... ...
@@ -419,9 +419,9 @@ fail catastrophically if the new build's context is missing the resource being
419 419
 added. Adding a separate tag, as recommended above, will help mitigate this by
420 420
 allowing the `Dockerfile` author to make a choice.
421 421
 
422
-## Examples for official repositories
422
+## Examples for Official Repositories
423 423
 
424
-These Official Repos have exemplary `Dockerfile`s:
424
+These Official Repositories have exemplary `Dockerfile`s:
425 425
 
426 426
 * [Go](https://registry.hub.docker.com/_/golang/)
427 427
 * [Perl](https://registry.hub.docker.com/_/perl/)
... ...
@@ -1,189 +1,106 @@
1
-page_title: Guidelines for official repositories on Docker Hub
1
+page_title: Official Repositories on Docker Hub
2 2
 page_description: Guidelines for Official Repositories on Docker Hub
3 3
 page_keywords: Docker, docker, registry, accounts, plans, Dockerfile, Docker Hub, docs, official, image, documentation
4 4
 
5
-# Guidelines for creating and documenting official repositories
6
-
7
-## Introduction
8
-
9
-You’ve been given the job of creating an image for an Official Repository
10
-hosted on [Docker Hub Registry](https://registry.hub.docker.com/). These are
11
-our guidelines for getting that task done. Even if you’re not
12
-planning to create an Official Repo, you can think of these guidelines as best
13
-practices for image creation generally.
14
-
15
-This document consists of two major sections:
16
-
17
-* A list of expected files, resources and supporting items for your image,
18
-along with best practices for creating those items
19
-* Examples embodying those practices
20
-
21
-## Expected files and resources
22
-
23
-### A Git repository
24
-
25
-Your image needs to live in a Git repository, preferably on GitHub. (If you’d
26
-like to use a different provider, please [contact us](mailto:feedback@docker.com)
27
-directly.) Docker **strongly** recommends that this repo be publicly
28
-accessible.
29
-
30
-If the repo is private or has otherwise limited access, you must provide a
31
-means of at least “read-only” access for both general users and for the
32
-docker-library maintainers, who need access for review and building purposes.
33
-
34
-### A Dockerfile
35
-
36
-Complete information on `Dockerfile`s can be found in the [Reference section](https://docs.docker.com/reference/builder/).
37
-We also have a page discussing [best practices for writing `Dockerfile`s](/articles/dockerfile_best-practices).
38
-Your `Dockerfile` should adhere to the following:
39
-
40
-* It must be written either by using `FROM scratch` or be based on another,
41
-established Official Image.
42
-* It must follow `Dockerfile` best practices. These are discussed on the
43
-[best practices page](/articles/dockerfile_best-practices). In addition,
44
-Docker engineer Michael Crosby has some good tips for `Dockerfiles` in
45
-this [blog post](http://crosbymichael.com/dockerfile-best-practices-take-2.html).
46
-
47
-While [`ONBUILD` triggers](https://docs.docker.com/reference/builder/#onbuild)
48
-are not required, if you choose to use them you should:
49
-
50
-* Build both `ONBUILD` and non-`ONBUILD` images, with the `ONBUILD` image
51
-built `FROM` the non-`ONBUILD` image.
52
-* The `ONBUILD` image should be specifically tagged, for example, `ruby:
53
-latest`and `ruby:onbuild`, or `ruby:2` and  `ruby:2-onbuild`
54
-
55
-### A short description
56
-
57
-Include a brief description of your image (in plaintext). Only one description
58
-is required; you don’t need additional descriptions for each tag. The file
59
-should also: 
60
-
61
-* Be named `README-short.txt`
62
-* Reside in the repo for the “latest” tag
63
-* Not exceed 100 characters
64
-
65
-### A logo
66
-
67
-Include a logo of your company or the product (png format preferred). Only one
68
-logo is required; you don’t need additional logo files for each tag. The logo
69
-file should have the following characteristics: 
70
-
71
-* Be named `logo.png`
72
-* Should reside in the repo for the “latest” tag
73
-* Should fit inside a 200px square, maximized in one dimension (preferably the
74
-width)
75
-* Square or wide (landscape) is preferred over tall (portrait), but exceptions
76
-can be made based on the logo needed
77
-
78
-### A long description
79
-
80
-Include a comprehensive description of your image (in Markdown format, GitHub 
81
-flavor preferred). Only one description is required; you don’t need additional
82
-descriptions for each tag. The file should also: 
83
-
84
-* Be named `README.md`
85
-* Reside in the repo for the “latest” tag
86
-* Be no longer than absolutely necessary, while still addressing all the
87
-content requirements
88
-
89
-In terms of content, the long description must include the following sections:
90
-
91
-* Overview & links
92
-* How-to/usage
93
-* Issues & contributions
94
-
95
-#### Overview and links
96
-
97
-This section should provide:
98
-
99
-* an overview of the software contained in the image, similar to the
100
-introduction in a Wikipedia entry
101
-
102
-* a selection of links to outside resources that help to describe the software
103
-
104
-* a *mandatory* link to the `Dockerfile`
105
-
106
-#### How-to/usage
107
-
108
-A section that describes how to run and use the image, including common use
109
-cases and example `Dockerfile`s (if applicable). Try to provide clear, step-by-
110
-step instructions wherever possible.
111
-
112
-##### Issues and contributions
113
-
114
-In this section, point users to any resources that can help them contribute to
115
-the project. Include contribution guidelines and any specific instructions
116
-related to your development practices. Include a link to
117
-[Docker’s resources for contributors](https://docs.docker.com/contributing/contributing/).
118
-Be sure to include contact info, handles, etc. for official maintainers.
119
-
120
-Also include information letting users know where they can go for help and how
121
-they can file issues with the repo. Point them to any specific IRC channels,
122
-issue trackers, contacts, additional “how-to” information or other resources.
123
-
124
-### License
125
-
126
-Include a file, `LICENSE`, of any applicable license.  Docker recommends using
127
-the license of the software contained in the image, provided it allows Docker,
128
-Inc. to legally build and distribute the image. Otherwise, Docker recommends
129
-adopting the [Expat license](http://directory.fsf.org/wiki/License:Expat)
130
-(a.k.a., the MIT or X11 license).
131
-
132
-## Examples
133
-
134
-Below are sample short and long description files for an imaginary image
135
-containing Ruby on Rails.
136
-
137
-### Short description
138
-
139
-`README-short.txt`
140
-
141
-`Ruby on Rails is an open-source application framework written in Ruby. It emphasizes best practices such as convention over configuration, active record pattern, and the model-view-controller pattern.`
142
-
143
-### Long description
144
-
145
-`README.md`
146
-
147
-```markdown
148
-# What is Ruby on Rails
149
-
150
-Ruby on Rails, often simply referred to as Rails, is an open source web application framework which runs via the Ruby programming language. It is a full-stack framework: it allows creating pages and applications that gather information from the web server, talk to or query the database, and render templates out of the box. As a result, Rails features a routing system that is independent of the web server.
151
-
152
-> [wikipedia.org/wiki/Ruby_on_Rails](https://en.wikipedia.org/wiki/Ruby_on_Rails)
153
-
154
-# How to use this image
155
-
156
-## Create a `Dockerfile` in your rails app project
157
-
158
-    FROM rails:onbuild
159
-
160
-Put this file in the root of your app, next to the `Gemfile`.
161
-
162
-This image includes multiple `ONBUILD` triggers so that should be all that you need for most applications. The build will `ADD . /usr/src/app`, `RUN bundle install`, `EXPOSE 3000`, and set the default command to `rails server`.
163
-
164
-Then build and run the Docker image.
165
-
166
-    docker build -t my-rails-app .
167
-    docker run --name some-rails-app -d my-rails-app
168
-
169
-Test it by visiting `http://container-ip:3000` in a browser. On the other hand, if you need access outside the host on port 8080:
170
-
171
-    docker run --name some-rails-app -p 8080:3000 -d my-rails-app
172
-
173
-Then go to `http://localhost:8080` or `http://host-ip:8080` in a browser.
174
-```
175
-
176
-For more examples, take a look at these repos: 
177
-
178
-* [Go](https://github.com/docker-library/golang)
179
-* [PostgreSQL](https://github.com/docker-library/postgres)
180
-* [Buildpack-deps](https://github.com/docker-library/buildpack-deps)
181
-* ["Hello World" minimal container](https://github.com/docker-library/hello-world)
182
-* [Node](https://github.com/docker-library/node)
183
-
184
-## Submit your repo
185
-
186
-Once you've checked off everything in these guidelines, and are confident your
187
-image is ready for primetime, please contact us at
188
-[partners@docker.com](mailto:partners@docker.com) to have your project
189
-considered for the Official Repos program.
5
+# Official Repositories on Docker Hub
6
+
7
+The Docker [Official Repositories](http://registry.hub.docker.com/official) are
8
+a curated set of Docker repositories that are promoted on Docker Hub and
9
+supported by Docker, Inc. They are designed to:
10
+
11
+* Provide essential base OS repositories (for example,
12
+  [`ubuntu`](https://registry.hub.docker.com/_/ubuntu/),
13
+  [`centos`](https://registry.hub.docker.com/_/centos/)) that serve as the
14
+  starting point for the majority of users.
15
+
16
+* Provide drop-in solutions for popular programming language runtimes, data
17
+  stores, and other services, similar to what a Platform-as-a-Service (PAAS)
18
+  would offer.
19
+
20
+* Exemplify [`Dockerfile` best practices](/articles/dockerfile_best-practices)
21
+  and provide clear documentation to serve as a reference for other `Dockerfile`
22
+  authors.
23
+
24
+* Ensure that security updates are applied in a timely manner. This is
25
+  particularly important as many Official Repositories are some of the most
26
+  popular on Docker Hub.
27
+
28
+* Provide a channel for software vendors to redistribute up-to-date and
29
+  supported versions of their products. Organization accounts on Docker Hub can
30
+  also serve this purpose, without the careful review or restrictions on what
31
+  can be published.
32
+
33
+Docker, Inc. sponsors a dedicated team that is responsible for reviewing and
34
+publishing all Official Repositories content. This team works in collaboration
35
+with upstream software maintainers, security experts, and the broader Docker
36
+community.
37
+
38
+While it is preferrable to have upstream software authors maintaining their
39
+corresponding Official Repositories, this is not a strict requirement. Creating
40
+and maintaining images for Official Repositories is a public process. It takes
41
+place openly on GitHub where participation is encouraged. Anyone can provide
42
+feedback, contribute code, suggest process changes, or even propose a new
43
+Official Repository.
44
+
45
+## Should I use Official Repositories?
46
+
47
+New Docker users are encouraged to use the Official Repositories in their
48
+projects. These repositories have clear documentation, promote best practices,
49
+and are designed for the most common use cases. Advanced users are encouraged to
50
+review the Official Repositories as part of their `Dockerfile` learning process.
51
+
52
+A common rationale for diverging from Official Repositories is to optimize for
53
+image size. For instance, many of the programming language stack images contain
54
+a complete build toolchain to support installation of modules that depend on
55
+optimized code. An advanced user could build a custom image with just the
56
+necessary pre-compiled libraries to save space.
57
+
58
+A number of language stacks such as
59
+[`python`](https://registry.hub.docker.com/_/python/) and
60
+[`ruby`](https://registry.hub.docker.com/_/ruby/) have `-slim` tag variants
61
+designed to fill the need for optimization.  Even when these "slim" variants are
62
+insufficient, it is still recommended to inherit from an Official Repository
63
+base OS image to leverage the ongoing maintenance work, rather than duplicating
64
+these efforts.
65
+
66
+## How can I get involved?
67
+
68
+All Official Repositories contain a **User Feedback** section in their
69
+documentation which covers the details for that specific repository. In most
70
+cases, the GitHub repository which contains the Dockerfiles for an Official
71
+Repository also has an active issue tracker. General feedback and support
72
+questions should be directed to `#docker-library` on Freenode IRC.
73
+
74
+## How do I create a new Official Repository?
75
+
76
+From a high level, an Official Repository starts out as a proposal in the form
77
+of a set of GitHub pull requests.  You'll find detailed and objective proposal
78
+requirements in the following GitHub repositories:
79
+
80
+* [docker-library/official-images](https://github.com/docker-library/official-images)
81
+
82
+* [docker-library/docs](https://github.com/docker-library/docs)
83
+
84
+The Official Repositories team, with help from community contributors, formally
85
+review each proposal and provide feedback to the author. This initial review
86
+process may require a bit of back and forth before the proposal is accepted.
87
+
88
+There are also subjective considerations during the review process. These
89
+subjective concerns boil down to the basic question: "is this image generally
90
+useful?"  For example, the [`python`](https://registry.hub.docker.com/_/python/)
91
+Official Repository is "generally useful" to the large Python developer
92
+community, whereas an obscure text adventure game written in Python last week is
93
+not.
94
+
95
+When a new proposal is accepted, the author becomes responsibile for keeping
96
+their images up-to-date and responding to user feedback.  The Official
97
+Repositories team becomes responsibile for publishing the images and
98
+documentation on Docker Hub.  Updates to the Official Repository follow the same
99
+pull request process, though with less review. The Official Repositories team
100
+ultimately acts as a gatekeeper for all changes, which helps mitigate the risk
101
+of quality and security issues from being introduced.
102
+
103
+> **Note**: If you are interested in proposing an Official Repository, but would
104
+> like to discuss it with Docker, Inc. privately first, please send your
105
+> inquiries to partners@docker.com.  There is no fast-track or pay-for-status
106
+> option.
... ...
@@ -51,10 +51,10 @@ private to public.
51 51
 You can also collaborate on Docker Hub with organizations and groups.
52 52
 You can read more about that [here](accounts/).
53 53
 
54
-## Official repositories
54
+## Official Repositories
55 55
 
56
-The Docker Hub contains a number of [official
57
-repositories](http://registry.hub.docker.com/official). These are
56
+The Docker Hub contains a number of [Official
57
+Repositories](http://registry.hub.docker.com/official). These are
58 58
 certified repositories from vendors and contributors to Docker. They
59 59
 contain Docker images from vendors like Canonical, Oracle, and Red Hat
60 60
 that you can use to build applications and services.
... ...
@@ -63,9 +63,9 @@ If you use Official Repositories you know you're using a supported,
63 63
 optimized and up-to-date image to power your applications.
64 64
 
65 65
 > **Note:**
66
-> If you would like to contribute an official repository for your
67
-> organization, product or team you can see more information
68
-> [here](https://github.com/docker/stackbrew).
66
+> If you would like to contribute an Official Repository for your
67
+> organization, see [Official Repositories on Docker
68
+> Hub](/docker-hub/official_repos) for more information.
69 69
 
70 70
 ## Private repositories
71 71
 
... ...
@@ -29,7 +29,7 @@ A Fully Qualified Image Name (FQIN) can be made up of 3 parts:
29 29
 
30 30
 If you create a new repository which you want to share, you will need to
31 31
 set at least the `user_name`, as the `default` blank `user_name` prefix is
32
-reserved for official Docker images.
32
+reserved for [Official Repositories](/docker-hub/official_repos).
33 33
 
34 34
 For more information see [*Working with
35 35
 Repositories*](/userguide/dockerrepos/#working-with-the-repository)
... ...
@@ -131,11 +131,11 @@ term `sinatra`.
131 131
 We can see we've returned a lot of images that use the term `sinatra`. We've
132 132
 returned a list of image names, descriptions, Stars (which measure the social
133 133
 popularity of images - if a user likes an image then they can "star" it), and
134
-the Official and Automated build statuses. Official repositories are built and
135
-maintained by the [Stackbrew](https://github.com/docker/stackbrew) project,
136
-and Automated repositories are [Automated Builds](
137
-/userguide/dockerrepos/#automated-builds) that allow you to validate the source
138
-and content of an image.
134
+the Official and Automated build statuses.
135
+[Official Repositories](/docker-hub/official_repos) are a carefully curated set
136
+of Docker repositories supported by Docker, Inc.  Automated repositories are
137
+[Automated Builds](/userguide/dockerrepos/#automated-builds) that allow you to
138
+validate the source and content of an image.
139 139
 
140 140
 We've reviewed the images available to use and we decided to use the
141 141
 `training/sinatra` image. So far we've seen two types of images repositories,
... ...
@@ -51,12 +51,12 @@ name, user name, or description:
51 51
     tianon/centos  CentOS 5 and 6, created using rinse instea...   21
52 52
     ...
53 53
 
54
-There you can see two example results: `centos` and
55
-`tianon/centos`. The second result shows that it comes from
56
-the public repository of a user, named `tianon/`, while the first result,
57
-`centos`, doesn't explicitly list a repository which means that it comes from the
58
-trusted top-level namespace. The `/` character separates a user's
59
-repository from the image name.
54
+There you can see two example results: `centos` and `tianon/centos`. The second
55
+result shows that it comes from the public repository of a user, named
56
+`tianon/`, while the first result, `centos`, doesn't explicitly list a
57
+repository which means that it comes from the trusted top-level namespace for
58
+[Official Repositories](/docker-hub/official_repos). The `/` character separates
59
+a user's repository from the image name.
60 60
 
61 61
 Once you've found the image you want, you can download it with `docker pull <imagename>`:
62 62