# Docs @ Docker Welcome to the repo for our documentation. This is the source for [https://docs.docker.com/](https://docs.docker.com/). Feel free to send us pull requests and file issues. Our docs are completely open source and we deeply appreciate contributions from our community! ## Table of Contents - [Providing feedback](#providing-feedback) - [Contributing](#contributing) - [Files not edited here](#files-not-edited-here) - [Overall doc improvements](#overall-doc-improvements) - [Per-PR staging on GitHub](#per-pr-staging-on-github) - [Build the docs locally](#build-the-docs-locally) - [Read these docs offline](#read-these-docs-offline) - [Important files](#important-files) - [Relative linking for GitHub viewing](#relative-linking-for-github-viewing) - [Testing changes and practical guidance](#testing-changes-and-practical-guidance) - [Per-page front-matter](#per-page-front-matter) - [Creating tabs](#creating-tabs) - [Running in-page Javascript](#running-in-page-javascript) - [Images](#images) - [Copyright and license](#copyright-and-license) ## Providing feedback We really want your feedback, and we've made it easy. You can edit a page or request changes in the right column of every page on [docs.docker.com](https://docs.docker.com/). You can also rate each page by clicking a link at the footer. **Only file issues about the documentation in this repository.** One way to think about this is that you should file a bug here if your issue is that you don't see something that should be in the docs, or you see something incorrect or confusing in the docs. - If your problem is a general question about how to configure or use Docker, ask in [https://forums.docker.com](https://forums.docker.com) instead. - If you have an idea for a new feature or behavior change in a specific aspect of Docker, or have found a bug in part of Docker, file that issue in the project's code repository. ## Contributing We value your documentation contributions, and we want to make it as easy as possible to work in this repository. One of the first things to decide is which branch to base your work on. If you get confused, just ask and we will help. If a reviewer realizes you have based your work on the wrong branch, we'll let you know so that you can rebase it. >**Note**: To contribute code to Docker projects, see the [Contribution guidelines](CONTRIBUTING.md). ### Files not edited here Files and directories listed in the `path:` keys in [`.NOT_EDITED_HERE.yaml`](.NOT_EDITED_HERE.yaml) are maintained in other repositories and should not be edited in this one. Pull requests against these files will be rejected. Make your edits to the files in the repository and path in the `source:` key in the YAML file. ### Overall doc improvements Pull requests should be opened against the `master` branch, this includes: - Conceptual and task-based information not specific to new features - Restructuring / rewriting - Doc bug fixing - Typos and grammar errors > Do you enjoy creating graphics? Good graphics are key to great documentation, > and we especially value contributions in this area. ## Per-PR staging on GitHub For every PR against `master`, a staged version of the site is built using Netlify. If the site builds, you will see **deploy/netlify — Deploy preview ready**. Otherwise, you will see an error. Click **Details** to review the staged site or the errors that prevented it from building. Review the staged site and amend your commit if necessary. Reviewers will also check the staged site before merging the PR, to protect the integrity of [https://docs.docker.com/](https://docs.docker.com/). ## Build the docs locally You have three options: 1. On your local machine, clone this repo and run our staging container: ```bash git clone --recursive https://github.com/docker/docker.github.io.git cd docker.github.io docker-compose up --build ``` If you haven't got Docker Compose installed, [follow these installation instructions](https://docs.docker.com/compose/install/). The container runs in the background and incrementally rebuilds the site each time a file changes. You can keep your browser open to http://localhost:4000/ and refresh to see your changes. The container runs in the foreground, but you can use `CTRL+C` to get the command prompt back. To stop the container, issue the following command: ```bash docker-compose down ``` 2. Build and run a Docker image for your working branch. ```bash DOCKER_BUILDKIT=1 docker build -t docker build -t docker-docs docker run --rm -it -p 4000:4000 docker-docs ``` After the `docker run` command, copy the URL provided in the container build output in a browser, http://0.0.0.0:4000, and verify your changes. 3. Install Jekyll and GitHub Pages on your local machine. a. Clone this repo by running: ```bash git clone --recursive https://github.com/docker/docker.github.io.git ``` b. Install Ruby 2.3 or later as described in [Installing Ruby](https://www.ruby-lang.org/en/documentation/installation/). c. Install Bundler: ```bash gem install bundler ``` d. If you use Ubuntu, install packages required for the Nokogiri HTML parser: ```bash sudo apt-get install ruby-dev zlib1g-dev liblzma-dev ``` e. Install Jekyll and other required dependencies: ```bash bundle install ``` >**Note**: You may need to install some packages manually. f. Change the directory to `docker.github.io`. g. Use the `jekyll serve` command to continuously build the HTML output. The `jekyll serve` process runs in the foreground, and starts a web server running on http://localhost:4000/ by default. To stop it, use `CTRL+C`. You can continue working in a second terminal and Jekyll will rebuild the website incrementally. Refresh the browser to preview your changes. ## Read these docs offline To read the docs offline, you can use either a standalone container or a swarm service. To see all available tags, go to [Docker Hub](https://docs.docker.com/docker-hub/). The following examples use the `latest` tag: - Run a single container: ```bash docker run -it -p 4000:4000 docs/docker.github.io:latest ``` - Run a swarm service: ```bash docker service create -p 4000:4000 --name localdocs --replicas 1 docs/docker.github.io:latest ``` This example uses only a single replica, but you could run as many replicas as you'd like. Either way, you can now access the docs at port 4000 on your Docker host. ## Important files - `/_data/toc.yaml` defines the left-hand navigation for the docs - `/js/menu.js` defines most of the docs-specific JS such as TOC generation and menu syncing - `/css/style.scss` defines the docs-specific style rules - `/_layouts/docs.html` is the HTML template file, which defines the header and footer, and includes all the JS/CSS that serves the docs content ## Relative linking for GitHub viewing Feel free to link to `../foo.md` so that the docs are readable in GitHub, but keep in mind that Jekyll templating notation `{% such as this %}` will render in raw text and not be processed. In general it's best to assume the docs are being read directly on [https://docs.docker.com/](https://docs.docker.com/). ### Testing changes and practical guidance If you want to test a style change, or if you want to see how to achieve a particular outcome with Markdown, Bootstrap, JQuery, or something else, have a look at `test.md` (which renders in the site at `/test/`). ### Per-page front-matter The front-matter of a given page is in a section at the top of the Markdown file that starts and ends with three hyphens. It includes YAML content. The following keys are supported. The title, description, and keywords are required. | Key | Required | Description | |------------------------|-----------|-----------------------------------------| | title | yes | The page title. This is added to the HTML output as a `