github.com/sijibomii/docker@v0.0.0-20231230191044-5cf6ca554647/docs/README.md (about) 1 <!--[metadata]> 2 +++ 3 draft = true 4 +++ 5 <![end-metadata]--> 6 7 # Docker Documentation 8 9 The source for Docker documentation is in this directory. Our 10 documentation uses extended Markdown, as implemented by 11 [MkDocs](http://mkdocs.org). The current release of the Docker documentation 12 resides on [https://docs.docker.com](https://docs.docker.com). 13 14 ## Understanding the documentation branches and processes 15 16 Docker has two primary branches for documentation: 17 18 | Branch | Description | URL (published via commit-hook) | 19 |----------|--------------------------------|------------------------------------------------------------------------------| 20 | `docs` | Official release documentation | [https://docs.docker.com](https://docs.docker.com) | 21 | `master` | Merged but unreleased development work | | 22 23 Additions and updates to upcoming releases are made in a feature branch off of 24 the `master` branch. The Docker maintainers also support a `docs` branch that 25 contains the last release of documentation. 26 27 After a release, documentation updates are continually merged into `master` as 28 they occur. This work includes new documentation for forthcoming features, bug 29 fixes, and other updates. 30 31 Periodically, the Docker maintainers update `docs.docker.com` between official 32 releases of Docker. They do this by cherry-picking commits from `master`, 33 merging them into `docs`, and then publishing the result. 34 35 In the rare case where a change is not forward-compatible, changes may be made 36 on other branches by special arrangement with the Docker maintainers. 37 38 ### Quickstart for documentation contributors 39 40 If you are a new or beginner contributor, we encourage you to read through the 41 [our detailed contributors 42 guide](https://docs.docker.com/opensource/code/). The guide explains in 43 detail, with examples, how to contribute. If you are an experienced contributor 44 this quickstart should be enough to get you started. 45 46 The following is the essential workflow for contributing to the documentation: 47 48 1. Fork the `docker/docker` repository. 49 50 2. Clone the repository to your local machine. 51 52 3. Select an issue from `docker/docker` to work on or submit a proposal of your 53 own. 54 55 4. Create a feature branch from `master` in which to work. 56 57 By basing from `master` your work is automatically included in the next 58 release. It also allows docs maintainers to easily cherry-pick your changes 59 into the `docs` release branch. 60 61 4. Modify existing or add new `.md` files to the `docs` directory. 62 63 5. As you work, build the documentation site locally to see your changes. 64 65 The `docker/docker` repository contains a `Dockerfile` and a `Makefile`. 66 Together, these create a development environment in which you can build and 67 run a container running the Docker documentation website. To build the 68 documentation site, enter `make docs` in the `docs` directory of your `docker/docker` fork: 69 70 $ make docs 71 .... (lots of output) .... 72 docker run --rm -it -e AWS_S3_BUCKET -p 8000:8000 "docker-docs:master" mkdocs serve 73 Running at: http://0.0.0.0:8000/ 74 Live reload enabled. 75 Hold ctrl+c to quit. 76 77 78 The build creates an image containing all the required tools, adds the local 79 `docs/` directory and generates the HTML files. Then, it runs a Docker 80 container with this image. 81 82 The container exposes port 8000 on the localhost so that you can connect and 83 see your changes. If you use Docker Machine, the `docker-machine ip 84 <machine-name>` command gives you the address of your server. 85 86 6. Check your writing for style and mechanical errors. 87 88 Use our [documentation style 89 guide](https://docs.docker.com/opensource/doc-style/) to check style. There are 90 several [good grammar and spelling online 91 checkers](http://www.hemingwayapp.com/) that can check your writing 92 mechanics. 93 94 7. Squash your commits on your branch. 95 96 8. Make a pull request from your fork back to Docker's `master` branch. 97 98 9. Work with the reviewers until your change is approved and merged. 99 100 ### Debugging and testing 101 102 If you have any issues you need to debug, you can use `make docs-shell` and then 103 run `mkdocs serve`. You can use `make docs-test` to generate a report of missing 104 links that are referenced in the documentation—there should be none. 105 106 ## Style guide 107 108 If you have questions about how to write for Docker's documentation, please see 109 the [style guide](https://docs.docker.com/opensource/doc-style/). The style guide provides 110 guidance about grammar, syntax, formatting, styling, language, or tone. If 111 something isn't clear in the guide, please submit an issue to let us know or 112 submit a pull request to help us improve it. 113 114 115 ## Publishing documentation (for Docker maintainers) 116 117 To publish Docker's documentation you need to have Docker up and running on your 118 machine. You'll also need a `docs/awsconfig` file containing the settings you 119 need to access the AWS bucket you'll be deploying to. 120 121 The process for publishing is to build first to an AWS bucket, verify the build, 122 and then publish the final release. 123 124 1. Have Docker installed and running on your machine. 125 126 2. Ask the core maintainers for the `awsconfig` file. 127 128 3. Copy the `awsconfig` file to the `docs/` directory. 129 130 The `awsconfig` file contains the profiles of the S3 buckets for our 131 documentation sites. (If needed, the release script creates an S3 bucket and 132 pushes the files to it.) Each profile has this format: 133 134 [profile dowideit-docs] 135 aws_access_key_id = IHOIUAHSIDH234rwf.... 136 aws_secret_access_key = OIUYSADJHLKUHQWIUHE...... 137 region = ap-southeast-2 138 139 The `profile` name must be the same as the name of the bucket you are 140 deploying to. 141 142 4. Call the `make` from the `docker` directory. 143 144 $ make AWS_S3_BUCKET=dowideit-docs docs-release 145 146 This publishes _only_ to the `http://bucket-url/v1.2/` version of the 147 documentation. 148 149 5. If you're publishing the current release's documentation, you need to also 150 update the root docs pages by running 151 152 $ make AWS_S3_BUCKET=dowideit-docs BUILD_ROOT=yes docs-release 153 154 ### Errors publishing using a Docker Machine VM 155 156 Sometimes, in a Windows or Mac environment, the publishing procedure returns this 157 error: 158 159 Post http:///var/run/docker.sock/build?rm=1&t=docker-docs%3Apost-1.2.0-docs_update-2: 160 dial unix /var/run/docker.sock: no such file or directory. 161 162 If this happens, set the Docker host. Run the following command to get the 163 variables in your shell: 164 165 docker-machine env <machine-name> 166 167 Then, set your environment accordingly. 168 169 ## Cherry-picking documentation changes to update an existing release. 170 171 Whenever the core team makes a release, they publish the documentation based on 172 the `release` branch. At that time, the `release` branch is copied into the 173 `docs` branch. The documentation team makes updates between Docker releases by 174 cherry-picking changes from `master` into any of the documentation branches. 175 Typically, we cherry-pick into the `docs` branch. 176 177 For example, to update the current release's docs, do the following: 178 179 1. Go to your `docker/docker` fork and get the latest from master. 180 181 $ git fetch upstream 182 183 2. Checkout a new branch based on `upstream/docs`. 184 185 You should give your new branch a descriptive name. 186 187 $ git checkout -b post-1.2.0-docs-update-1 upstream/docs 188 189 3. In a browser window, open [https://github.com/docker/docker/commits/master]. 190 191 4. Locate the merges you want to publish. 192 193 You should only cherry-pick individual commits; do not cherry-pick merge 194 commits. To minimize merge conflicts, start with the oldest commit and work 195 your way forward in time. 196 197 5. Copy the commit SHA from GitHub. 198 199 6. Cherry-pick the commit. 200 201 $ git cherry-pick -x fe845c4 202 203 7. Repeat until you have cherry-picked everything you want to merge. 204 205 8. Push your changes to your fork. 206 207 $ git push origin post-1.2.0-docs-update-1 208 209 9. Make a pull request to merge into the `docs` branch. 210 211 Do __NOT__ merge into `master`. 212 213 10. Have maintainers review your pull request. 214 215 11. Once the PR has the needed "LGTMs", merge it on GitHub. 216 217 12. Return to your local fork and make sure you are still on the `docs` branch. 218 219 $ git checkout docs 220 221 13. Fetch your merged pull request from `docs`. 222 223 $ git fetch upstream/docs 224 225 14. Ensure your branch is clean and set to the latest. 226 227 $ git reset --hard upstream/docs 228 229 15. Copy the `awsconfig` file into the `docs` directory. 230 231 16. Make the beta documentation 232 233 $ make AWS_S3_BUCKET=beta-docs.docker.io BUILD_ROOT=yes docs-release 234 235 17. Open [the beta 236 website](http://beta-docs.docker.io.s3-website-us-west-2.amazonaws.com/) site 237 and make sure what you published is correct. 238 239 19. When you're happy with your content, publish the docs to our live site: 240 241 $ make AWS_S3_BUCKET=docs.docker.com BUILD_ROOT=yes 242 DISTRIBUTION_ID=C2K6......FL2F docs-release 243 244 20. Test the uncached version of the live docs at [http://docs.docker.com.s3-website-us-east-1.amazonaws.com/] 245 246 247 ### Caching and the docs 248 249 New docs do not appear live on the site until the cache (a complex, distributed 250 CDN system) is flushed. The `make docs-release` command flushes the cache _if_ 251 the `DISTRIBUTION_ID` is set to the Cloudfront distribution ID. The cache flush 252 can take at least 15 minutes to run and you can check its progress with the CDN 253 Cloudfront Purge Tool Chrome app. 254 255 ## Removing files from the docs.docker.com site 256 257 Sometimes it becomes necessary to remove files from the historical published documentation. 258 The most reliable way to do this is to do it directly using `aws s3` commands running in a 259 docs container: 260 261 Start the docs container like `make docs-shell`, but bind mount in your `awsconfig`: 262 263 ``` 264 docker run --rm -it -v $(CURDIR)/docs/awsconfig:/docs/awsconfig docker-docs:master bash 265 ``` 266 267 and then the following example shows deleting 2 documents from s3, and then requesting the 268 CloudFlare cache to invalidate them: 269 270 271 ``` 272 export BUCKET BUCKET=docs.docker.com 273 export AWS_CONFIG_FILE=$(pwd)/awsconfig 274 aws s3 --profile $BUCKET ls s3://$BUCKET 275 aws s3 --profile $BUCKET rm s3://$BUCKET/v1.0/reference/api/docker_io_oauth_api/index.html 276 aws s3 --profile $BUCKET rm s3://$BUCKET/v1.1/reference/api/docker_io_oauth_api/index.html 277 278 aws configure set preview.cloudfront true 279 export DISTRIBUTION_ID=YUTIYUTIUTIUYTIUT 280 aws cloudfront create-invalidation --profile docs.docker.com --distribution-id $DISTRIBUTION_ID --invalidation-batch '{"Paths":{"Quantity":1, "Items":["/v1.0/reference/api/docker_io_oauth_api/"]},"CallerReference":"6Mar2015sventest1"}' 281 aws cloudfront create-invalidation --profile docs.docker.com --distribution-id $DISTRIBUTION_ID --invalidation-batch '{"Paths":{"Quantity":1, "Items":["/v1.1/reference/api/docker_io_oauth_api/"]},"CallerReference":"6Mar2015sventest1"}' 282 ``` 283 284 ### Generate the man pages 285 286 For information on generating man pages (short for manual page), see the README.md 287 document in [the man page directory](https://github.com/docker/docker/tree/master/docker) 288 in this project.