Browse code

Rewrite the Contributing tree as Project in preparation for the Docker birthday.

Signed-off-by: Mary Anthony <mary.anthony@docker.com>

Optimize images, remove old file, add metadata tagging

Signed-off-by: Mary Anthony <mary.anthony@docker.com>

Mary Anthony authored on 2015/03/07 03:01:31
Showing 47 changed files
... ...
@@ -169,8 +169,28 @@ pages:
169 169
 - ['terms/filesystem.md', '**HIDDEN**']
170 170
 - ['terms/image.md', '**HIDDEN**']
171 171
 
172
+<<<<<<< HEAD
173
+<<<<<<< HEAD
174
+# Project:
175
+- ['project/index.md', '**HIDDEN**']
176
+- ['project/who-written-for.md', 'Project', 'README first']
177
+=======
172 178
 # Contribute:
173
-- ['contributing/index.md', '**HIDDEN**']
174
-- ['contributing/contributing.md', 'Contribute', 'Contributing']
175
-- ['contributing/devenvironment.md', 'Contribute', 'Development environment']
176
-- ['contributing/docs_style-guide.md', 'Contribute', 'Documentation style guide']
179
+- ['project/index.md', '**HIDDEN**']
180
+- ['project/project.md', 'Contribute', 'Contributing']
181
+# Birthday Tree
182
+- ['project/who-written-for.md', 'Project', 'README for contributors']
183
+>>>>>>> a252b2f... Renaming and removing old files
184
+=======
185
+# Project:
186
+- ['project/index.md', '**HIDDEN**']
187
+- ['project/who-written-for.md', 'Project', 'README first']
188
+>>>>>>> 6f40419... Tweaking from last run thru
189
+- ['project/set-up-prereqs.md', 'Project', 'Set up prerequisites'] 
190
+- ['project/set-up-dev-env.md', 'Project', 'Work with a development container'] 
191
+- ['project/test-and-docs.md', 'Project', 'Run tests and test documentation']
192
+- ['project/make-a-contribution.md', 'Project', 'Make a project contribution'] 
193
+- ['project/advanced-contributing.md', 'Project', 'Advanced contributing']
194
+- ['project/get-help.md', 'Project', 'Where to get help']
195
+- ['project/coding-style.md', 'Project', 'Coding style guide']
196
+- ['project/doc-style.md', 'Project', 'Documentation style guide']
177 197
deleted file mode 100644
... ...
@@ -1,7 +0,0 @@
1
-# Contributing
2
-
3
-## Contents:
4
-
5
- - [Contributing to Docker](contributing/)
6
- - [Setting Up a Dev Environment](devenvironment/)
7
-
8 1
deleted file mode 100644
... ...
@@ -1,24 +0,0 @@
1
-page_title: Contribution Guidelines
2
-page_description: Contribution guidelines: create issues, conventions, pull requests
3
-page_keywords: contributing, docker, documentation, help, guideline
4
-
5
-# Contributing to Docker
6
-
7
-Want to hack on Docker? Awesome!
8
-
9
-The repository includes [all the instructions you need to get started](
10
-https://github.com/docker/docker/blob/master/CONTRIBUTING.md).
11
-
12
-The [developer environment Dockerfile](
13
-https://github.com/docker/docker/blob/master/Dockerfile)
14
-specifies the tools and versions used to test and build Docker.
15
-
16
-If you're making changes to the documentation, see the [README.md](
17
-https://github.com/docker/docker/blob/master/docs/README.md).
18
-
19
-The [documentation environment Dockerfile](
20
-https://github.com/docker/docker/blob/master/docs/Dockerfile)
21
-specifies the tools and versions used to build the Documentation.
22
-
23
-Further interesting details can be found in the [Packaging hints](
24
-https://github.com/docker/docker/blob/master/project/PACKAGERS.md).
25 1
deleted file mode 100644
... ...
@@ -1,169 +0,0 @@
1
-page_title: Setting Up a Dev Environment
2
-page_description: Guides on how to contribute to docker
3
-page_keywords: Docker, documentation, developers, contributing, dev environment
4
-
5
-# Setting Up a Dev Environment
6
-
7
-To make it easier to contribute to Docker, we provide a standard
8
-development environment. It is important that the same environment be
9
-used for all tests, builds and releases. The standard development
10
-environment defines all build dependencies: system libraries and
11
-binaries, go environment, go dependencies, etc.
12
-
13
-**Things you need:**
14
-
15
- * Docker
16
- * git
17
- * make
18
-
19
-## Install Docker
20
-
21
-Docker's build environment itself is a Docker container, so the first
22
-step is to install Docker on your system.
23
-
24
-You can follow the [install instructions most relevant to your
25
-system](https://docs.docker.com/installation/). Make sure you
26
-have a working, up-to-date docker installation, then continue to the
27
-next step.
28
-
29
-## Install tools used for this tutorial
30
-
31
-Install `git`; honest, it's very good. You can use
32
-other ways to get the Docker source, but they're not anywhere near as
33
-easy.
34
-
35
-Install `make`. This tutorial uses our base Makefile
36
-to kick off the docker containers in a repeatable and consistent way.
37
-Again, you can do it in other ways but you need to do more work.
38
-
39
-## Check out the Source
40
-
41
-    $ git clone https://git@github.com/docker/docker
42
-    $ cd docker
43
-
44
-To checkout a different revision just use `git checkout`
45
-with the name of branch or revision number.
46
-
47
-## Build the Environment
48
-
49
-This following command builds a development environment using the
50
-`Dockerfile` in the current directory. Essentially, it installs all
51
-the build and runtime dependencies necessary to build and test Docker.
52
-Your first build will take some time to complete. On Linux systems and on Mac
53
-OS X from within the `boot2docker` shell:
54
-
55
-    $ make build
56
-    
57
-> **Note**:
58
-> On Mac OS X, the Docker make targets such as `build`, `binary`, and `test`
59
-> should **not** be built by the 'root' user. Therefore, you shouldn't use `sudo` when 
60
-> running these commands on OS X.
61
-> On Linux, we suggest you add your current user to the `docker` group via
62
-> [these
63
-> instructions](http://docs.docker.com/installation/ubuntulinux/#giving-non-root-access).
64
-
65
-If the build is successful, congratulations! You have produced a clean
66
-build of docker, neatly encapsulated in a standard build environment.
67
-
68
-
69
-## Build the Docker Binary
70
-
71
-To create the Docker binary, run this command:
72
-
73
-    $ make binary
74
-
75
-This will create the Docker binary in `./bundles/<version>-dev/binary/`. If you
76
-do not see files in the `./bundles` directory in your host, your `BIND_DIR`
77
-setting is not set quite right. You want to run the following command:
78
-
79
-    $ make BIND_DIR=. binary
80
-
81
-If you are on a non-Linux platform, e.g., OSX, you'll want to run `make cross`
82
-or `make BIND_DIR=. cross`.
83
-
84
-### Using your built Docker binary
85
-
86
-The binary is available outside the container in the directory
87
-`./bundles/<version>-dev/binary/`. You can swap your
88
-host docker executable with this binary for live testing - for example,
89
-on ubuntu:
90
-
91
-    $ sudo service docker stop ; sudo cp $(which docker) $(which docker)_ ; sudo cp ./bundles/<version>-dev/binary/docker-<version>-dev $(which docker);sudo service docker start
92
-
93
-> **Note**: 
94
-> Its safer to run the tests below before swapping your hosts docker binary.
95
-
96
-## Run the Tests
97
-
98
-To execute the test cases, run this command:
99
-
100
-    $ make test
101
-
102
-If the test are successful then the tail of the output should look
103
-something like this
104
-
105
-    --- PASS: TestWriteBroadcaster (0.00 seconds)
106
-    === RUN TestRaceWriteBroadcaster
107
-    --- PASS: TestRaceWriteBroadcaster (0.00 seconds)
108
-    === RUN TestTruncIndex
109
-    --- PASS: TestTruncIndex (0.00 seconds)
110
-    === RUN TestCompareKernelVersion
111
-    --- PASS: TestCompareKernelVersion (0.00 seconds)
112
-    === RUN TestHumanSize
113
-    --- PASS: TestHumanSize (0.00 seconds)
114
-    === RUN TestParseHost
115
-    --- PASS: TestParseHost (0.00 seconds)
116
-    === RUN TestParseRepositoryTag
117
-    --- PASS: TestParseRepositoryTag (0.00 seconds)
118
-    === RUN TestGetResolvConf
119
-    --- PASS: TestGetResolvConf (0.00 seconds)
120
-    === RUN TestParseRelease
121
-    --- PASS: TestParseRelease (0.00 seconds)
122
-    === RUN TestDependencyGraphCircular
123
-    --- PASS: TestDependencyGraphCircular (0.00 seconds)
124
-    === RUN TestDependencyGraph
125
-    --- PASS: TestDependencyGraph (0.00 seconds)
126
-    PASS
127
-    ok      github.com/docker/docker/utils        0.017s
128
-
129
-If `$TESTFLAGS` is set in the environment, it will pass extra arguments
130
-to `go test`. You can use this to select certain tests to run, e.g.,
131
-
132
-    $ TESTFLAGS='-test.run \^TestBuild\$' make test
133
-
134
-Only those test cases matching the regular expression inside quotation marks will be tested.
135
-
136
-If the output indicates "FAIL" and you see errors like this:
137
-
138
-    server.go:1302 Error: Insertion failed because database is full: database or disk is full
139
-
140
-    utils_test.go:179: Error copy: exit status 1 (cp: writing '/tmp/docker-testd5c9-[...]': No space left on device
141
-
142
-Then you likely don't have enough memory available the test suite. 2GB
143
-is recommended.
144
-
145
-## Use Docker
146
-
147
-You can run an interactive session in the newly built container:
148
-
149
-    $ make shell
150
-
151
-    # type 'exit' or Ctrl-D to exit
152
-
153
-## Build And View The Documentation
154
-
155
-If you want to read the documentation from a local website, or are
156
-making changes to it, you can build the documentation and then serve it
157
-by:
158
-
159
-    $ make docs
160
-    
161
-    # when its done, you can point your browser to http://yourdockerhost:8000
162
-    # type Ctrl-C to exit
163
-
164
-**Need More Help?**
165
-
166
-If you need more help then hop on to the [#docker-dev IRC
167
-channel](irc://chat.freenode.net#docker-dev) or post a message on the
168
-[Docker developer mailing
169
-list](https://groups.google.com/d/forum/docker-dev).
170 1
deleted file mode 100644
... ...
@@ -1,276 +0,0 @@
1
-page_title: Style Guide for Docker Documentation
2
-page_description: Style guide for Docker documentation describing standards and conventions for contributors
3
-page_keywords: style, guide, docker, documentation
4
-
5
-# Docker documentation: style & grammar conventions
6
-
7
-## Style standards
8
-
9
-Over time, different publishing communities have written standards for the style
10
-and grammar they prefer in their publications. These standards are called
11
-[style guides](http://en.wikipedia.org/wiki/Style_guide). Generally, Docker’s
12
-documentation uses the standards described in the
13
-[Associated Press's (AP) style guide](http://en.wikipedia.org/wiki/AP_Stylebook). 
14
-If a question about syntactical, grammatical, or lexical practice comes up,
15
-refer to the AP guide first. If you don’t have a copy of (or online subscription
16
-to) the AP guide, you can almost always find an answer to a specific question by
17
-searching the web. If you can’t find an answer, please ask a
18
-[maintainer](https://github.com/docker/docker/blob/master/docs/MAINTAINERS) and
19
-we will find the answer.
20
-
21
-That said, please don't get too hung up on using correct style. We'd rather have
22
-you submit good information that doesn't conform to the guide than no
23
-information at all. Docker's tech writers are always happy to help you with the
24
-prose, and we promise not to judge or use a red pen!
25
-
26
-> **Note:**
27
-> The documentation is written with paragraphs wrapped at 80 column lines to
28
-> make it easier for terminal use. You can probably set up your favorite text
29
-> editor to do this automatically for you.
30
-
31
-### Prose style
32
-
33
-In general, try to write simple, declarative prose. We prefer short,
34
-single-clause sentences and brief three-to-five sentence paragraphs. Try to
35
-choose vocabulary that is straightforward and precise. Avoid creating new terms,
36
-using obscure terms or, in particular, using a lot of jargon. For example, use
37
-"use" instead of leveraging "leverage".
38
-
39
-That said, don’t feel like you have to write for localization or for
40
-English-as-a-second-language (ESL) speakers specifically. Assume you are writing
41
-for an ordinary speaker of English with a basic university education. If your
42
-prose is simple, clear, and straightforward it will translate readily.
43
-
44
-One way to think about this is to assume Docker’s users are generally university
45
-educated and read at at least a "16th" grade level (meaning they have a
46
-university degree). You can use a [readability
47
-tester](https://readability-score.com/) to help guide your judgement. For
48
-example, the readability score for the phrase "Containers should be ephemeral"
49
-is around the 13th grade level (first year at university), and so is acceptable.
50
-
51
-In all cases, we prefer clear, concise communication over stilted, formal
52
-language. Don't feel like you have to write documentation that "sounds like
53
-technical writing."
54
-
55
-### Metaphor and figurative language
56
-
57
-One exception to the "don’t write directly for ESL" rule is to avoid the use of
58
-metaphor or other
59
-[figurative language](http://en.wikipedia.org/wiki/Literal_and_figurative_language) to
60
-describe things. There are too many cultural and social issues that can prevent
61
-a reader from correctly interpreting a metaphor.
62
-
63
-## Specific conventions
64
-
65
-Below are some specific recommendations (and a few deviations) from AP style
66
-that we use in our docs.
67
-
68
-### Contractions
69
-
70
-As long as your prose does not become too slangy or informal, it's perfectly
71
-acceptable to use contractions in our documentation. Make sure to use
72
-apostrophes correctly.
73
-
74
-### Use of dashes in a sentence.
75
-
76
-Dashes refers to the en dash (–) and the em dash (—). Dashes can be used to
77
-separate parenthetical material.
78
-
79
-Usage Example: This is an example of a Docker client – which uses the Big Widget
80
-to run – and does x, y, and z.
81
-
82
-Use dashes cautiously and consider whether commas or parentheses would work just
83
-as well. We always emphasize short, succinct sentences.
84
-
85
-More info from the always handy [Grammar Girl site](http://www.quickanddirtytips.com/education/grammar/dashes-parentheses-and-commas).
86
-
87
-### Pronouns
88
-
89
-It's okay to use first and second person pronouns. Specifically, use "we" to
90
-refer to Docker and "you" to refer to the user. For example, "We built the
91
-`exec` command so you can resize a TTY session."
92
-
93
-As much as possible, avoid using gendered pronouns ("he" and "she", etc.).
94
-Either recast the sentence so the pronoun is not needed or, less preferably,
95
-use "they" instead. If you absolutely can't get around using a gendered pronoun,
96
-pick one and stick to it. Which one you choose is up to you. One common
97
-convention is to use the pronoun of the author's gender, but if you prefer to
98
-default to "he" or "she", that's fine too.
99
-
100
-### Capitalization 
101
-
102
-#### In general
103
-
104
-Only proper nouns should be capitalized in body text. In general, strive to be
105
-as strict as possible in applying this rule. Avoid using capitals for emphasis
106
-or to denote "specialness".
107
-
108
-The word "Docker" should always be capitalized when referring to either the
109
-company or the technology. The only exception is when the term appears in a code
110
-sample.
111
-
112
-#### Starting sentences
113
-
114
-Because code samples should always be written exactly as they would appear
115
-on-screen, you should avoid starting sentences with a code sample.
116
-
117
-#### In headings
118
-
119
-Headings take sentence capitalization, meaning that only the first letter is
120
-capitalized (and words that would normally be capitalized in a sentence, e.g.,
121
-"Docker"). Do not use Title Case (i.e., capitalizing every word) for headings. Generally, we adhere to [AP style
122
-for titles](http://www.quickanddirtytips.com/education/grammar/capitalizing-titles).
123
-
124
-## Periods
125
-
126
-We prefer one space after a period at the end of a sentence, not two. 
127
-
128
-See [lists](#lists) below for how to punctuate list items.
129
-
130
-### Abbreviations and acronyms
131
-
132
-* Exempli gratia (e.g.) and id est ( i.e.): these should always have periods and
133
-are always followed by a comma.
134
-
135
-* Acronyms are pluralized by simply adding "s", e.g., PCs, OSs.
136
-
137
-* On first use on a given page, the complete term should be used, with the
138
-abbreviation or acronym in parentheses. E.g., Red Hat Enterprise Linux (RHEL).
139
-The exception is common, non-technical acronyms like AKA or ASAP. Note that
140
-acronyms other than i.e. and e.g. are capitalized.
141
-
142
-* Other than "e.g." and "i.e." (as discussed above), acronyms do not take
143
-periods, PC not P.C.
144
-
145
-
146
-### Lists
147
-
148
-When writing lists, keep the following in mind:
149
-
150
-Use bullets when the items being listed are independent of each other and the
151
-order of presentation is not important.
152
-
153
-Use numbers for steps that have to happen in order or if you have mentioned the
154
-list in introductory text. For example, if you wrote "There are three config
155
-settings available for SSL, as follows:", you would number each config setting
156
-in the subsequent list.
157
-
158
-In all lists, if an item is a complete sentence, it should end with a
159
-period. Otherwise, we prefer no terminal punctuation for list items.
160
-Each item in a list should start with a capital.
161
-
162
-### Numbers
163
-
164
-Write out numbers in body text and titles from one to ten. From 11 on, use numerals.
165
-
166
-### Notes
167
-
168
-Use notes sparingly and only to bring things to the reader's attention that are
169
-critical or otherwise deserving of being called out from the body text. Please
170
-format all notes as follows:
171
-
172
-    > **Note:**
173
-    > One line of note text
174
-    > another line of note text
175
-
176
-### Avoid excess use of "i.e."
177
-
178
-Minimize your use of "i.e.". It can add an unnecessary interpretive burden on
179
-the reader. Avoid writing "This is a thing, i.e., it is like this". Just
180
-say what it is: "This thing is …"
181
-
182
-### Preferred usages
183
-
184
-#### Login vs. log in. 
185
-
186
-A "login" is a noun (one word), as in "Enter your login". "Log in" is a compound
187
-verb (two words), as in "Log in to the terminal".
188
-
189
-### Oxford comma
190
-
191
-One way in which we differ from AP style is that Docker’s docs use the [Oxford
192
-comma](http://en.wikipedia.org/wiki/Serial_comma) in all cases. That’s our
193
-position on this controversial topic, we won't change our mind, and that’s that!
194
-
195
-### Code and UI text styling
196
-
197
-We require `code font` styling (monospace, sans-serif) for all text that refers
198
-to a command or other input or output from the CLI. This includes file paths
199
-(e.g., `/etc/hosts/docker.conf`). If you enclose text in backticks (`) markdown
200
-will style the text as code. 
201
-
202
-Text from a CLI should be quoted verbatim, even if it contains errors or its
203
-style contradicts this guide. You can add "(sic)" after the quote to indicate
204
-the errors are in the quote and are not errors in our docs.
205
-
206
-Text taken from a GUI (e.g., menu text or button text) should appear in "double
207
-quotes". The text should take the exact same capitalisation, etc. as appears in
208
-the GUI. E.g., Click "Continue" to save the settings.
209
-
210
-Text that refers to a keyboard command or hotkey is  capitalized (e.g., Ctrl-D).
211
-
212
-When writing CLI examples, give the user hints by making the examples resemble
213
-exactly what they see in their shell: 
214
-
215
-* Indent shell examples by 4 spaces so they get rendered as code blocks.
216
-* Start typed commands with `$ ` (dollar space), so that they are easily
217
-differentiated from program output.
218
-* Program output has no prefix.
219
-* Comments begin with # (hash space).
220
-* In-container shell commands, begin with `$$ ` (dollar dollar space).
221
-
222
-Please test all code samples to ensure that they are correct and functional so
223
-that users can successfully cut-and-paste samples directly into the CLI.
224
-
225
-## Pull requests
226
-
227
-The pull request (PR) process is in place so that we can ensure changes made to
228
-the docs are the best changes possible. A good PR will do some or all of the
229
-following:
230
-
231
-* Explain why the change is needed
232
-* Point out potential issues or questions
233
-* Ask for help from experts in the company or the community
234
-* Encourage feedback from core developers and others involved in creating the
235
-software being documented.
236
-
237
-Writing a PR that is singular in focus and has clear objectives will encourage
238
-all of the above. Done correctly, the process allows reviewers (maintainers and
239
-community members) to validate the claims of the documentation and identify
240
-potential problems in communication or presentation. 
241
-
242
-### Commit messages
243
-
244
-In order to write clear, useful commit messages, please follow these
245
-[recommendations](http://robots.thoughtbot.com/5-useful-tips-for-a-better-commit-message).
246
-
247
-## Links
248
-
249
-For accessibility and usability reasons, avoid using phrases such as "click
250
-here" for link text. Recast your sentence so that the link text describes the
251
-content of the link, as we did in the
252
-["Commit messages" section](#commit-messages) above.
253
-
254
-You can use relative links (../linkeditem) to link to other pages in Docker's
255
-documentation.
256
-
257
-## Graphics
258
-
259
-When you need to add a graphic, try to make the file-size as small as possible.
260
-If you need help reducing file-size of a high-resolution image, feel free to
261
-contact us for help.
262
-Usually, graphics should go in the same directory as the .md file that
263
-references them, or in a subdirectory for images if one already exists.
264
-
265
-The preferred file format for graphics is PNG, but GIF and JPG are also
266
-acceptable. 
267
-
268
-If you are referring to a specific part of the UI in an image, use
269
-call-outs (circles and arrows or lines) to highlight what you’re referring to.
270
-Line width for call-outs should not exceed five pixels. The preferred color for
271
-call-outs is red.
272
-
273
-Be sure to include descriptive alt-text for the graphic. This greatly helps
274
-users with accessibility issues.
275
-
276
-Lastly, be sure you have permission to use any included graphics.
277 1
\ No newline at end of file
278 2
new file mode 100644
... ...
@@ -0,0 +1,13 @@
0
+# Project
1
+
2
+## Contents:
3
+
4
+- [README first](who-written-for)
5
+- [Set up prerequisites](set-up-prereqs/) 
6
+- [Work with a development container](set-up-dev-env/) 
7
+- [Run tests and test documentation](test-and-docs/)
8
+- [Make a project contribution](make-a-contribution/)
9
+- [Advanced contributing](advanced-contributing/)
10
+- [Where to get help](get-help/)
11
+- [Coding style guide](coding-style/)
12
+- [Documentation style guide](doc-style/)
0 13
\ No newline at end of file
1 14
new file mode 100644
... ...
@@ -0,0 +1,126 @@
0
+page_title: Advanced contributing
1
+page_description: Explains workflows for refactor and design proposals
2
+page_keywords: contribute, project, design, refactor, proposal
3
+
4
+# Advanced contributing
5
+
6
+In this section, you learn about the more advanced contributions you can make. They are advanced because they have a more involved workflow or require greater programming experience. Don't be scared off though, if you like to stretch and challenge yourself, this is the place for you.
7
+
8
+This section gives generalized instructions for advanced contributions. You'll read about the workflow but there are not specific descriptions of commands. Your goal should be to understand the processes described.
9
+
10
+At this point, you should have read and worked through the earlier parts of the project contributor guide. You should also have <a href="../make-a-contribution" target="_blank"> made at least one project contribution</a>.
11
+
12
+## Refactor or cleanup proposal
13
+
14
+A refactor or cleanup proposal changes Docker's internal structure without altering the external behavior. To make this type of proposal:
15
+
16
+1. Fork `docker/docker`.
17
+
18
+2. Make your changes in a feature branch.
19
+
20
+3. Sync and rebase with `master` as you work.
21
+
22
+3. Run the full test suite.
23
+
24
+4. Submit your code through a pull request (PR).
25
+
26
+	The PR's title should have the format:
27
+	
28
+	**Cleanup:** _short title_
29
+	
30
+	If your changes required logic changes, note that in your request.
31
+	
32
+5. Work through Docker's review process until merge.
33
+
34
+
35
+## Design proposal
36
+
37
+A design proposal solves a problem or adds a feature to the Docker software. The process for submitting design proposals requires two pull requests, one for the design and one for the implementation.
38
+
39
+![Simple process](/project/images/proposal.png)
40
+
41
+The important thing to notice is that both the design pull request and the implementation pull request go through a review. In other words, there is considerable time commitment in a design proposal; so, you might want to pair with someone on design work.
42
+
43
+The following provides greater detail on the process:
44
+
45
+1. Come up with an idea.
46
+
47
+	Ideas usually come from limitations users feel working with a product. So,
48
+	take some time to really use Docker. Try it on different platforms; explore
49
+	how it works with different web applications. Go to some community events
50
+	and find out what other users want.
51
+
52
+2. Review existing issues and proposals to make sure no other user is proposing a similar idea.
53
+
54
+    The design proposals are <a
55
+    href="https://github.com/docker/docker/pulls?q=is%3Aopen+is%3Apr+label%
56
+    3AProposal" target="_blank">all online in our GitHub pull requests</a>. 
57
+    
58
+3. Talk to the community about your idea.
59
+
60
+	We have lots of <a href="../get-help" target="_blank">community forums</a>
61
+	where you can get feedback on your idea. Float your idea in a forum or two
62
+	to get some commentary going on it.
63
+	
64
+4. Fork `docker/docker` and clone the repo to your local host.
65
+
66
+5. Create a new Markdown file in the area you wish to change.  
67
+
68
+	For example, if you want to redesign our daemon create a new file under the
69
+	`daemon/` folder. 
70
+
71
+6. Name the file descriptively, for example `redesign-daemon-proposal.md`.	
72
+	
73
+7. Write a proposal for your change into the file.
74
+
75
+	This is a markdown file that describes your idea. Your proposal
76
+	should include information like:
77
+	
78
+	* Why is this changed needed or what are the use cases?
79
+	* What are the requirements this change should meet?
80
+	* What are some ways to design/implement this feature?
81
+	* Which design/implementation do you think is best and why?
82
+	* What are the risks or limitations of your proposal?
83
+	
84
+	 This is your chance to convince people your idea is sound. 
85
+	  
86
+8. Submit your proposal in a pull request to `docker/docker`.
87
+
88
+	The title should have the format:
89
+	
90
+	**Proposal:** _short title_
91
+	
92
+	The body of the pull request should include a brief summary of your change
93
+	and then say something like "_See the file for a complete description_".
94
+	
95
+9. Refine your proposal through review.
96
+
97
+	The maintainers and the community review your proposal. You'll need to
98
+	answer questions and sometimes explain or defend your approach. This is
99
+	chance for everyone to both teach and learn.
100
+   
101
+10. Pull request accepted.
102
+
103
+	Your request may also be rejected. Not every idea is a good fit for Docker.
104
+	Let's assume though your proposal succeeded. 
105
+	
106
+11. Implement your idea.
107
+
108
+	Implementation uses all the standard practices of any contribution.
109
+	
110
+	 * fork `docker/docker`
111
+	 * create a feature branch
112
+	 * sync frequently back to master
113
+	 * test as you go and full test before a PR
114
+	 
115
+	 If you run into issues, the community is there to help.
116
+	 
117
+12. When you have a complete implementation, submit a pull request back to `docker/docker`.
118
+
119
+13. Review and iterate on your code.
120
+
121
+	If you are making a large code change, you can expect greater scrutiny
122
+	during this phase. 
123
+	
124
+14. Acceptance and merge!
125
+
0 126
new file mode 100644
... ...
@@ -0,0 +1,76 @@
0
+page_title: Coding Style Checklist
1
+page_description: List of guidelines for coding Docker contributions
2
+page_keywords: change, commit, squash, request, pull request, test, unit test, integration tests, Go, gofmt, LGTM
3
+
4
+# Coding Style Checklist
5
+
6
+This checklist summarizes the material you experienced working through [make a code contribution](/project/make-a-contribution) and [advanced contributing](/project/advanced-contributing).  The checklist applies to code that is program code or code that is documentation code.
7
+
8
+## Change and commit code
9
+
10
+* Fork the `docker/docker` repository.
11
+
12
+* Make changes on your fork in a feature branch. Name your branch `XXXX-something` where `XXXX` is the issue number you are working on.
13
+
14
+* Run `gofmt -s -w file.go` on each changed file before
15
+committing your changes. Most editors have plug-ins that do this automatically.
16
+
17
+* Update the documentation when creating or modifying features. 
18
+
19
+* Commits that fix or close an issue should reference them in the commit message
20
+`Closes #XXXX` or `Fixes #XXXX`. Mentions help by automatically closing the
21
+issue on a merge.
22
+
23
+* After every commit, run the test suite and ensure it is passing.
24
+
25
+* Sync and rebase frequently as you code to keep up with `docker` master.
26
+
27
+* Set your `git` signature and make sure you sign each commit.
28
+
29
+* Do not add yourself to the `AUTHORS` file. This file is autogenerated from the Git history.
30
+
31
+## Tests and testing
32
+
33
+* Submit unit tests for your changes. 
34
+
35
+* Make use of the builtin Go test framework built. 
36
+
37
+* Use existing Docker test files (`name_test.go`) for inspiration. 
38
+
39
+* Run <a href="../test-and-docs" target="_blank">the full test suite</a> on your branch before submitting a pull request.
40
+
41
+* Run `make docs` to build the documentation and then check it locally.
42
+
43
+* Use an <a href="http://www.hemingwayapp.com" target="_blank">online grammar
44
+checker</a> or similar to test you documentation changes for clarity, concision,
45
+and correctness.
46
+
47
+## Pull requests
48
+
49
+* Sync and cleanly rebase on top of Docker's `master` without multiple branches
50
+mixed into the PR.
51
+
52
+* Before the pull request, squash your commits into logical units of work using `git rebase -i` and `git push -f`. 
53
+
54
+* Include documentation changes in the same commit so that a revert would remove all traces of the feature or fix.
55
+
56
+* Reference each issue in your pull request description (`#XXXX`)
57
+
58
+## Respond to pull requests reviews 
59
+
60
+* Docker maintainers use LGTM (**l**ooks-**g**ood-**t**o-**m**e) in PR comments to indicate acceptance.
61
+
62
+* Code review comments may be added to your pull request. Discuss, then make the
63
+suggested modifications and push additional commits to your feature branch. 
64
+
65
+* Incorporate changes on your feature branch and push to your fork. This automatically updates your open pull request.
66
+
67
+* Post a comment after pushing to alert reviewers to PR changes; pushing a change does not send notifications.
68
+
69
+* A change requires LGTMs from an absolute majority maintainers of an affected component. For example, if you change `docs/` and `registry/` code, an absolute majority of the `docs/` and the `registry/` maintainers must approve your PR.
70
+
71
+## Merges after pull requests
72
+
73
+* After a merge, [a master build](https://master.dockerproject.com/) is available almost immediately. 
74
+
75
+* If you made a documentation change, you can see it at [docs.master.dockerproject.com](http://docs.master.dockerproject.com/). 
0 76
new file mode 100644
... ...
@@ -0,0 +1,276 @@
0
+page_title: Style Guide for Docker Documentation
1
+page_description: Style guide for Docker documentation describing standards and conventions for contributors
2
+page_keywords: style, guide, docker, documentation
3
+
4
+# Docker documentation: style & grammar conventions
5
+
6
+## Style standards
7
+
8
+Over time, different publishing communities have written standards for the style
9
+and grammar they prefer in their publications. These standards are called
10
+[style guides](http://en.wikipedia.org/wiki/Style_guide). Generally, Docker’s
11
+documentation uses the standards described in the
12
+[Associated Press's (AP) style guide](http://en.wikipedia.org/wiki/AP_Stylebook). 
13
+If a question about syntactical, grammatical, or lexical practice comes up,
14
+refer to the AP guide first. If you don’t have a copy of (or online subscription
15
+to) the AP guide, you can almost always find an answer to a specific question by
16
+searching the web. If you can’t find an answer, please ask a
17
+[maintainer](https://github.com/docker/docker/blob/master/docs/MAINTAINERS) and
18
+we will find the answer.
19
+
20
+That said, please don't get too hung up on using correct style. We'd rather have
21
+you submit good information that doesn't conform to the guide than no
22
+information at all. Docker's tech writers are always happy to help you with the
23
+prose, and we promise not to judge or use a red pen!
24
+
25
+> **Note:**
26
+> The documentation is written with paragraphs wrapped at 80 column lines to
27
+> make it easier for terminal use. You can probably set up your favorite text
28
+> editor to do this automatically for you.
29
+
30
+### Prose style
31
+
32
+In general, try to write simple, declarative prose. We prefer short,
33
+single-clause sentences and brief three-to-five sentence paragraphs. Try to
34
+choose vocabulary that is straightforward and precise. Avoid creating new terms,
35
+using obscure terms or, in particular, using a lot of jargon. For example, use
36
+"use" instead of leveraging "leverage".
37
+
38
+That said, don’t feel like you have to write for localization or for
39
+English-as-a-second-language (ESL) speakers specifically. Assume you are writing
40
+for an ordinary speaker of English with a basic university education. If your
41
+prose is simple, clear, and straightforward it will translate readily.
42
+
43
+One way to think about this is to assume Docker’s users are generally university
44
+educated and read at at least a "16th" grade level (meaning they have a
45
+university degree). You can use a [readability
46
+tester](https://readability-score.com/) to help guide your judgement. For
47
+example, the readability score for the phrase "Containers should be ephemeral"
48
+is around the 13th grade level (first year at university), and so is acceptable.
49
+
50
+In all cases, we prefer clear, concise communication over stilted, formal
51
+language. Don't feel like you have to write documentation that "sounds like
52
+technical writing."
53
+
54
+### Metaphor and figurative language
55
+
56
+One exception to the "don’t write directly for ESL" rule is to avoid the use of
57
+metaphor or other
58
+[figurative language](http://en.wikipedia.org/wiki/Literal_and_figurative_language) to
59
+describe things. There are too many cultural and social issues that can prevent
60
+a reader from correctly interpreting a metaphor.
61
+
62
+## Specific conventions
63
+
64
+Below are some specific recommendations (and a few deviations) from AP style
65
+that we use in our docs.
66
+
67
+### Contractions
68
+
69
+As long as your prose does not become too slangy or informal, it's perfectly
70
+acceptable to use contractions in our documentation. Make sure to use
71
+apostrophes correctly.
72
+
73
+### Use of dashes in a sentence.
74
+
75
+Dashes refers to the en dash (–) and the em dash (—). Dashes can be used to
76
+separate parenthetical material.
77
+
78
+Usage Example: This is an example of a Docker client – which uses the Big Widget
79
+to run – and does x, y, and z.
80
+
81
+Use dashes cautiously and consider whether commas or parentheses would work just
82
+as well. We always emphasize short, succinct sentences.
83
+
84
+More info from the always handy [Grammar Girl site](http://www.quickanddirtytips.com/education/grammar/dashes-parentheses-and-commas).
85
+
86
+### Pronouns
87
+
88
+It's okay to use first and second person pronouns. Specifically, use "we" to
89
+refer to Docker and "you" to refer to the user. For example, "We built the
90
+`exec` command so you can resize a TTY session."
91
+
92
+As much as possible, avoid using gendered pronouns ("he" and "she", etc.).
93
+Either recast the sentence so the pronoun is not needed or, less preferably,
94
+use "they" instead. If you absolutely can't get around using a gendered pronoun,
95
+pick one and stick to it. Which one you choose is up to you. One common
96
+convention is to use the pronoun of the author's gender, but if you prefer to
97
+default to "he" or "she", that's fine too.
98
+
99
+### Capitalization 
100
+
101
+#### In general
102
+
103
+Only proper nouns should be capitalized in body text. In general, strive to be
104
+as strict as possible in applying this rule. Avoid using capitals for emphasis
105
+or to denote "specialness".
106
+
107
+The word "Docker" should always be capitalized when referring to either the
108
+company or the technology. The only exception is when the term appears in a code
109
+sample.
110
+
111
+#### Starting sentences
112
+
113
+Because code samples should always be written exactly as they would appear
114
+on-screen, you should avoid starting sentences with a code sample.
115
+
116
+#### In headings
117
+
118
+Headings take sentence capitalization, meaning that only the first letter is
119
+capitalized (and words that would normally be capitalized in a sentence, e.g.,
120
+"Docker"). Do not use Title Case (i.e., capitalizing every word) for headings. Generally, we adhere to [AP style
121
+for titles](http://www.quickanddirtytips.com/education/grammar/capitalizing-titles).
122
+
123
+## Periods
124
+
125
+We prefer one space after a period at the end of a sentence, not two. 
126
+
127
+See [lists](#lists) below for how to punctuate list items.
128
+
129
+### Abbreviations and acronyms
130
+
131
+* Exempli gratia (e.g.) and id est ( i.e.): these should always have periods and
132
+are always followed by a comma.
133
+
134
+* Acronyms are pluralized by simply adding "s", e.g., PCs, OSs.
135
+
136
+* On first use on a given page, the complete term should be used, with the
137
+abbreviation or acronym in parentheses. E.g., Red Hat Enterprise Linux (RHEL).
138
+The exception is common, non-technical acronyms like AKA or ASAP. Note that
139
+acronyms other than i.e. and e.g. are capitalized.
140
+
141
+* Other than "e.g." and "i.e." (as discussed above), acronyms do not take
142
+periods, PC not P.C.
143
+
144
+
145
+### Lists
146
+
147
+When writing lists, keep the following in mind:
148
+
149
+Use bullets when the items being listed are independent of each other and the
150
+order of presentation is not important.
151
+
152
+Use numbers for steps that have to happen in order or if you have mentioned the
153
+list in introductory text. For example, if you wrote "There are three config
154
+settings available for SSL, as follows:", you would number each config setting
155
+in the subsequent list.
156
+
157
+In all lists, if an item is a complete sentence, it should end with a
158
+period. Otherwise, we prefer no terminal punctuation for list items.
159
+Each item in a list should start with a capital.
160
+
161
+### Numbers
162
+
163
+Write out numbers in body text and titles from one to ten. From 11 on, use numerals.
164
+
165
+### Notes
166
+
167
+Use notes sparingly and only to bring things to the reader's attention that are
168
+critical or otherwise deserving of being called out from the body text. Please
169
+format all notes as follows:
170
+
171
+    > **Note:**
172
+    > One line of note text
173
+    > another line of note text
174
+
175
+### Avoid excess use of "i.e."
176
+
177
+Minimize your use of "i.e.". It can add an unnecessary interpretive burden on
178
+the reader. Avoid writing "This is a thing, i.e., it is like this". Just
179
+say what it is: "This thing is …"
180
+
181
+### Preferred usages
182
+
183
+#### Login vs. log in. 
184
+
185
+A "login" is a noun (one word), as in "Enter your login". "Log in" is a compound
186
+verb (two words), as in "Log in to the terminal".
187
+
188
+### Oxford comma
189
+
190
+One way in which we differ from AP style is that Docker’s docs use the [Oxford
191
+comma](http://en.wikipedia.org/wiki/Serial_comma) in all cases. That’s our
192
+position on this controversial topic, we won't change our mind, and that’s that!
193
+
194
+### Code and UI text styling
195
+
196
+We require `code font` styling (monospace, sans-serif) for all text that refers
197
+to a command or other input or output from the CLI. This includes file paths
198
+(e.g., `/etc/hosts/docker.conf`). If you enclose text in backticks (`) markdown
199
+will style the text as code. 
200
+
201
+Text from a CLI should be quoted verbatim, even if it contains errors or its
202
+style contradicts this guide. You can add "(sic)" after the quote to indicate
203
+the errors are in the quote and are not errors in our docs.
204
+
205
+Text taken from a GUI (e.g., menu text or button text) should appear in "double
206
+quotes". The text should take the exact same capitalisation, etc. as appears in
207
+the GUI. E.g., Click "Continue" to save the settings.
208
+
209
+Text that refers to a keyboard command or hotkey is  capitalized (e.g., Ctrl-D).
210
+
211
+When writing CLI examples, give the user hints by making the examples resemble
212
+exactly what they see in their shell: 
213
+
214
+* Indent shell examples by 4 spaces so they get rendered as code blocks.
215
+* Start typed commands with `$ ` (dollar space), so that they are easily
216
+differentiated from program output.
217
+* Program output has no prefix.
218
+* Comments begin with # (hash space).
219
+* In-container shell commands, begin with `$$ ` (dollar dollar space).
220
+
221
+Please test all code samples to ensure that they are correct and functional so
222
+that users can successfully cut-and-paste samples directly into the CLI.
223
+
224
+## Pull requests
225
+
226
+The pull request (PR) process is in place so that we can ensure changes made to
227
+the docs are the best changes possible. A good PR will do some or all of the
228
+following:
229
+
230
+* Explain why the change is needed
231
+* Point out potential issues or questions
232
+* Ask for help from experts in the company or the community
233
+* Encourage feedback from core developers and others involved in creating the
234
+software being documented.
235
+
236
+Writing a PR that is singular in focus and has clear objectives will encourage
237
+all of the above. Done correctly, the process allows reviewers (maintainers and
238
+community members) to validate the claims of the documentation and identify
239
+potential problems in communication or presentation. 
240
+
241
+### Commit messages
242
+
243
+In order to write clear, useful commit messages, please follow these
244
+[recommendations](http://robots.thoughtbot.com/5-useful-tips-for-a-better-commit-message).
245
+
246
+## Links
247
+
248
+For accessibility and usability reasons, avoid using phrases such as "click
249
+here" for link text. Recast your sentence so that the link text describes the
250
+content of the link, as we did in the
251
+["Commit messages" section](#commit-messages) above.
252
+
253
+You can use relative links (../linkeditem) to link to other pages in Docker's
254
+documentation.
255
+
256
+## Graphics
257
+
258
+When you need to add a graphic, try to make the file-size as small as possible.
259
+If you need help reducing file-size of a high-resolution image, feel free to
260
+contact us for help.
261
+Usually, graphics should go in the same directory as the .md file that
262
+references them, or in a subdirectory for images if one already exists.
263
+
264
+The preferred file format for graphics is PNG, but GIF and JPG are also
265
+acceptable. 
266
+
267
+If you are referring to a specific part of the UI in an image, use
268
+call-outs (circles and arrows or lines) to highlight what you’re referring to.
269
+Line width for call-outs should not exceed five pixels. The preferred color for
270
+call-outs is red.
271
+
272
+Be sure to include descriptive alt-text for the graphic. This greatly helps
273
+users with accessibility issues.
274
+
275
+Lastly, be sure you have permission to use any included graphics.
0 276
\ No newline at end of file
1 277
new file mode 100644
... ...
@@ -0,0 +1,119 @@
0
+page_title: Where to chat or get help
1
+page_description: Describes Docker's communication channels
2
+page_keywords: IRC, Google group, Twitter, blog, Stackoverflow
3
+
4
+# Where to chat or get help
5
+
6
+There are several communications channels you can use to chat with Docker community members and developers. 
7
+
8
+<style type="text/css">
9
+.tg  {border-collapse:collapse;border-spacing:0;text-align: left;}
10
+.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;vertical-align:top;}
11
+.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
12
+</style>
13
+<table class="tg">
14
+  <col width="25%">
15
+  <col width="75%">
16
+  <tr>
17
+    <td class="tg-031e">Internet Relay Chat (IRC)</th>
18
+    <td class="tg-031e"><p>IRC a direct line to our most knowledgeable Docker users. The <code>#docker</code> and <code>#docker-dev</code> group  on <strong>irc.freenode.net</strong>. IRC was first created in 1988. So, it is a rich chat protocol but it can overwhelm new users. You can search <a href="https://botbot.me/freenode/docker/#" target="_blank">our chat archives</a>.</p>
19
+    Read our IRC quickstart guide below for an easy way to get started.</th>
20
+  </tr>
21
+  <tr>
22
+    <td class="tg-031e">Google Groups</td>
23
+    <td class="tg-031e">There are two groups. <a href="https://groups.google.com/forum/#!forum/docker-user" target="_blank">Docker-user</a> is for people using Docker containers. The <a href="https://groups.google.com/forum/#!forum/docker-dev" target="_blank">docker-dev</a> group is for contributors and other people contributing to the Docker project.</td>
24
+  </tr>
25
+  <tr>
26
+    <td class="tg-031e">Twitter</td>
27
+    <td class="tg-031e">You can follow <a href="https://twitter.com/docker/" target="_blank">Docker's twitter</a> to get updates on our products. You can also tweet us questions or just share blogs or stories.</td>
28
+  </tr>
29
+  <tr>
30
+    <td class="tg-031e">Stackoverflow</td>
31
+    <td class="tg-031e">Stackoverflow has over 7000K Docker questions listed. We regularly monitor <a href="http://stackoverflow.com/search?tab=newest&q=docker" target="_blank">Docker questions</a> and so do many other knowledgeable Docker users.</td>
32
+  </tr>
33
+</table>
34
+
35
+
36
+## IRC Quickstart
37
+
38
+IRC can also be overwhelming for new users. This quickstart shows you the easiest way to connect to IRC. 
39
+
40
+1. In your browser open <a href="http://webchat.freenode.net" target="_blank">http://webchat.freenode.net</a>
41
+
42
+	![Login screen](/project/images/irc_connect.png)
43
+
44
+
45
+2. Fill out the form.
46
+
47
+	<style type="text/css">
48
+.tg  {border-collapse:collapse;border-spacing:0;}
49
+.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
50
+.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
51
+</style>
52
+<table class="tg">
53
+  <tr>
54
+    <th class="tg-031e"><b>Nickname</b></th>
55
+    <th class="tg-031e">The short name you want to be known as in IRC.</th>
56
+  </tr>
57
+  <tr>
58
+    <td class="tg-031e"><b>Channels</b></td>
59
+    <td class="tg-031e"><code>#docker</code></td>
60
+  </tr>
61
+  <tr>
62
+    <td class="tg-031e"><b>reCAPTCHA</b></td>
63
+    <td class="tg-031e">Use the value provided.</td>
64
+  </tr>
65
+</table>
66
+
67
+3. Click "Connect".
68
+
69
+	The system connects you to chat. You'll see a lot of text. At the bottom of
70
+	the display is a command line. Just above the command line the system asks 
71
+	you to register.
72
+	
73
+	![Login screen](/project/images/irc_after_login.png)
74
+
75
+
76
+4. In the command line, register your nickname.
77
+
78
+		/msg nickserv REGISTER password youremail@example.com
79
+		
80
+	![Login screen](/project/images/register_nic.png)
81
+	
82
+	The IRC system sends an email to the address you
83
+	enter. The email contains instructions for completing your registration.
84
+	
85
+5. Open your mail client and look for the email.
86
+	
87
+	![Login screen](/project/images/register_email.png)
88
+	
89
+6. Back in the browser, complete the registration according to the email.
90
+
91
+	 	/msg NickServ VERIFY REGISTER moxiegirl_ acljtppywjnr
92
+	
93
+7. Join the `#docker` group using the following command.
94
+
95
+		/j #docker
96
+		
97
+	You can also join the `#docker-dev` group.
98
+	
99
+		/j #docker-dev
100
+		
101
+8. To ask questions to the channel just type messages in the command line.
102
+
103
+	![Login screen](/project/images/irc_chat.png)
104
+
105
+9. To quit, close the browser window.
106
+
107
+
108
+### Tips and learning more about IRC
109
+
110
+Next time you return to log into chat, you'll need to re-enter your password on the command line using this command:
111
+
112
+	/msg NickServ identify <password>
113
+	
114
+If you forget or lose your password see <a
115
+href="https://freenode.net/faq.shtml#sendpass" target="_blank">the FAQ on
116
+freenode.net</a> to learn how to recover it.
117
+	
118
+This quickstart was meant to get you up and into IRC very quickly. If you find IRC useful there is a lot more to learn. Drupal, another open source project, actually has <a href="https://www.drupal.org/irc/setting-up" target="_blank">written a lot of good documentation about using IRC</a> for their project (thanks Drupal!).  
0 119
new file mode 100644
... ...
@@ -0,0 +1,7 @@
0
+page_title: Glossary
1
+page_description: tbd
2
+page_keywords: tbd
3
+
4
+## Glossary
5
+
6
+TBD
0 7
\ No newline at end of file
1 8
new file mode 100755
2 9
Binary files /dev/null and b/docs/sources/project/images/box.png differ
3 10
new file mode 100644
4 11
Binary files /dev/null and b/docs/sources/project/images/branch-sig.png differ
5 12
new file mode 100755
6 13
Binary files /dev/null and b/docs/sources/project/images/checked.png differ
7 14
new file mode 100644
8 15
Binary files /dev/null and b/docs/sources/project/images/commits_expected.png differ
9 16
new file mode 100644
10 17
Binary files /dev/null and b/docs/sources/project/images/contributor-edit.png differ
11 18
new file mode 100644
12 19
Binary files /dev/null and b/docs/sources/project/images/copy_url.png differ
13 20
new file mode 100644
14 21
Binary files /dev/null and b/docs/sources/project/images/easy_issue.png differ
15 22
new file mode 100644
16 23
Binary files /dev/null and b/docs/sources/project/images/existing_issue.png differ
17 24
new file mode 100644
18 25
Binary files /dev/null and b/docs/sources/project/images/existing_issue.snagproj differ
19 26
new file mode 100644
20 27
Binary files /dev/null and b/docs/sources/project/images/fixes_num.png differ
21 28
new file mode 100644
22 29
Binary files /dev/null and b/docs/sources/project/images/fork_docker.png differ
23 30
new file mode 100644
24 31
Binary files /dev/null and b/docs/sources/project/images/fresh_container.png differ
25 32
new file mode 100644
26 33
Binary files /dev/null and b/docs/sources/project/images/give_try.png differ
27 34
new file mode 100644
28 35
Binary files /dev/null and b/docs/sources/project/images/gordon.jpeg differ
29 36
new file mode 100644
30 37
Binary files /dev/null and b/docs/sources/project/images/in_room.png differ
31 38
new file mode 100644
32 39
Binary files /dev/null and b/docs/sources/project/images/irc_after_login.png differ
33 40
new file mode 100644
34 41
Binary files /dev/null and b/docs/sources/project/images/irc_chat.png differ
35 42
new file mode 100644
36 43
Binary files /dev/null and b/docs/sources/project/images/irc_connect.png differ
37 44
new file mode 100644
38 45
Binary files /dev/null and b/docs/sources/project/images/irc_login.png differ
39 46
new file mode 100644
40 47
Binary files /dev/null and b/docs/sources/project/images/issue_list.png differ
41 48
new file mode 100644
42 49
Binary files /dev/null and b/docs/sources/project/images/latest_commits.png differ
43 50
new file mode 100644
44 51
Binary files /dev/null and b/docs/sources/project/images/list_example.png differ
45 52
new file mode 100644
46 53
Binary files /dev/null and b/docs/sources/project/images/proposal.png differ
47 54
new file mode 100644
48 55
Binary files /dev/null and b/docs/sources/project/images/proposal.snagproj differ
49 56
new file mode 100644
50 57
Binary files /dev/null and b/docs/sources/project/images/pull_request_made.png differ
51 58
new file mode 100644
52 59
Binary files /dev/null and b/docs/sources/project/images/red_notice.png differ
53 60
new file mode 100644
54 61
Binary files /dev/null and b/docs/sources/project/images/register_email.png differ
55 62
new file mode 100644
56 63
Binary files /dev/null and b/docs/sources/project/images/register_nic.png differ
57 64
new file mode 100644
58 65
Binary files /dev/null and b/docs/sources/project/images/three_running.png differ
59 66
new file mode 100644
60 67
Binary files /dev/null and b/docs/sources/project/images/three_terms.png differ
61 68
new file mode 100644
62 69
Binary files /dev/null and b/docs/sources/project/images/to_from_pr.png differ
63 70
new file mode 100644
... ...
@@ -0,0 +1,476 @@
0
+page_title: Make a project contribution
1
+page_description: Basic workflow for Docker contributions
2
+page_keywords: contribute, pull request, review, workflow, white-belt, black-belt, squash, commit
3
+
4
+# Make a project contribution
5
+
6
+Contributing is a process where you work with Docker maintainers and the community to improve Docker. There is a formal process for contributing. We try to keep our contribution process simple so you want to come back.
7
+
8
+
9
+In this section, you will create a new branch and work on some Docker code that you choose. Before you work through this process, take a few minutes to read through the next section which explains our basic contribution workflow. 
10
+
11
+## The basic contribution workflow
12
+
13
+<<<<<<< HEAD
14
+<<<<<<< HEAD
15
+You are about to work through our basic contribution workflow by fixing a single *white-belt* issue in the `docker/docker` repository. The workflow for fixing simple issues looks like this:
16
+=======
17
+You about to work through our basic contribution workflow by fixing a single *white-belt* issue in the `docker/docker` repository. The workflow for fixing simple issues looks like this:
18
+>>>>>>> 6f40419... Tweaking from last run thru
19
+=======
20
+You are about to work through our basic contribution workflow by fixing a single *white-belt* issue in the `docker/docker` repository. The workflow for fixing simple issues looks like this:
21
+>>>>>>> 2834bbe... Last minut check pass; fixes
22
+
23
+![Simple process](/project/images/existing_issue.png)
24
+
25
+All Docker repositories have code and documentation. This workflow works for either content type. For example, you can find and fix doc or code issues. Also, you can propose a new Docker feature or propose a new Docker tutorial. 
26
+
27
+Some workflow stages have slight differences for code or documentation contributions. When you reach that point in the flow, we make sure to tell you.
28
+
29
+## Find and claim an existing issue
30
+
31
+An existing issue is something reported by a Docker user. As issues come in, our maintainers triage them. Triage is its own topic. For now, it is important for you to know that triage includes ranking issues according to difficulty. 
32
+
33
+Triaged issues have either a **white-belt** or **black-belt** label.   A **white-belt** issue is considered an easier issue. Issues can have more than one the **white-belt** label, for example, **bug**, **improvement**, **/project/doc**, and so forth. These other labels are their for filtering purposes but you might also find them helpful.
34
+
35
+In the next procedure, you find and claim an open white-belt issue.
36
+
37
+<<<<<<< HEAD
38
+<<<<<<< HEAD
39
+1. Go to the `docker/docker` <a
40
+	href="https://github.com/docker/docker" target="_blank">repository</a>.
41
+=======
42
+1. Go to the `docker/docker` repository.
43
+>>>>>>> 6f40419... Tweaking from last run thru
44
+=======
45
+1. Go to the `docker/docker` <a
46
+	href="https://github.com/docker/docker" target="_blank">repository</a>.
47
+>>>>>>> 2834bbe... Last minut check pass; fixes
48
+
49
+2. Click on the "Issues" link.
50
+
51
+   	A list of the open issues appears. 
52
+		
53
+	![Open issues](/project/images/issue_list.png)
54
+
55
+3. Look for the **white-belt** items on the list.
56
+
57
+4. Click on the "Labels" dropdown and select  **white-belt**.
58
+
59
+	The system filters to show only open **white-belt** issues.
60
+
61
+5. Open an issue that interests you.
62
+
63
+	The comments on the issues can tell you both the problem and the potential 
64
+	solution.
65
+	
66
+6. Make sure that no other user has chosen to work on the issue.
67
+
68
+    We don't allow external contributors to assign issues to themselves, so you
69
+    need to read the comments to find if a user claimed an issue by saying:
70
+    
71
+    * "I'd love to give this a try~"
72
+    * "I'll work on this!"
73
+    * "I'll take this."
74
+    
75
+    The community is very good about claiming issues explicitly.
76
+
77
+7. When you find an open issue that both interests you and is unclaimed, claim it yourself by adding a comment.
78
+
79
+	![Easy issue](/project/images/easy_issue.png)
80
+
81
+	This example uses issue 11038. Your issue # will be different depending on
82
+	what you claimed.
83
+	
84
+8. Make a note of the issue number; you'll need it later.
85
+
86
+## Sync your fork and create a new branch
87
+
88
+If you have followed along in this guide, you forked the `docker/docker` repository. Maybe that was an hour ago or a few days ago. In any case, before you start working on your issue, sync your repository with the upstream `docker/docker` master. Syncing ensures your repository has the latest changes.
89
+
90
+To sync your repository:
91
+
92
+1. Open a terminal on your local host.
93
+
94
+2. Change directory to the `docker-fork` root.
95
+
96
+		$ cd ~/repos/docker-fork
97
+
98
+3. Checkout the master branch.
99
+
100
+		$ git checkout master
101
+		Switched to branch 'master'
102
+		Your branch is up-to-date with 'origin/master'.
103
+		
104
+	Recall that `origin/master` is a branch on your remote GitHub repository.
105
+
106
+4. Make sure you have the upstream remote `docker/docker` by listing them.
107
+
108
+		$ git remote -v
109
+		origin	https://github.com/moxiegirl/docker.git (fetch)
110
+		origin	https://github.com/moxiegirl/docker.git (push)
111
+		upstream	https://github.com/docker/docker.git (fetch)
112
+		upstream	https://github.com/docker/docker.git (
113
+	
114
+	If the `upstream` is missing, add it.
115
+	
116
+		$ git remote add upstream https://github.com/docker/docker.git
117
+
118
+5. Fetch all the changes from the `upstream/master` branch.
119
+
120
+		$ git fetch upstream/master
121
+		remote: Counting objects: 141, done.
122
+		remote: Compressing objects: 100% (29/29), done.
123
+		remote: Total 141 (delta 52), reused 46 (delta 46), pack-reused 66
124
+		Receiving objects: 100% (141/141), 112.43 KiB | 0 bytes/s, done.
125
+		Resolving deltas: 100% (79/79), done.
126
+		From github.com:docker/docker
127
+		   9ffdf1e..01d09e4  docs       -> upstream/docs
128
+		   05ba127..ac2521b  master     -> upstream/master
129
+		   
130
+	This command says get all the changes from the `master` branch belonging to
131
+	the `upstream` remote.
132
+		   
133
+7. Rebase your local master with the `upstream/master`.
134
+
135
+		$ git rebase upstream/master
136
+		First, rewinding head to replay your work on top of it...
137
+		Fast-forwarded master to upstream/master.
138
+		
139
+	This command writes all the commits from the upstream branch into your local
140
+	branch.
141
+		
142
+8.  Check the status of your local branch.
143
+
144
+		$ git status
145
+		On branch master
146
+		Your branch is ahead of 'origin/master' by 38 commits.
147
+		  (use "git push" to publish your local commits)
148
+		nothing to commit, working directory clean
149
+
150
+	Your local repository now has any changes from the `upstream` remote.  You
151
+	need to push the changes to your own remote fork which is `origin/master`.
152
+
153
+9. Push the rebased master to `origin/master`.
154
+
155
+		$ git push
156
+		Username for 'https://github.com': moxiegirl
157
+		Password for 'https://moxiegirl@github.com': 
158
+		Counting objects: 223, done.
159
+		Compressing objects: 100% (38/38), done.
160
+		Writing objects: 100% (69/69), 8.76 KiB | 0 bytes/s, done.
161
+		Total 69 (delta 53), reused 47 (delta 31)
162
+		To https://github.com/moxiegirl/docker.git
163
+		   8e107a9..5035fa1  master -> master
164
+
165
+	If you check 
166
+
167
+9. Create a new feature branch to work on your issue.
168
+
169
+	Your branch name should have the format `XXXX-descriptive` where `XXXX` is
170
+	the issue number you are working on. For example:
171
+
172
+		$ git checkout -b 11038-fix-rhel-link
173
+		Switched to a new branch '11038-fix-rhel-link'
174
+		
175
+	Your branch should be up-to-date with the upstream/master. Why? Because you
176
+	branched off a freshly synced master.  Let's check this anyway in the next
177
+	step.
178
+
179
+9. Rebase your branch from upstream/master.
180
+
181
+		$ git rebase upstream/master
182
+		Current branch 11038-fix-rhel-link is up to date.
183
+		
184
+	At this point, your local branch, your remote repository, and the Docker
185
+	repository all have identical code. You are ready to make changesfor your
186
+	issues.
187
+		
188
+## Work on your issue
189
+
190
+The work you do for your issue depends on the specific issue you picked. This section gives you a step-by-step workflow. Where appropriate, it provides command examples. However, this is a generalized workflow, depending on your issue you may you may repeat steps or even skip some. How much time it takes you depends on you --- you could spend days or 30 minutes of your time.
191
+
192
+Follow this workflow as you work:
193
+
194
+1. Review the appropriate style guide.
195
+
196
+	If you are changing code, review the <a href="../coding-style"
197
+	target="_blank">coding style guide</a>. Changing documentation? Review the
198
+	<a href="../doc-style" target="_blank">documentation style guide</a>. 
199
+	
200
+2. Make changes in your feature branch.
201
+
202
+	Your feature branch you created in the last section. Here you use the
203
+	development container. If you are making a code change, you can mount your
204
+	source into a development container and iterate that way. For documentation
205
+	alone, you can work on your local host. 
206
+	
207
+	Review <a href="../set-up-dev-env" target="_blank">if you forgot the details
208
+<<<<<<< HEAD
209
+<<<<<<< HEAD
210
+	of working with a container</a>.
211
+=======
212
+	of working with a container.</a>.
213
+>>>>>>> 6f40419... Tweaking from last run thru
214
+=======
215
+	of working with a container</a>.
216
+>>>>>>> 2834bbe... Last minut check pass; fixes
217
+
218
+3. Test your changes as you work.
219
+
220
+	If you have followed along with the guide, you know the `make test` target
221
+	runs the entire test suite and `make docs` builds the documentation. If you
222
+	forgot the other test targets, see the documentation for <a
223
+	href="../test-and-docs" target="_blank">testing both code and
224
+	documentation</a>.  
225
+	
226
+4. For code changes, add unit tests if appropriate.
227
+
228
+	If you add new functionality or change existing functionality, you should
229
+	add a unit test also. Use the existing test files for inspiration. Aren't
230
+	sure if you need tests? Skip this step; you can add them later in the
231
+	process if necessary.
232
+	
233
+5. Format your source files correctly.
234
+
235
+	<style type="text/css">
236
+	.tg  {border-collapse:collapse;border-spacing:0;margin-bottom:15px;}
237
+	.tg td{font-family:Arial, sans-serif;font-size:14px;padding:5px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;vertical-align:top;}
238
+	.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:bold;padding:5px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;text-align:left;}
239
+	.tg .tg-e3zv{width:150px;}
240
+	</style>
241
+	<table class="tg">
242
+	  <tr>
243
+		<th class="tg-e3zv">File type</th>
244
+		<th class="tg-031e">How to format</th>
245
+	  </tr>
246
+	  <tr>
247
+		<td class="tg-e3zv"><code>.go</code></td>
248
+		<td class="tg-031e"><p>Format <code>.go</code> files using the <code>gofmt</code> command. For example, if you edited the `docker.go` file you would format the file
249
+		like this:
250
+		</p>
251
+		<p><code>$ gofmt -s -w file.go</code></p>
252
+		<p>	
253
+		Most file editors have a plugin to format for you. Check your editor's
254
+		documentation.
255
+		</p>
256
+		</td>
257
+	  </tr>
258
+	  <tr>
259
+		<td class="tg-e3zv"><code>.md</code> and non-<code>.go</code> files</td>
260
+		<td class="tg-031e">Wrap lines to 80 characters.</td>
261
+	  </tr>
262
+	</table>
263
+	
264
+
265
+6. List your changes.
266
+
267
+		$ git status
268
+		On branch 11038-fix-rhel-link
269
+		Changes not staged for commit:
270
+		  (use "git add <file>..." to update what will be committed)
271
+		  (use "git checkout -- <file>..." to discard changes in working directory)
272
+
273
+			modified:   docs/sources/installation/mac.md
274
+			modified:   docs/sources/installation/rhel.md
275
+			
276
+	The `status` command lists what changed in the repository. Make sure you see
277
+	the changes you expect.
278
+	
279
+7. Add your change to Git.
280
+
281
+		$ git add docs/sources/installation/mac.md
282
+		$ git add docs/sources/installation/rhel.md
283
+		
284
+		
285
+8. Commit your changes making sure you use the `-s` flag to sign your work.
286
+
287
+		$ git commit -s -m "Fixing RHEL link"
288
+	
289
+9. Push your change to your repository.
290
+		 
291
+		$ git push --set-upstream origin 11038-fix-rhel-link
292
+		Username for 'https://github.com': moxiegirl
293
+		Password for 'https://moxiegirl@github.com': 
294
+		Counting objects: 60, done.
295
+		Compressing objects: 100% (7/7), done.
296
+		Writing objects: 100% (7/7), 582 bytes | 0 bytes/s, done.
297
+		Total 7 (delta 6), reused 0 (delta 0)
298
+		To https://github.com/moxiegirl/docker.git
299
+		 * [new branch]      11038-fix-rhel-link -> 11038-fix-rhel-link
300
+		Branch 11038-fix-rhel-link set up to track remote branch 11038-fix-rhel-link from origin.
301
+		
302
+10. Open your fork on GitHub to see your change.
303
+
304
+## Create a pull request to docker/docker
305
+
306
+A pull request sends your code to the Docker maintainers for review. Your pull request goes from your forked repository to the `docker/docker` repository.  You can see <a href="https://github.com/docker/docker/pulls" target="_blank">the list of active pull requests to Docker</a> on GitHub. 
307
+
308
+To create a pull request for your change:
309
+
310
+1. In a terminal window, go to the root of your `docker-fork` repository. 
311
+
312
+		$ cd ~/repos/docker-fork
313
+
314
+2. Checkout your feature branch.
315
+
316
+		$ git checkout 11038-fix-rhel-link
317
+		Already on '11038-fix-rhel-link'
318
+
319
+3. Run the full test suite on your branch.
320
+
321
+		$ make test
322
+		
323
+	All the tests should pass. If they don't, find out why and correct the
324
+	situation. If you also modified the documentation,  run `make docs` and
325
+	check your work.
326
+	
327
+4.  Update your remote repository with any changes that result from your last minute checks.	
328
+
329
+	Use the `git add`, the `git commit -s`, and `git push` commands to do this.
330
+	
331
+4. Fetch any of the last minute changes from `docker/docker`.
332
+
333
+		$ git fetch upstream master
334
+		From github.com:docker/docker
335
+		 * branch            master     -> FETCH_HEAD
336
+
337
+5. Squash your individual separate commits into one by using Git’s interactive rebase:
338
+
339
+		$ git rebase -i upstream/master
340
+		
341
+	This commit will open up your favorite editor with all the comments from
342
+	all your latest commits.
343
+	
344
+		pick 1a79f55 Tweak some of the other text for grammar
345
+		pick 53e4983 Fix a link
346
+		pick 3ce07bb Add a new line about RHEL
347
+		
348
+6. Replace the `pick` keyword with `squash` on all but the first commit.
349
+	
350
+		pick 1a79f55 Tweak some of the other text for grammar
351
+		squash 53e4983 Fix a link
352
+		squash 3ce07bb Add a new line about RHEL	
353
+				
354
+	After closing the file, `git` opens your editor again to edit the commit
355
+	message. 
356
+	
357
+7. Save your commit message.
358
+
359
+
360
+8. Push any changes to your fork on GitHub.
361
+
362
+		$ git push origin 11038-fix-rhel-link
363
+		
364
+9. Open your browser to your fork on GitHub.
365
+
366
+	You should see the latest activity from your branch.
367
+	
368
+	![Latest commits](/project/images/latest_commits.png)
369
+
370
+	
371
+10. Click "Compare & pull request".
372
+
373
+	The system displays the pull request dialog. 
374
+	
375
+	![PR dialog](/project/images/to_from_pr.png)
376
+	
377
+	The pull request compares your changes to the `master` branch on the `docker/docker` repository.
378
+
379
+11. Edit the dialog's description and add a reference to the issue you are fixing.
380
+
381
+	GitHub helps you out by searching for the issue as you type.
382
+	
383
+	![Fixes issue](/project/images/fixes_num.png)
384
+
385
+12. Scroll down and verify the PR contains the commits and changes you expect.
386
+
387
+	For example, is the file count correct? Are the changes in the files what
388
+	you expect.
389
+	
390
+	![Commits](/project/images/commits_expected.png)
391
+
392
+13. Press "Create pull request".
393
+
394
+	The system creates the request and opens it for you in the `docker/docker`
395
+	repository.
396
+
397
+	![Pull request made](/project/images/pull_request_made.png)
398
+
399
+## Your pull request under review
400
+
401
+At this point, your pull request is reviewed. The first reviewer is Gordon. He might who might look slow in this picture: 
402
+
403
+![Gordon](/project/images/gordon.jpeg)
404
+
405
+He is actually pretty fast over a network. He checks your pull request (PR) for common problems like missing signatures. If Gordon finds a problem, he'll send  an email to your GitHub user.
406
+
407
+After Gordon, the core Docker maintainers look at your pull request and comment on it. The shortest comment you might see is `LGTM` which means **l**ooks-**g**ood-**t**o-**m**e. If you get an `LGTM`, that is a good thing, you passed that review. 
408
+
409
+For complex changes, maintainers may ask you questions or ask you to change something about your submission. All maintainer comments on a PR go to the email address associated with your GitHub account. Any GitHub user who "participates" in a PR receives an email to.  Participating means creating or commenting on a PR.
410
+
411
+Our maintainers are very experienced Docker users and open source contributors. So, they value your time and will try to work efficiently with you by keeping their comments specific and brief.  If they ask you to make a change, you'll need to update your pull request with additional changes.
412
+
413
+To update your existing pull request:
414
+
415
+1. Change one or more files in your local `docker-fork` repository.
416
+
417
+2. Commit the change with the `git commit --amend` command.
418
+
419
+		$ git commit --amend 
420
+		
421
+	Git opens an editor containing your last commit message.
422
+		
423
+3. Adjust your last comment to reflect this new change.
424
+
425
+		Added a new sentence per Anaud's suggestion	
426
+
427
+		Signed-off-by: Mary Anthony <mary@docker.com>
428
+
429
+		# Please enter the commit message for your changes. Lines starting
430
+		# with '#' will be ignored, and an empty message aborts the commit.
431
+		# On branch 11038-fix-rhel-link
432
+		# Your branch is up-to-date with 'origin/11038-fix-rhel-link'.
433
+		#
434
+		# Changes to be committed:
435
+		#		modified:   docs/sources/installation/mac.md
436
+		#		modified:   docs/sources/installation/rhel.md
437
+
438
+4. Push to your origin.
439
+
440
+		$ git push origin
441
+		
442
+5. Open your browser to your pull request on GitHub.
443
+
444
+	You should see your pull request now contains your newly pushed code.
445
+
446
+6. Add a comment to your pull request.
447
+	
448
+	GitHub only notifies PR participants when you comment. For example, you can
449
+	mention that you updated your PR. Your comment alerts the maintainers that
450
+	you made an update.
451
+	
452
+A change requires LGTMs from an absolute majority of an affected component's maintainers. For example, if you change `docs/` and `registry/` code, an absolute majority of the `docs/` and the `registry/` maintainers must approve your PR. Once you get approval, we merge your pull request into Docker's `master` cod branch. 
453
+
454
+## After the merge
455
+
456
+It can take time to see a merged pull request in Docker's official release. A master build is available almost immediately though. Docker builds and updates its development binaries after each merge to `master`. 
457
+
458
+1. Browse to <a href="https://master.dockerproject.com/" target="_blank">https://master.dockerproject.com/</a>.
459
+
460
+2. Look for the binary appropriate to your system.
461
+
462
+3. Download and run the binary.
463
+
464
+	You might want to run the binary in a container though. This
465
+	will keep your local host environment clean.
466
+
467
+4. View any documentation changes at <a href="http://docs.master.dockerproject.com/" target="_blank">docs.master.dockerproject.com</a>. 
468
+
469
+Once you've verified everything merged, feel free to delete your feature branch from your fork. For information on how to do this, <a href="https://help.github.com/articles/deleting-unused-branches/" target="_blank">see the GitHub help on deleting branches</a>.  
470
+
471
+## Where to go next
472
+
473
+At this point, you have completed all the basic tasks in our contributors guide. If you enjoyed contributing, let us know by completing another **white-belt** issue or two. We really appreciate the help. 
474
+
475
+If you are very experienced and want to make a major change, go onto [learn about advanced contributing](/project/advanced-contributing).
0 476
\ No newline at end of file
1 477
new file mode 100644
... ...
@@ -0,0 +1,415 @@
0
+page_title: Work with a development container
1
+page_description: How to use Docker's development environment
2
+page_keywords: development, inception, container, image Dockerfile, dependencies, Go, artifacts
3
+
4
+# Work with a development container
5
+
6
+In this section, you learn to develop like a member of Docker's core team.
7
+The `docker` repository includes a `Dockerfile` at its root. This file defines
8
+Docker's development environment.  The `Dockerfile` lists the environment's
9
+dependencies: system libraries and binaries, go environment, go dependencies,
10
+etc. 
11
+
12
+Docker's development environment is itself, ultimately a Docker container.
13
+You use the `docker` repository and its `Dockerfile` to create a Docker image, run a Docker container, and develop code in the container. Docker itself builds, tests, and releases new Docker versions using this container.
14
+
15
+If you followed the procedures that <a href="../set-up-prereqs" target="_blank">set up the prerequisites</a>, you should have a fork of the
16
+`docker/docker` repository. You also created a branch called `dry-run-test`. In this section, you continue working with your fork on this branch. 
17
+
18
+
19
+##  Clean your host of Docker artifacts
20
+
21
+Docker developers run the latest stable release of the Docker software; Or Boot2docker and Docker if their machine is Mac OS X. They clean their local hosts of unnecessary Docker artifacts such as stopped containers or unused images. Cleaning unnecessary artifacts isn't strictly necessary but it is good practice, so it is included here.
22
+
23
+To remove unnecessary artifacts.
24
+
25
+1. Verify that you have no unnecessary containers running on your host.
26
+
27
+		$ docker ps
28
+		
29
+	You should see something similar to the following:
30
+		
31
+	<style type="text/css">
32
+	.tg  {border-collapse:collapse;border-spacing:0;} .tg td{font-family:monospace, serif;font-size:11px;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;} .tg th{font-family:monospace, sans-serif;font-size:11px;font-weight:normal;padding:10px
33
+5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;}
34
+	</style>
35
+	<table class="tg">
36
+	  <tr>
37
+		<th class="tg-031e">CONTAINER ID</th>
38
+		<th class="tg-031e">IMAGE</th>
39
+		<th class="tg-031e">COMMAND</th>
40
+		<th class="tg-031e">CREATED</th>
41
+		<th class="tg-031e">STATUS</th>
42
+		<th class="tg-031e">PORTS</th>
43
+		<th class="tg-031e">NAMES</th>
44
+	  </tr>
45
+	</table>
46
+
47
+	There are no running containers on this host. If you have running but unused
48
+	containers, stop and then remove them with the `docker stop` and `docker rm`
49
+	commands.
50
+
51
+2. Verify that your host has no dangling images.
52
+
53
+		$ docker images
54
+		
55
+	You should see something similar to the following:
56
+		
57
+	<style type="text/css">
58
+	.tg  {border-collapse:collapse;border-spacing:0;} .tg td{font-family:monospace, serif;font-size:11px;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;} .tg th{font-family:monospace, serif;font-size:11px;font-weight:normal;padding:10px
59
+5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;}
60
+	</style>
61
+	<table class="tg">
62
+	  <tr>
63
+		<th class="tg-031e">REPOSITORY</th>
64
+		<th class="tg-031e">TAG</th>
65
+		<th class="tg-031e">IMAGE ID</th>
66
+		<th class="tg-031e">CREATED</th>
67
+		<th class="tg-031e">VIRTUAL SIZE</th>
68
+	  </tr>
69
+	</table>
70
+
71
+	This host has no images. You may have one or more _dangling_ images. A
72
+	dangling image is not used by a running container and is not an ancestor of
73
+	another image on your system. A fast way to remove dangling containers is
74
+	the following:
75
+
76
+		$ docker rmi -f $(docker images -q -a -f dangling=true)
77
+		
78
+	This command uses `docker images` to lists all images (`-a` flag) by numeric
79
+	IDs (`-q` flag) and filter them to find dangling images (`-f
80
+	dangling=true`). Then, the `docker rmi` command forcibly (`-f` flag) removes
81
+	the resulting list. To remove just one image, use the `docker rmi ID`
82
+	command.
83
+
84
+	
85
+## Build an image
86
+
87
+If you followed the last procedure, your host is clean of unnecessary images and containers. In this section, you build an image from the Docker development environment.
88
+
89
+1. Open a terminal.
90
+
91
+	Mac users, use `boot2docker status` to make sure Boot2Docker is running. You
92
+	may need to run `$(boot2docker shellinit)` to initialize your shell
93
+	environment.
94
+
95
+3. Change into the root of your forked repository.
96
+
97
+		$ cd ~/repos/docker-fork 
98
+
99
+4. Ensure you are on your `dry-run-test` branch.
100
+
101
+		$ git checkout dry-run-test 
102
+
103
+5. Compile your development environment container into an image.
104
+
105
+		$ docker build -t dry-run-test .
106
+
107
+	The `docker build` command returns informational message as it runs. The
108
+	first build may take a few minutes to create an image. Using the
109
+	instructions in the `Dockerfile`, the build may need to download source and
110
+	other images. A successful build returns a final status message similar to
111
+	the following:
112
+
113
+		 Successfully built 676815d59283 
114
+
115
+6. List your Docker images again.
116
+
117
+		$ docker images
118
+
119
+	You should see something similar to this:
120
+		 <style type="text/css">
121
+	.tg  {border-collapse:collapse;border-spacing:0;} .tg td{font-family:monospace, serif;font-size:11px;padding:5px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;} .tg th{font-family:monospace, serif;font-size:11px;font-weight:normal;padding:5px
122
+5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;}
123
+	</style>
124
+	<table class="tg">
125
+	  <tr>
126
+		<th class="tg-031e">REPOSTITORY</th>
127
+		<th class="tg-031e">TAG</th>
128
+		<th class="tg-031e">IMAGE ID</th>
129
+		<th class="tg-031e">CREATED</th>
130
+		<th class="tg-031e">VIRTUAL SIZE</th>
131
+	  </tr>
132
+	  <tr>
133
+		<td class="tg-031e">dry-run-test</td>
134
+		<td class="tg-031e">latest</td>
135
+		<td class="tg-031e">663fbee70028</td>
136
+		<td class="tg-031e">About a minute ago</td>
137
+		<td class="tg-031e"></td>
138
+	  </tr>
139
+	  <tr>
140
+		<td class="tg-031e">ubuntu</td>
141
+		<td class="tg-031e">trusty</td>
142
+		<td class="tg-031e">2d24f826cb16</td>
143
+		<td class="tg-031e">2 days ago</td>
144
+		<td class="tg-031e">188.3 MB</td>
145
+	  </tr>
146
+	  <tr>
147
+		<td class="tg-031e">ubuntu</td>
148
+		<td class="tg-031e">trusty-20150218.1</td>
149
+		<td class="tg-031e">2d24f826cb16</td>
150
+		<td class="tg-031e">2 days ago</td>
151
+		<td class="tg-031e">188.3 MB</td>
152
+	  </tr>
153
+	  <tr>
154
+		<td class="tg-031e">ubuntu</td>
155
+		<td class="tg-031e">14.04</td>
156
+		<td class="tg-031e">2d24f826cb16</td>
157
+		<td class="tg-031e">2 days ago</td>
158
+		<td class="tg-031e">188.3 MB</td>
159
+	  </tr>
160
+	  <tr>
161
+		<td class="tg-031e">ubuntu</td>
162
+		<td class="tg-031e">14.04.2</td>
163
+		<td class="tg-031e">2d24f826cb16</td>
164
+		<td class="tg-031e">2 days ago</td>
165
+		<td class="tg-031e">188.3 MB</td>
166
+	  </tr>
167
+	  <tr>
168
+		<td class="tg-031e">ubuntu</td>
169
+		<td class="tg-031e">latest</td>
170
+		<td class="tg-031e">2d24f826cb16</td>
171
+		<td class="tg-031e">2 days ago</td>
172
+		<td class="tg-031e">188.3 MB</td>
173
+	  </tr>
174
+	</table>
175
+
176
+	Locate your new `dry-run-test` image in the list. You should also see a
177
+	number of `ubuntu` images. The build process creates these. They are the
178
+	ancestors of your new Docker development image. When you next rebuild your
179
+	image, the build process reuses these ancestors images if they exist. 
180
+	
181
+	Keeping the ancestor images improves the build performance. When you rebuild
182
+	the child image, the build process uses the local ancestors rather than
183
+	retrieving them from the Hub. The build process gets new ancestors only if
184
+	DockerHub has updated versions.
185
+
186
+## Start a container and run a test
187
+
188
+At this point, you have created a new Docker development environment image. Now,
189
+you'll use this image to create a Docker container to develop in. Then, you'll
190
+build and run a `docker` binary in your container.
191
+
192
+1. Open two additional terminals on your host.
193
+
194
+	At this point, you'll have about three terminals open.
195
+
196
+	![Multiple terminals](/project/images/three_terms.png)
197
+
198
+	Mac OSX users, make sure you run `$(boot2docker shellinit)` in any new 
199
+	terminals.
200
+	
201
+2. In a terminal, create a new container from your `dry-run-test` image.
202
+
203
+		$ docker run --privileged --rm -ti dry-run-test /bin/bash
204
+		root@5f8630b873fe:/go/src/github.com/docker/docker# 
205
+
206
+	The command creates a container from your `dry-run-test` image. It opens an
207
+	interactive terminal (`-ti`) running a `/bin/bash shell`.  The
208
+	`--privileged` flag gives the container access to kernel features and device
209
+	access. It is this flag that allows you to run a container in a container.
210
+	Finally, the `-rm` flag instructs Docker to remove the container when you
211
+	exit the `/bin/bash` shell.
212
+	
213
+	The container includes the source of your image repository in the
214
+	`/go/src/github.com/docker/docker` directory. Try listing the contents to
215
+	verify they are the same as that of your `docker-fork` repo.
216
+	
217
+	![List example](/project/images/list_example.png)
218
+
219
+
220
+3. Investigate your container bit. 
221
+
222
+	If you do a `go version` you'll find the `go` language is part of the
223
+	container. 
224
+	
225
+		root@31ed86e9ddcf:/go/src/github.com/docker/docker# go version
226
+		go version go1.4.2 linux/amd64
227
+	
228
+	Similarly, if you do a `docker version` you find the container
229
+	has no `docker` binary. 
230
+	
231
+		root@31ed86e9ddcf:/go/src/github.com/docker/docker# docker version
232
+		bash: docker: command not found
233
+	
234
+	You will create one in the next steps.
235
+	
236
+4. From the `/go/src/github.com/docker/docker` directory make a `docker` binary with the `make.sh` script.
237
+
238
+		root@5f8630b873fe:/go/src/github.com/docker/docker# project/make.sh binary
239
+    You only call `project/make.sh` to build a binary _inside_ a Docker
240
+	development container as you are now. On your host, you'll use `make`
241
+	commands (more about this later). 
242
+	
243
+	As it makes the binary, the `make.sh` script reports the build's progress.
244
+	When the command completes successfully, you should see the following
245
+	output:
246
+	
247
+		---> Making bundle: ubuntu (in bundles/1.5.0-dev/ubuntu)
248
+		Created package {:path=>"lxc-docker-1.5.0-dev_1.5.0~dev~git20150223.181106.0.1ab0d23_amd64.deb"}
249
+		Created package {:path=>"lxc-docker_1.5.0~dev~git20150223.181106.0.1ab0d23_amd64.deb"}
250
+
251
+	
252
+5. List all the contents of the `binary` directory.
253
+
254
+		root@5f8630b873fe:/go/src/github.com/docker/docker#  ls bundles/1.5.0-dev/binary/
255
+		docker  docker-1.5.0-dev  docker-1.5.0-dev.md5  docker-1.5.0-dev.sha256
256
+		
257
+	  You should see that `binary` directory, just as it sounds, contains the
258
+	  made binaries.
259
+
260
+
261
+6. Copy the `docker` binary to the `/usr/bin` of your container.
262
+
263
+		root@5f8630b873fe:/go/src/github.com/docker/docker#  cp bundles/1.5.0-dev/binary/docker /usr/bin
264
+		
265
+7. Inside your container, check your Docker version.
266
+
267
+	root@5f8630b873fe:/go/src/github.com/docker/docker# docker --version
268
+	Docker version 1.5.0-dev, build 6e728fb
269
+	
270
+	Inside the container you are running a development version. This is version
271
+	on the current branch it reflects the value of the `VERSION` file at the
272
+	root of your `docker-fork` repository.
273
+
274
+8. Start a `docker` daemon running inside your container.
275
+
276
+		root@5f8630b873fe:/go/src/github.com/docker/docker#  docker -dD
277
+		
278
+	The `-dD` flag starts the daemon in debug mode; You'll find this useful
279
+	when debugging your code.
280
+		
281
+9. Bring up one of the terminals on your local host.
282
+
283
+
284
+10. List your containers and look for the container running the `dry-run-test` image.
285
+
286
+		$ docker ps
287
+			
288
+	<style type="text/css">
289
+	.tg  {border-collapse:collapse;border-spacing:0;} .tg td{font-family:monospace, serif;font-size:11px;padding:5px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;} .tg th{font-family:monospace, sans-serif;font-size:11px;font-weight:normal;padding:5px
290
+5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;}
291
+	</style>
292
+	<table class="tg">
293
+	  <tr>
294
+		<th class="tg-031e">CONTAINER ID</th>
295
+		<th class="tg-031e">IMAGE</th>
296
+		<th class="tg-031e">COMMAND</th>
297
+		<th class="tg-031e">CREATED</th>
298
+		<th class="tg-031e">STATUS</th>
299
+		<th class="tg-031e">PORTS</th>
300
+		<th class="tg-031e">NAMES</th>
301
+	  </tr>
302
+	  <tr>
303
+		<td class="tg-031e">474f07652525</td>
304
+		<td class="tg-031e">dry-run-test:latest</td>
305
+		<td class="tg-031e">"hack/dind /bin/bash</td>
306
+		<td class="tg-031e">14 minutes ago</td>
307
+		<td class="tg-031e">Up 14 minutes</td>
308
+		<td class="tg-031e"></td>
309
+		<td class="tg-031e">tender_shockley</td>
310
+	  </tr>
311
+	</table>
312
+		
313
+	In this example, the container's name is `tender_shockley`; yours will be
314
+	different.
315
+		
316
+11. From the terminal, start another shell on your Docker development container.
317
+
318
+		$ docker exec -it tender_shockley bash
319
+		
320
+	At this point, you have two terminals both with a shell open into your
321
+	development container. One terminal is running a debug session. The other
322
+	terminal is displaying a `bash` prompt.
323
+
324
+12. At the prompt, test the Docker client by running the `hello-world` container.	
325
+
326
+		root@9337c96e017a:/go/src/github.com/docker/docker#  docker run hello-world
327
+	
328
+	You should see the image load and return. Meanwhile, you
329
+	can see the calls made via the debug session in your other terminal.
330
+
331
+	![List example](/project/images/three_running.png)
332
+	
333
+	
334
+## Restart a container with your source
335
+
336
+At this point, you have experienced the "Docker inception" technique. That is, you have:
337
+
338
+* built a Docker image from the Docker repository
339
+* created and started a Docker development container from that image
340
+* built a Docker binary inside of your Docker development container
341
+* launched a `docker` daemon using your newly compiled binary
342
+* called the `docker` client to run a `hello-world` container inside your development container
343
+
344
+When you really get to developing code though, you'll want to iterate code
345
+changes and builds inside the container. For that you need to mount your local
346
+Docker repository source into your Docker container. Try that now.
347
+
348
+1. If you haven't already, exit out of BASH shells in your running Docker
349
+container.
350
+
351
+	If you have followed this guide exactly, exiting out your BASH shells stops
352
+	the running container. You can use the `docker ps` command to verify the
353
+	development container is stopped. All of your terminals should be at the
354
+	local host prompt.
355
+	
356
+2. Choose a terminal and make sure you are in your `docker-fork` repository.
357
+
358
+		$ pwd
359
+		/Users/mary/go/src/github.com/moxiegirl/docker-fork
360
+	
361
+	Your location will be different because it reflects your environment. 
362
+
363
+3. Create a container using `dry-run-test` but this time mount your repository onto the `/go` directory inside the container.
364
+
365
+	 	$  docker run --privileged --rm -ti -v `pwd`:/go/src/github.com/docker/docker dry-run-test /bin/bash
366
+
367
+	When you pass `pwd`, `docker` resolves it to your current directory.
368
+
369
+4. From inside the container, list your `binary` directory.
370
+
371
+		root@074626fc4b43:/go/src/github.com/docker/docker# ls bundles/1.5.0-dev/binary
372
+		ls: cannot access binary: No such file or directory
373
+	
374
+	Your `dry-run-test` image does not retain any of the changes you made inside
375
+	the container.  This is the expected behavior for a container. 
376
+	
377
+5. In a fresh terminal on your local host, change to the `docker-fork` root.
378
+
379
+	$ cd ~/repos/docker-fork/
380
+
381
+6. Create a fresh binary but this time use the `make` command.
382
+
383
+		$ make BINDDIR=. binary
384
+	
385
+	The `BINDDIR` flag is only necessary on Mac OS X but it won't hurt to pass
386
+	it on Linux command line. The `make` command, like the `make.sh` script
387
+	inside the container, reports its progress. When the make succeeds, it
388
+	returns the location of the new binary.
389
+	
390
+
391
+7. Back in the terminal running the container, list your `binary` directory.
392
+
393
+		root@074626fc4b43:/go/src/github.com/docker/docker# ls bundles/1.5.0-dev/binary
394
+		docker	docker-1.5.0-dev  docker-1.5.0-dev.md5	docker-1.5.0-dev.sha256 
395
+	
396
+	The compiled binaries created from your repository on your local host are
397
+	now available inside your running Docker development container.
398
+	
399
+8. Repeat the steps you ran in the previous procedure.
400
+
401
+	* copy the binary inside the development container using
402
+		`cp bundles/1.5.0-dev/binary/docker /usr/bin`
403
+	* start `docker -dD` to launch the Docker daemon inside the container
404
+	* run `docker ps` on local host to get the development container's name
405
+	* connect to your running container `docker exec -it container_name bash`
406
+	* use the `docker run hello-world` command to create and run a container inside your development container
407
+	
408
+	
409
+## Where to go next
410
+
411
+Congratulations, you have successfully achieved Docker inception. At this point, you've set up your development environment and verified almost all the essential processes you need to contribute. Of course, before you start contributing, [you'll need to learn one more piece of the development environment, the test framework](/project/test-and-docs/). 
412
+
413
+ 
414
+
0 415
new file mode 100644
... ...
@@ -0,0 +1,298 @@
0
+page_title: Set up the prerequisites
1
+page_description: Describes how to set up your local machine and repository
2
+page_keywords: GitHub account, repository, clone, fork, branch, upstream, Git, Go, make, 
3
+
4
+# Set up the prerequisites
5
+
6
+Work through this page to set up the software and host environment you need to contribute. You'll find instructions for configuring your `git` repository and creating a fork you'll use later in the guide.
7
+
8
+## Get the Required Software
9
+
10
+Before you begin contributing you must have:
11
+
12
+*  a GitHub account
13
+* `git`
14
+* `make` 
15
+* `docker`
16
+
17
+You'll notice that `go`, the language that Docker is written in, is not listed. That's because you don't need it installed; Docker's development environment provides it for you. You'll learn more about the development environment later.
18
+
19
+### Get a GitHub account
20
+
21
+To contribute to the Docker project, you will need a <a
22
+href="https://github.com" target="_blank">GitHub account</a>. A free account is
23
+fine. All the Docker project repositories are public and visible to everyone.
24
+
25
+You should also have some experience using both the GitHub application and `git` on the command line. 
26
+
27
+### Install git
28
+
29
+Install `git` on your local system. You can check if `git` is on already on your
30
+system and properly installed with the following command:
31
+
32
+	$ git --version 
33
+
34
+
35
+This documentation is written using `git` version 2.2.2. Your version may be different depending on your OS.
36
+
37
+### Install make
38
+
39
+Install `make`. You can check if `make` is on your system with the following
40
+command:
41
+
42
+	$ make -v 
43
+
44
+This documentation is written using GNU Make 3.81. Your version may be different depending on your OS.
45
+
46
+### Install or upgrade Docker 
47
+
48
+If you haven't already, install the Docker software using the <a href="/installation" target="_blank">instructions for your operating system</a>. If you have an existing installation, check your version and make sure you have the latest Docker. 
49
+
50
+To check if `docker` is already installed on Linux:
51
+
52
+	$ docker --version
53
+	Docker version 1.5.0, build a8a31ef
54
+
55
+On Mac OS X or Windows, you should have installed Boot2Docker which includes
56
+Docker. You'll need to verify both Boot2Docker and then Docker. This
57
+documentation was written on OS X using the following versions.
58
+
59
+
60
+	$ boot2docker version
61
+	Boot2Docker-cli version: v1.5.0
62
+	Git commit: ccd9032
63
+
64
+	$ docker --version
65
+	Docker version 1.5.0, build a8a31ef
66
+
67
+## Linux users and sudo
68
+
69
+This guide assumes you have added your user to the `docker` group on your system. To check, list the group's contents:
70
+
71
+	$ getent group docker
72
+	docker:x:999:ubuntu
73
+
74
+If the command returns no matches, you have two choices. You can preface this guide's `docker` commands with `sudo` as you work. Alternatively, you can add your user to the `docker` group as follows:
75
+
76
+ 	$ sudo usermod -aG docker ubuntu
77
+
78
+You must log out and back in for this modification to take effect.
79
+
80
+
81
+## Fork and clone the Docker code
82
+
83
+When contributing, you first fork the Docker code repository. A fork copies
84
+a repository at a particular point in time. GitHub tracks for you where a fork originates.
85
+
86
+As you make contributions, you change your fork's code. When you are ready,
87
+you make a pull request back to the original Docker repository. If you aren't
88
+familiar with this workflow, don't worry, this guide walks you through all the
89
+steps. 
90
+
91
+To fork and clone Docker:
92
+
93
+1. Open a browser and log into GitHub with your account.
94
+
95
+2. Go to the <a href="https://github.com/docker/docker" target="_blank">docker/docker repository</a>.
96
+
97
+3. Click the "Fork" button in the upper right corner of the GitHub interface.
98
+
99
+	![Branch Signature](/project/images/fork_docker.png)
100
+
101
+	GitHub forks the repository to your GitHub account. The original
102
+	`docker/docker` repository becomes a new fork `YOUR_ACCOUNT/docker` under
103
+	your account.
104
+	
105
+4. Copy your fork's clone URL from GitHub.
106
+
107
+	GitHub allows you to use HTTPS or SSH protocols for clones. You can use the
108
+	`git` command line or clients like Subversion to clone a repository. 
109
+	
110
+	![Copy clone URL](/project/images/copy_url.png)
111
+	
112
+	This guide assume you are using the HTTPS protocol and the `git` command
113
+	line. If you are comfortable with SSH and some other tool, feel free to use
114
+	that instead. You'll need to convert what you see in the guide to what is
115
+	appropriate to your tool.
116
+		
117
+5. Open a terminal window on your local host and change to your home directory.
118
+
119
+		$ cd ~
120
+		
121
+6. Create a `repos` directory.
122
+
123
+		$ mkdir repos
124
+
125
+7. Change into your `repos` directory.
126
+
127
+		$ cd repos
128
+
129
+5. Clone the fork to your local host into a repository called `docker-fork`.	
130
+
131
+		$ git clone https://github.com/moxiegirl/docker.git docker-fork
132
+	
133
+	Naming your local repo `docker-fork` should help make these instructions
134
+	easier to follow; experienced coders don't typically change the name.
135
+		
136
+6. Change directory into your new `docker-fork` directory.
137
+
138
+		$ cd docker-fork
139
+	
140
+	Take a moment to familiarize yourself with the repository's contents. List
141
+	the contents. 
142
+	
143
+		
144
+##  Set your signature and an upstream remote
145
+
146
+When you contribute to Docker, you must certify you agree with the <a href="http://developercertificate.org/" target="_blank">Developer Certificate of Origin</a>. You indicate your agreement by signing your `git` commits like this:
147
+
148
+	Signed-off-by: Pat Smith <pat.smith@email.com>
149
+
150
+To create a signature, you configure your username and email address in Git. You can set these globally or locally on just your `docker-fork` repository.  You must sign with your real name. We don't accept anonymous contributions or contributions through pseudonyms.
151
+
152
+As you change code in your fork, you'll want to keep it in sync with the changes others make in the `docker/docker` repository.  To make syncing easier, you'll also add a _remote_ called `upstream` that points to `docker/docker`. A remote is just another a project version hosted on the internet or network.
153
+
154
+To configure your username, email, and add a remote:
155
+		
156
+1. Change to the root of your `docker-fork` repository.
157
+
158
+		$ cd docker-fork
159
+
160
+2. 	Set your `user.name` for the repository.
161
+
162
+		$ git config --local user.name "FirstName LastName"
163
+			
164
+3. Set your `user.email` for the repository.
165
+
166
+		$ git config --local user.email "emailname@mycompany.com"
167
+	
168
+4. Set your local repo to track changes upstream, on the `docker` repository. 
169
+
170
+		$ git remote add upstream https://github.com/docker/docker.git
171
+
172
+7. Check the result in your `git` configuration.
173
+
174
+		$ git config --local -l
175
+		core.repositoryformatversion=0
176
+		core.filemode=true
177
+		core.bare=false
178
+		core.logallrefupdates=true
179
+		remote.origin.url=https://github.com/moxiegirl/docker.git
180
+		remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
181
+		branch.master.remote=origin
182
+		branch.master.merge=refs/heads/master
183
+		user.name=Mary Anthony
184
+		user.email=mary@docker.com
185
+		remote.upstream.url=https://github.com/docker/docker.git
186
+		remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/*
187
+
188
+	To list just the remotes use:
189
+		
190
+		$ git remote -v		
191
+		origin	https://github.com/moxiegirl/docker.git (fetch)
192
+		origin	https://github.com/moxiegirl/docker.git (push)
193
+		upstream	https://github.com/docker/docker.git (fetch)
194
+		upstream	https://github.com/docker/docker.git (push)
195
+	
196
+	
197
+		
198
+## Create and push a branch
199
+
200
+As you change code in your fork, you make your changes on a repository branch. The branch name should reflect what you are working on. In this section, you create a branch, make a change, and push it up to your fork. 
201
+
202
+This branch is just for testing your config for this guide. The changes are part of a dry run so the branch name is going to be dry-run-test. To create an push the branch to your fork on GitHub:
203
+
204
+1. Open a terminal and go to the root of your `docker-fork`.
205
+
206
+		$ cd docker-fork
207
+
208
+2. Create a `dry-run-test` branch.
209
+
210
+		$ git checkout -b dry-run-test
211
+		
212
+	This command creates the branch and switches the repository to it.
213
+
214
+3. Verify you are in your new branch.
215
+
216
+		$ git branch
217
+		* dry-run-test
218
+  		  master
219
+  	
220
+  	The current branch has an * (asterisk) marker. So, these results shows you
221
+ 	are on the right branch. 
222
+	
223
+4. Create a `TEST.md` file in the repository's root.
224
+
225
+		$ touch TEST.md
226
+	
227
+5. Edit the file and add your email and location.
228
+
229
+	![Add your information](/project/images/contributor-edit.png)
230
+	
231
+	You can use any text editor you are comfortable with.
232
+
233
+6. Close and save the file.
234
+
235
+7. Check the status of your branch. 
236
+
237
+		$ git status
238
+		On branch dry-run-test
239
+		Untracked files:
240
+		  (use "git add <file>..." to include in what will be committed)
241
+
242
+			TEST.md
243
+
244
+		nothing added to commit but untracked files present (use "git add" to track)
245
+	
246
+	You've only changed the one file. It is untracked so far by git.
247
+	
248
+8. Add your file.
249
+
250
+		$ git add TEST.md
251
+		
252
+	That is the only _staged_ file. Stage is fancy word for work that Git is
253
+	tracking.
254
+
255
+9. Sign and commit your change.
256
+
257
+		$ git -s -m "Making a dry run test."
258
+		[dry-run-test 6e728fb] Making a dry run test
259
+		 1 file changed, 1 insertion(+)
260
+		 create mode 100644 TEST.md
261
+
262
+
263
+	Commit messages should have a short summary sentence of no more than 50
264
+	characters. Optionally, you can also include a more detailed explanation
265
+	after the summary. Separate the summary from any explanation with an empty
266
+	line.
267
+
268
+8. Push your changes to GitHub.
269
+
270
+   	 	$ git push --set-upstream origin dry-run-test
271
+		Username for 'https://github.com': moxiegirl
272
+		Password for 'https://moxiegirl@github.com': 
273
+		
274
+	Git prompts you for your GitHub username and password. Then, the command
275
+	returns a result.
276
+		
277
+		Counting objects: 13, done.
278
+		Compressing objects: 100% (2/2), done.
279
+		Writing objects: 100% (3/3), 320 bytes | 0 bytes/s, done.
280
+		Total 3 (delta 1), reused 0 (delta 0)
281
+		To https://github.com/moxiegirl/docker.git
282
+		 * [new branch]      dry-run-test -> dry-run-test
283
+		Branch dry-run-test set up to track remote branch dry-run-test from origin.
284
+   	 	
285
+   	 		
286
+9. Open your browser to Github.
287
+
288
+10. Navigate to your Docker fork.
289
+
290
+11. Make sure the `dry-run-test` branch exists, that it has your commit, and the commit is signed.
291
+
292
+	![Branch Signature](/project/images/branch-sig.png)
293
+
294
+	
295
+## Where to go next
296
+
297
+Congratulations, you have set up and validated the contributor requirements. In the next section you'll [learn how to set up and work in a Docker development container](/project/set-up-dev-env/).
0 298
\ No newline at end of file
1 299
new file mode 100644
... ...
@@ -0,0 +1,262 @@
0
+page_title: Run tests and test documentation
1
+page_description: Describes Docker's testing infrastructure
2
+page_keywords: make test, make docs, Go tests, gofmt, contributing, running tests
3
+
4
+# Run tests and test documentation
5
+
6
+Contributing includes testing your changes. If you change the Docker code, you
7
+may need to add a new test or modify an existing one. Your contribution could
8
+even be adding tests to Docker. For this reason, you need to know a little
9
+about Docker's test infrastructure.
10
+
11
+Many contributors contribute documentation only. Or, a contributor makes a code contribution that changes how Docker behaves and that change needs documentation. For these reasons, you also need to know how to build, view, and test the Docker documentation.
12
+
13
+In this section, you run tests in the `dry-run-test` branch of your Docker fork. If you have followed along in this guide, you already have this branch. If you don't have this branch, you can create it or simply use another of your branches. 
14
+
15
+## Understand testing at Docker
16
+
17
+Docker tests use the Go language's test framework. In this framework, files
18
+whose names end in `_test.go` contain test code; you'll find test files like
19
+this throughout the Docker repo. Use these files for inspiration when writing
20
+your own tests. For information on Go's test framework, see <a
21
+href="http://golang.org/pkg/testing/" target="_blank">Go's testing package
22
+documentation</a> and the <a href="http://golang.org/cmd/go/#hdr-Test_packages"
23
+target="_blank">go test help</a>. 
24
+
25
+You are responsible for _unit testing_ your contribution when you add new or change existing Docker code. A unit test is a piece of code that invokes a single, small piece of code ( _unit of work_ ) to verify the unit works as expected. 
26
+
27
+Depending on your contribution, you may need to add _integration tests_. These are tests that combine two or more work units into one component. These work units each have unit tests and then, together, integration tests that test the interface between the components. The `integration` and `integration-cli` directories in the Docker repository contain integration test code.
28
+
29
+Testing is its own speciality. If you aren't familiar with testing techniques, there is a lot of information available to you on the Web. For now, you should understand that, the Docker maintainers may ask you to write a new test or change an existing one. 
30
+
31
+### Run tests on your local host
32
+
33
+Before submitting any code change, you should run the entire Docker test suite. The `Makefile` contains a target for the entire test suite. The target's name is simply `test`. The make file contains several targets for testing:
34
+
35
+<style type="text/css">
36
+.tg  {border-collapse:collapse;border-spacing:0;margin-bottom:15px;}
37
+.tg td{font-family:Arial, sans-serif;font-size:14px;padding:5px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
38
+.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:5px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;text-align:left;}
39
+.tg .tg-vyw9{font-family:"Courier New", Courier, monospace !important;}
40
+.tg .tg-e3zv{font-weight:bold}
41
+</style>
42
+<table class="tg">
43
+  <tr>
44
+    <th class="tg-e3zv">Target</th>
45
+    <th class="tg-e3zv">What this target does</th>
46
+  </tr>
47
+  <tr>
48
+    <td class="tg-vyw9">test</td>
49
+    <td class="tg-031e">Run all the tests.</td>
50
+  </tr>
51
+  <tr>
52
+    <td class="tg-vyw9">test-unit</td>
53
+    <td class="tg-031e">Run just the unit tests.</td>
54
+  </tr>
55
+  <tr>
56
+    <td class="tg-vyw9">test-integration</td>
57
+    <td class="tg-031e">Run just integration tests.</td>
58
+  </tr>
59
+  <tr>
60
+    <td class="tg-vyw9">test-integration-cli</td>
61
+    <td class="tg-031e">Run the test for the integration command line interface.</td>
62
+  </tr>
63
+  <tr>
64
+    <td class="tg-vyw9">test-docker-py</td>
65
+    <td class="tg-031e">Run the tests for Docker API client.</td>
66
+  </tr>
67
+  <tr>
68
+    <td class="tg-vyw9">docs-test</td>
69
+    <td class="tg-031e">Runs the documentation test build.</td>
70
+  </tr>
71
+</table>
72
+
73
+Run the entire test suite on your current repository:
74
+
75
+1. Open a terminal on your local host.
76
+
77
+2. Change to the root your Docker repository.
78
+
79
+		$ cd docker-fork
80
+
81
+3. Make sure you are in your development branch.
82
+
83
+		$ git checkout dry-run-test
84
+
85
+4. Run the `make test` command.
86
+
87
+		$ make test
88
+		
89
+	This command does several things, it creates a container temporarily for testing. Inside that container, the `make`:
90
+	
91
+	* creates a new binary
92
+	* cross-compiles all the binaries for the various operating systems
93
+	* runs the all the tests in the system
94
+	
95
+	It can take several minutes to run all the tests. When they complete
96
+	successfully, you see the output concludes with something like this:
97
+	
98
+		
99
+		[PASSED]: top - sleep process should be listed in privileged mode
100
+		[PASSED]: version - verify that it works and that the output is properly formatted
101
+		PASS
102
+		coverage: 70.8% of statements
103
+		---> Making bundle: test-docker-py (in bundles/1.5.0-dev/test-docker-py)
104
+		+++ exec docker --daemon --debug --host unix:///go/src/github.com/docker/docker/bundles/1.5.0-dev/test-docker-py/docker.sock --storage-driver vfs --exec-driver native --pidfile /go/src/github.com/docker/docker/bundles/1.5.0-dev/test-docker-py/docker.pid
105
+		.................................................................
106
+		----------------------------------------------------------------------
107
+		Ran 65 tests in 89.266s
108
+		 
109
+	
110
+### Run test targets inside the development container
111
+
112
+If you are working inside a Docker development container, you use the `project/make.sh` script to run tests. The `project/make.sh` script doesn't have a single target that runs all the tests. Instead, you provide a single commmand line with multiple targets that does the same thing.
113
+
114
+Try this now.
115
+
116
+1. Open a terminal and change to the `docker-fork` root.
117
+
118
+2. Start a Docker development image.
119
+
120
+	If you are following along with this guide, you should have a `dry-run-test` image. 
121
+
122
+		$ docker run --privileged --rm -ti -v `pwd`:/go/src/github.com/docker/docker dry-run-test /bin/bash
123
+
124
+3. Run the tests using the `project/make.sh` script.
125
+
126
+		root@5f8630b873fe:/go/src/github.com/docker/docker# project/make.sh dynbinary binary cross test-unit test-integration test-integration-cli test-docker-py
127
+		
128
+	The tests run just as they did within your local host.
129
+		
130
+Of course, you can also run a subset of these targets too. For example, to run just the unit tests:
131
+
132
+			root@5f8630b873fe:/go/src/github.com/docker/docker# project/make.sh dynbinary binary cross test-unit
133
+
134
+Most test targets require that you build these precursor targets first: `dynbinary binary cross`
135
+
136
+
137
+## Running individual or multiple named tests 
138
+
139
+You can use the `TESTFLAGS` environment variable to run a single test. The flag's value is passed as arguments to the `go test` command. For example, from your local host you can run the `TestBuild` test with this command:
140
+
141
+    	$ TESTFLAGS='-test.run \^TestBuild\$' make test
142
+    
143
+To run the same test inside your Docker development container, you do this:
144
+
145
+		root@5f8630b873fe:/go/src/github.com/docker/docker# TESTFLAGS='-run ^TestBuild$' project/make.sh
146
+
147
+## If test under Boot2Docker fail do to space errors
148
+
149
+Running the tests requires about 2GB of memory. If you are running your container on bare metal, that is you are not running with Boot2Docker, your Docker development container is able to take the memory it requires directly from your local host.
150
+
151
+If you are running Docker using Boot2Docker, the VM uses 2048MB by default. This means you can exceed the memory of your VM running tests in a Boot2Docker environment. When the test suite runs out of memory, it returns errors similar to the following:
152
+
153
+    server.go:1302 Error: Insertion failed because database is full: database or
154
+    disk is full
155
+
156
+    utils_test.go:179: Error copy: exit status 1 (cp: writing
157
+    '/tmp/docker-testd5c9-[...]': No space left on device
158
+
159
+To increase the memory on your VM, you need to reinitialize the Boot2Docker VM with new memory settings.
160
+
161
+1. Stop all running containers.
162
+
163
+2. View the current memory setting.
164
+
165
+		$ boot2docker info
166
+		{
167
+			"Name": "boot2docker-vm",
168
+			"UUID": "491736fd-4075-4be7-a6f5-1d4cdcf2cc74",
169
+			"Iso": "/Users/mary/.boot2docker/boot2docker.iso",
170
+			"State": "running",
171
+			"CPUs": 8,
172
+			"Memory": 2048,
173
+			"VRAM": 8,
174
+			"CfgFile": "/Users/mary/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vbox",
175
+			"BaseFolder": "/Users/mary/VirtualBox VMs/boot2docker-vm",
176
+			"OSType": "",
177
+			"Flag": 0,
178
+			"BootOrder": null,
179
+			"DockerPort": 0,
180
+			"SSHPort": 2022,
181
+			"SerialFile": "/Users/mary/.boot2docker/boot2docker-vm.sock"
182
+		}
183
+
184
+
185
+3. Delete your existing `boot2docker` profile.
186
+
187
+		$ boot2docker delete
188
+
189
+4. Reinitialize `boot2docker` and specify a higher memory.
190
+
191
+		$ boot2docker init -m 5555
192
+
193
+5. Verify the memory was reset.
194
+
195
+		$ boot2docker info
196
+
197
+6. Restart your container and try your test again.
198
+
199
+
200
+## Build and test the documentation
201
+
202
+The Docker documentation source files are under `docs/sources`. The content is
203
+written using extended Markdown. We use the static generator <a
204
+href="http://www.mkdocs.org/" target="_blank">MkDocs</a> to build Docker's
205
+documentation. Of course, you don't need to install this generator
206
+to build the documentation, it is included with container.
207
+
208
+You should always check your documentation for grammar and spelling. The best way to do this is with <a href="http://www.hemingwayapp.com/" target="_blank">an online grammar checker</a>.
209
+
210
+When you change a documentation source file, you should test your change locally to make sure your content is there and any links work correctly. You can build the documentation from the local host.  The build starts a container and loads the documentation into a server. As long as this container runs, you can browse the docs.
211
+
212
+1. In a terminal, change to the root of your `docker-fork` repository.
213
+
214
+		$ cd ~/repos/dry-run-test
215
+
216
+2. Make sure you are in your feature branch.
217
+
218
+		$ git status
219
+		On branch dry-run-test
220
+		Your branch is up-to-date with 'origin/dry-run-test'.
221
+		nothing to commit, working directory clean
222
+				
223
+3. Build the documentation.
224
+
225
+		$ make docs
226
+		
227
+	When the build completes, you'll see a final output message similar to the
228
+	following:
229
+	
230
+		Successfully built ee7fe7553123
231
+		docker run --rm -it  -e AWS_S3_BUCKET -e NOCACHE -p 8000:8000 "docker-docs:dry-run-test" mkdocs serve
232
+		Running at: http://0.0.0.0:8000/
233
+		Live reload enabled.
234
+		Hold ctrl+c to quit.
235
+		
236
+4. Enter the URL in your browser.
237
+
238
+	If you are running Boot2Docker, replace the default localhost address
239
+	(0.0.0.0) with your DOCKERHOST value. You can get this value at any time by
240
+	entering `boot2docker ip` at the command line.
241
+	
242
+5. Once in the documentation, look for the red notice to verify you are seeing the correct build.
243
+
244
+	![Beta documentation](/project/images/red_notice.png)
245
+
246
+6. Navigate to your new or changed document.
247
+
248
+7. Review both the content and the links.
249
+
250
+8. Return to your terminal and exit out of the running documentation container.
251
+
252
+
253
+## Where to go next
254
+
255
+Congratulations, you have successfully completed the basics you need to understand the Docker test framework. In the next steps, you use what you have learned so far to [contribute to Docker by working on an issue](/project/make-a-contribution/).
256
+
257
+
258
+
259
+
260
+
261
+
0 262
new file mode 100644
... ...
@@ -0,0 +1,37 @@
0
+page_title: README first
1
+page_description: Introduction to project contribution at Docker
2
+page_keywords: Gordon, introduction, turtle, machine, libcontainer, how to
3
+
4
+# README first 
5
+
6
+This section of the documentation contains a guide for Docker users who want to
7
+contribute code or documentation to the Docker project. As a community, we
8
+share rules of behavior and interaction. Make sure you are familiar with the <a href="https://github.com/docker/docker/blob/master/CONTRIBUTING.md#docker-community-guidelines" target="_blank">community guidelines</a> before continuing.
9
+
10
+## Where and what you can contribute
11
+
12
+The Docker project consists of not just one but several repositories on GitHub. So, in addition to the `docker/docker` repository, there is the `docker/libcontainer` repo, the `docker/machine` repo, and several more. Contribute to any of these and you contribute to the Docker project.
13
+
14
+Not all Docker repositories use the Go language. Also, each repository has its own focus area. So, if you are an experienced contributor, think about contributing to a Docker repository that has a language or a focus area you are familiar with. 
15
+
16
+If you are new to the open source community, to Docker, or to formal programming, you should start out contributing to the `docker/docker` repository. Why? Because this guide is written for that repository specifically. 
17
+
18
+Finally, code or documentation isn't the only way to contribute. You can report an issue, add to discussions in our community channel, write a blog post, or take a usability test. You can even propose your own type of contribution. Right now we don't have a lot written about this yet, so just email <mailto:feedback@docker.com> if this type of contributing interests you.
19
+
20
+## A turtle is involved
21
+
22
+![Gordon](/project/images/gordon.jpeg)
23
+
24
+Enough said.
25
+
26
+## How to use this guide
27
+
28
+This is written for the distracted, the overworked, the sloppy reader with fair `git` skills and a failing memory for the GitHub GUI. The guide attempts to explain how to use the Docker environment as precisely, predictably, and procedurally as possible.
29
+
30
+Users who are new to the Docker development environment should start by setting up their environment. Then, they should try a simple code change. After that, you should find something to work on or propose at totally new change.
31
+
32
+If you are a programming prodigy, you still may find this documentation useful. Please feel free to skim past information you find obvious or boring.
33
+
34
+## How to get started
35
+
36
+Start by [setting up the prerequisites for contributing](/project/set-up-prereqs/). 
0 37
\ No newline at end of file