Merge pull request #10549 from thaJeztah/remove_base_href

Template: remove "base href" and fix javascript link-fixing
This commit is contained in:
Usha Mandya 2020-04-23 11:00:27 +00:00 committed by GitHub
commit 0fffff2ec5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 352 additions and 359 deletions

View File

@ -1,7 +1,6 @@
{% capture tabChar %} {% endcapture %}<!-- Make sure atom is using hard tabs --> {% capture tabChar %} {% endcapture %}<!-- Make sure atom is using hard tabs -->
{% if include.datafolder and include.datafile %}
{% assign controller_data = site.data[include.datafolder][include.datafile] %} {% assign controller_data = site.data[include.datafolder][include.datafile] %}
{% assign parentPath = page.path | prepend: "/" | remove: page.name %}
## Description ## Description
@ -19,7 +18,7 @@ your client and daemon API versions.
{% if controller_data.deprecated %} {% if controller_data.deprecated %}
> This command is [deprecated](/engine/deprecated.md){: target="_blank" class="_"}. > This command is [deprecated](/engine/deprecated/){: target="_blank" class="_"}.
> >
> It may be removed in a future Docker version. > It may be removed in a future Docker version.
{: .warning } {: .warning }
@ -42,7 +41,7 @@ your client and daemon API versions.
> This command is experimental on the Docker daemon. It should not be used in > This command is experimental on the Docker daemon. It should not be used in
> production environments. > production environments.
> To enable experimental features on the Docker daemon, edit the > To enable experimental features on the Docker daemon, edit the
> [daemon.json](/engine/reference/commandline/dockerd.md#daemon-configuration-file) > [daemon.json](/engine/reference/commandline/dockerd/#daemon-configuration-file)
> and set `experimental` to `true`. > and set `experimental` to `true`.
> >
> {% include experimental.md %} > {% include experimental.md %}
@ -56,7 +55,7 @@ your client and daemon API versions.
> **It should not be used in production environments.** > **It should not be used in production environments.**
> >
> To enable experimental features in the Docker CLI, edit the > To enable experimental features in the Docker CLI, edit the
> [config.json](/engine/reference/commandline/cli.md#configuration-files) > [config.json](/engine/reference/commandline/cli/#configuration-files)
> and set `experimental` to `enabled`. You can go [here](https://docs.docker.com/engine/reference/commandline/cli/#experimental-features) > and set `experimental` to `enabled`. You can go [here](https://docs.docker.com/engine/reference/commandline/cli/#experimental-features)
> for more information. > for more information.
{: .important } {: .important }
@ -81,8 +80,8 @@ your client and daemon API versions.
## Usage ## Usage
```none ```console
{{ controller_data.usage | replace: tabChar,"" | strip }}{% if controller_data.cname %} COMMAND{% endif %} {{ controller_data.usage | replace: tabChar, "" | strip }}{% if controller_data.cname %} COMMAND{% endif %}
``` ```
{% endif %} {% endif %}
@ -116,15 +115,12 @@ For example uses of this command, refer to the [examples section](#examples) bel
</thead> </thead>
<tbody> <tbody>
{% for option in alloptions %} {% for option in alloptions %}
{% capture deprecated-badge %}{% if option.deprecated %}<a href="/engine/deprecated/" target="_blank" class="_"><span class="badge badge-danger" data-toggle="tooltip" title="Read the deprecation reference (in a new window).">deprecated</span></a>{% endif %}{% endcapture %}
{% capture deprecated-badge %}{% if option.deprecated %}<a href="/engine/deprecated.md" target="_blank" class="_"><span class="badge badge-danger" data-toggle="tooltip" title="Read the deprecation reference (in a new window).">deprecated</span></a>{% endif %}{% endcapture %} {% capture experimental-daemon-badge %}{% if option.experimental %}<a href="/engine/reference/commandline/dockerd/#daemon-configuration-file" target="_blank" class="_"><span class="badge badge-warning" data-toggle="tooltip" title="Read about experimental daemon options (in a new window).">experimental (daemon)</span></a>{% endif %}{% endcapture %}
{% capture experimental-daemon-badge %}{% if option.experimental %}<a href="/engine/reference/commandline/dockerd.md#daemon-configuration-file" target="_blank" class="_"><span class="badge badge-warning" data-toggle="tooltip" title="Read about experimental daemon options (in a new window).">experimental (daemon)</span></a>{% endif %}{% endcapture %} {% capture experimental-cli-badge %}{% if option.experimentalcli %}<a href="/engine/reference/commandline/cli/#configuration-files" target="_blank" class="_"><span class="badge badge-warning" data-toggle="tooltip" title="Read about experimental CLI options (in a new window).">experimental (CLI)</span></a>{% endif %}{% endcapture %}
{% capture experimental-cli-badge %}{% if option.experimentalcli %}<a href="/engine/reference/commandline/cli.md#configuration-files" target="_blank" class="_"><span class="badge badge-warning" data-toggle="tooltip" title="Read about experimental CLI options (in a new window).">experimental (CLI)</span></a>{% endif %}{% endcapture %}
{% capture min-api %}{% if option.min_api_version %}<a href="/engine/api/v{{ option.min_api_version }}/" target="_blank" class="_"><span class="badge badge-info" data-toggle="tooltip" ttitle="Open the {{ controller_data.min_api_version }} API reference (in a new window)">API {{ option.min_api_version }}+</span></a>{% endif %}{%endcapture%} {% capture min-api %}{% if option.min_api_version %}<a href="/engine/api/v{{ option.min_api_version }}/" target="_blank" class="_"><span class="badge badge-info" data-toggle="tooltip" ttitle="Open the {{ controller_data.min_api_version }} API reference (in a new window)">API {{ option.min_api_version }}+</span></a>{% endif %}{%endcapture%}
{% capture flag-orchestrator %}{% if option.swarm %}<span class="badge badge-info" data-toggle="tooltip" title="This option works for the Swarm orchestrator.">Swarm</span>{% endif %}{% if option.kubernetes %}<span class="badge badge-info" data-toggle="tooltip" title="This option works for the Kubernetes orchestrator.">Kubernetes</span>{% endif %}{% endcapture %} {% capture flag-orchestrator %}{% if option.swarm %}<span class="badge badge-info" data-toggle="tooltip" title="This option works for the Swarm orchestrator.">Swarm</span>{% endif %}{% if option.kubernetes %}<span class="badge badge-info" data-toggle="tooltip" title="This option works for the Kubernetes orchestrator.">Kubernetes</span>{% endif %}{% endcapture %}
{% capture all-badges %}{{ deprecated-badge }}{{ experimental-daemon-badge }}{{ experimental-cli-badge }}{{ min-api }}{{ flag-orchestrator }}{% endcapture %} {% capture all-badges %}{{ deprecated-badge }}{{ experimental-daemon-badge }}{{ experimental-cli-badge }}{{ min-api }}{{ flag-orchestrator }}{% endcapture %}
{% assign defaults-to-skip = "[],map[],false,0,0s,default,'',\"\"" | split: ',' %} {% assign defaults-to-skip = "[],map[],false,0,0s,default,'',\"\"" | split: ',' %}
{% capture option-default %}{% if option.default_value %}{% unless defaults-to-skip contains option.default_value or defaults-to-skip == blank %}`{{ option.default_value }}`{% endunless %}{% endif %}{% endcapture %} {% capture option-default %}{% if option.default_value %}{% unless defaults-to-skip contains option.default_value or defaults-to-skip == blank %}`{{ option.default_value }}`{% endunless %}{% endif %}{% endcapture %}
<tr> <tr>
@ -132,11 +128,9 @@ For example uses of this command, refer to the [examples section](#examples) bel
<td markdown="span">{{ option-default }}</td> <td markdown="span">{{ option-default }}</td>
<td markdown="span">{% if all-badges != '' %}{{ all-badges | strip }}<br />{% endif %}{{ option.description | strip }}</td> <td markdown="span">{% if all-badges != '' %}{{ all-badges | strip }}<br />{% endif %}{{ option.description | strip }}</td>
</tr> </tr>
{% endfor %} <!-- end for option --> {% endfor %} <!-- end for option -->
</tbody> </tbody>
</table> </table>
{% endif %} <!-- end if options --> {% endif %} <!-- end if options -->
{% if controller_data.examples %} {% if controller_data.examples %}
@ -145,11 +139,6 @@ For example uses of this command, refer to the [examples section](#examples) bel
{{ controller_data.examples }} {{ controller_data.examples }}
{% endif %}
{% else %}
The include.datafolder or include.datafile was not set.
{% endif %} {% endif %}
{% if controller_data.pname %} {% if controller_data.pname %}
@ -157,13 +146,13 @@ The include.datafolder or include.datafile was not set.
## Parent command ## Parent command
{% capture parentfile %}{{ controller_data.plink | replace: ".yaml", "" | replace: "docker_","" }}{% endcapture %} {% capture parentfile %}{{ controller_data.plink | remove_first: ".yaml" | remove_first: "docker_" }}{% endcapture %}
{% capture parentdatafile %}{{ controller_data.plink | replace: ".yaml", "" }}{% endcapture %} {% capture parentdatafile %}{{ controller_data.plink | remove_first: ".yaml" }}{% endcapture %}
{% capture parentDesc %}{{ site.data[include.datafolder][parentdatafile].short }}{% endcapture %} {% capture parentDesc %}{{ site.data[include.datafolder][parentdatafile].short }}{% endcapture %}
| Command | Description | | Command | Description |
| ------- | ----------- | | ------- | ----------- |
| [{{ controller_data.pname }}]({{ parentfile }}) | {{ parentDesc }}| | [{{ controller_data.pname }}]({{parentPath}}{{ parentfile }}/) | {{ parentDesc }}|
{% endunless %} {% endunless %}
{% endif %} {% endif %}
@ -181,9 +170,9 @@ The include.datafolder or include.datafile was not set.
</thead> </thead>
<tbody> <tbody>
{% for command in controller_data.cname %} {% for command in controller_data.cname %}
{% capture dataFileName %}{{ command | strip | replace: " ","_" }}{% endcapture %} {% capture dataFileName %}{{ command | strip | replace: " ", "_" }}{% endcapture %}
<tr> <tr>
<td markdown="span">[{{ command }}]({{ dataFileName | replace: "docker_","" }}/)</td> <td markdown="span">[{{ command }}]({{ parentPath }}{{ dataFileName | remove_first: "docker_" }}/)</td>
<td markdown="span">{{ site.data[include.datafolder][dataFileName].short }}</td> <td markdown="span">{{ site.data[include.datafolder][dataFileName].short }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
@ -204,9 +193,9 @@ The include.datafolder or include.datafile was not set.
</thead> </thead>
<tbody> <tbody>
{% for command in site.data[include.datafolder][parentdatafile].cname %} {% for command in site.data[include.datafolder][parentdatafile].cname %}
{% capture dataFileName %}{{ command | strip | replace: " ","_" }}{% endcapture %} {% capture dataFileName %}{{ command | strip | replace: " ", "_" }}{% endcapture %}
<tr> <tr>
<td markdown="span">[{{ command }}]({{ dataFileName | replace: "docker_","" }}/)</td> <td markdown="span">[{{ command }}]({{ parentPath }}{{ dataFileName | remove_first: "docker_" }}/)</td>
<td markdown="span">{{ site.data[include.datafolder][dataFileName].short }}</td> <td markdown="span">{{ site.data[include.datafolder][dataFileName].short }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
@ -214,3 +203,58 @@ The include.datafolder or include.datafile was not set.
</table> </table>
{% endunless %} {% endunless %}
<script>
// This is a horrible hack, and cute little kittens are sacrificed every time it's run, so we
// need to remove it as soon as possible.
//
// Fix up links to markdown pages that weren't resolved by Jekyll (or the "jekyll-relative-links"
// plugin). This is a horrible hack, and should not rely on JavaScript (perhaps be re-implemented
// using Liquid). We need this hack to work around two bugs in the "jekyll-relative-links" plugin;
// 1. As reported in https://github.com/benbalter/jekyll-relative-links/issues/54, (relative) links
// to markdown pages in includes are not processed by Jekyll. This means that (for example) our
// reference pages (which use includes) contain broken links. We can work around this by modifying
// the markdown for those pages to use "absolute" "html" links (/link/to/other/page/#some-anchor),
// but doing so would render the links broken when viewed on GitHub. Instead, we're fixing them up
// here, hoping the bug will be fixed, and it's only temporarily.
// 2. As reported in https://github.com/benbalter/jekyll-relative-links/issues/61, (relative) links
// to markdown pages are not resolved if the link's caption/title is wrapped.
//
Array.prototype.forEach.call(document.querySelectorAll("section.section a:not(.nomunge)"), function (el) {
let href = el.getAttribute("href");
if (href.startsWith("/") || href.startsWith("#") || href.includes("://") || !href.includes('.md')) {
// Don't modify anchor links, absolute links, links to external websites,
// or links not pointing to a .md file; we assume those were
// resolved successfully by Jekyll.
return
}
if (href.startsWith("./")) {
href = href.substr(2)
}
if ("{{ page.name }}" !== "index.md") {
// For non-index pages, things are a bit hairy. For example, for /foo/bar/mypage.md, Jekyll
// will generate a page named /foo/bar/mypage/index.html. This means that all links relative
// to mypage.md expect those links to be relative to the /foo/bar/ directory, but end up
// being relative to /foo/bar/mypage/.
//
// For files "next to", or "below" this file, such as "file.md" or "nested/dir/file.md" we
// prepend the "parent-dir" to the URL.
//
// For links to files "up" the directory tree, we prepend
// "../" to the URL and have the browser handle this. For example, "../file.md" and "../../file.md"
// become "../../file.md" and "../../../file.md".
if (href.startsWith("../")) {
href = "../" + href
} else {
// Generate "parentPath" with Liquid, which is used below. Liquid's page.path (and page.dir)
// are relative to the _generated_ HTML page, not the source page, so we have to remove the
// last part of the path:
// {% raw %}{% assign parentPath = page.path | prepend: "/" | remove: page.name %}{% endraw %}
// {% assign parentPath = page.path | prepend: "/" | remove: page.name %}
href = "{{ parentPath}}" + href
}
}
// finally, we replace the .md extension for a slash, and update the link's href
el.setAttribute("href", href.replace(".md", "/"))
});
</script>

View File

@ -18,7 +18,7 @@ string. In the example above, if `POSTGRES_VERSION` is not set, the value for
the `image` option is `postgres:`. the `image` option is `postgres:`.
You can set default values for environment variables using a You can set default values for environment variables using a
[`.env` file](../env-file.md), which Compose automatically looks for. Values [`.env` file](/compose/env-file/), which Compose automatically looks for. Values
set in the shell environment override those set in the `.env` file. set in the shell environment override those set in the `.env` file.
> Note when using docker stack deploy > Note when using docker stack deploy
@ -28,7 +28,7 @@ set in the shell environment override those set in the `.env` file.
{: .important } {: .important }
Both `$VARIABLE` and `${VARIABLE}` syntax are supported. Additionally when using Both `$VARIABLE` and `${VARIABLE}` syntax are supported. Additionally when using
the [2.1 file format](compose-versioning.md#version-21), it is possible to the [2.1 file format](/compose/compose-file/compose-versioning/#version-21), it is possible to
provide inline default values using typical shell syntax: provide inline default values using typical shell syntax:
- `${VARIABLE:-default}` evaluates to `default` if `VARIABLE` is unset or - `${VARIABLE:-default}` evaluates to `default` if `VARIABLE` is unset or

View File

@ -1,4 +1,4 @@
[SSH](/glossary.md#SSH) is a secure protocol for accessing remote machines and applications. It [SSH](/glossary/#SSH) is a secure protocol for accessing remote machines and applications. It
provides authentication and encrypts data communication over insecure networks. provides authentication and encrypts data communication over insecure networks.
These topics describe how to find existing SSH keys or generate new ones, and These topics describe how to find existing SSH keys or generate new ones, and

View File

@ -3,7 +3,7 @@
| Capabilities | Docker Engine - Enterprise | Docker Enterprise | | Capabilities | Docker Engine - Enterprise | Docker Enterprise |
|:---------------------------------------------------------------------|:-------------------------:|:----------------------------:| |:---------------------------------------------------------------------|:-------------------------:|:----------------------------:|
| Container engine and built in orchestration, networking, security | {{green-check}} | {{green-check}} | | Container engine and built in orchestration, networking, security | {{green-check}} | {{green-check}} |
| [Certified infrastructure, plugins and ISV containers](../ee/supported-platforms/#docker-enterprise) | {{green-check}} | {{green-check}} | | [Certified infrastructure, plugins and ISV containers](/ee/supported-platforms/#docker-enterprise) | {{green-check}} | {{green-check}} |
| [Image management with Docker Trusted Registry security scanning](../ee/dtr/user/manage-images/scan-images-for-vulnerabilities/) | | {{green-check}} | | [Image management with Docker Trusted Registry security scanning](/ee/dtr/user/manage-images/scan-images-for-vulnerabilities/) | | {{green-check}} |
| [Container app management with Universal Control Plane](../ee/ucp/) | | {{green-check}} | | [Container app management with Universal Control Plane](/ee/ucp/) | | {{green-check}} |
| [Developer solutions with Docker Desktop Enterprise](../ee/desktop/) | | {{green-check}} | | [Developer solutions with Docker Desktop Enterprise](/desktop/enterprise/) | | {{green-check}} |

View File

@ -23,7 +23,7 @@ on {{ linux-dist-long }}:
Docker Engine - Community is _not_ supported on {{ linux-dist-long }}. Docker Engine - Community is _not_ supported on {{ linux-dist-long }}.
{% endif %} {% endif %}
{% if linux-dist == "centos" %} {% if linux-dist == "centos" %}
For Docker Community Edition on {{ linux-dist-cap }}, see [Get Docker Engine - Community for CentOS](/engine/install/centos.md). For Docker Community Edition on {{ linux-dist-cap }}, see [Get Docker Engine - Community for CentOS](/engine/install/centos/).
{% endif %} {% endif %}
{% elsif section == "find-ee-repo-url" %} {% elsif section == "find-ee-repo-url" %}
@ -280,7 +280,7 @@ You only need to set up the repository once, after which you can install Docker
``` ```
Docker Engine - Enterprise is installed and running. Use `sudo` to run Docker commands. See Docker Engine - Enterprise is installed and running. Use `sudo` to run Docker commands. See
[Linux postinstall](/engine/install/linux-postinstall.md){: target="_blank" class="_" } to allow [Linux postinstall](/engine/install/linux-postinstall/){: target="_blank" class="_" } to allow
non-privileged users to run Docker commands. non-privileged users to run Docker commands.
@ -351,7 +351,7 @@ To manually install Docker Enterprise, download the `.{{ package-format | downca
``` ```
Docker Engine - Enterprise is installed and running. Use `sudo` to run Docker commands. See Docker Engine - Enterprise is installed and running. Use `sudo` to run Docker commands. See
[Linux postinstall](/engine/install/linux-postinstall.md){: target="_blank" class="_" } to allow [Linux postinstall](/engine/install/linux-postinstall/){: target="_blank" class="_" } to allow
non-privileged users to run Docker commands. non-privileged users to run Docker commands.
</div> </div>
@ -394,7 +394,7 @@ To manually install Docker Enterprise, download the `.{{ package-format | downca
``` ```
Docker Engine - Enterprise is installed and running. Use `sudo` to run Docker commands. See Docker Engine - Enterprise is installed and running. Use `sudo` to run Docker commands. See
[Linux postinstall](/engine/install/linux-postinstall.md){: target="_blank" class="_" } to allow [Linux postinstall](/engine/install/linux-postinstall/){: target="_blank" class="_" } to allow
non-privileged users to run Docker commands. non-privileged users to run Docker commands.
</div> </div>
@ -444,7 +444,7 @@ To manually install Docker Enterprise, download the `.{{ package-format | downca
``` ```
Docker Engine - Enterprise is installed and running. Use `sudo` to run Docker commands. See Docker Engine - Enterprise is installed and running. Use `sudo` to run Docker commands. See
[Linux postinstall](/engine/install/linux-postinstall.md){: target="_blank" class="_" } to allow [Linux postinstall](/engine/install/linux-postinstall/){: target="_blank" class="_" } to allow
non-privileged users to run Docker commands. non-privileged users to run Docker commands.
{% endif %} {% endif %}
@ -485,7 +485,7 @@ You must delete any edited configuration files manually.
{% elsif section == "linux-install-nextsteps" %} {% elsif section == "linux-install-nextsteps" %}
- Continue to [Post-installation steps for Linux](/engine/install/linux-postinstall.md){: target="_blank" class="_" } - Continue to [Post-installation steps for Linux](/engine/install/linux-postinstall/){: target="_blank" class="_" }
- Continue with user guides on [Universal Control Plane (UCP)](/ee/ucp/){: target="_blank" class="_" } and [Docker Trusted Registry (DTR)](/ee/dtr/){: target="_blank" class="_" } - Continue with user guides on [Universal Control Plane (UCP)](/ee/ucp/){: target="_blank" class="_" } and [Docker Trusted Registry (DTR)](/ee/dtr/){: target="_blank" class="_" }

View File

@ -69,7 +69,7 @@ run Docker commands by default.
> **Note**: > **Note**:
> >
> To install Docker without root privileges, see > To install Docker without root privileges, see
> [Run the Docker daemon as a non-root user (Rootless mode)](/engine/security/rootless.md). > [Run the Docker daemon as a non-root user (Rootless mode)](/engine/security/rootless/).
> >
> Rootless mode is currently available as an experimental feature. > Rootless mode is currently available as an experimental feature.

View File

@ -55,7 +55,7 @@ your workloads, in parallel, on Kubernetes, Swarm, and as standalone containers.
Enabling or disabling the Kubernetes server does not affect your other Enabling or disabling the Kubernetes server does not affect your other
workloads. workloads.
See [{{ product }} > Getting started](/docker-for-{{ platform }}/index.md#kubernetes) to See [{{ product }} > Getting started](/docker-for-{{ platform }}/#kubernetes) to
enable Kubernetes and begin testing the deployment of your workloads on enable Kubernetes and begin testing the deployment of your workloads on
Kubernetes. Kubernetes.

View File

@ -1,333 +1,282 @@
<!-- Page generated {{ site.time }} --> <!-- Page generated {{ site.time }} -->
<!-- relative link basehrefs --> <!-- Logic for 'edit this button'
{% if page.path contains "index.md" %}
{% capture basehref %}{{ page.url }}{% endcapture %}
{% else %}
{% assign crumbs = page.url | split: '/' %}
{% assign stoppingpoint = crumbs | size | minus: 1 %}
{% for crumb in crumbs %}
{% if forloop.index == stoppingpoint %}
{% capture basehref %}{{basehref}}{{ crumb }}/{% endcapture %}
{% break %}
{% else %}
{% capture basehref %}{{basehref}}{{ crumb }}/{% endcapture %}
{% endif %}
{% endfor %}
{% endif %}
<!-- Logic for 'edit this button' -->
{% assign edit_url = "https://github.com/docker/docker.github.io/edit/master/" | append: page.path %} {% assign edit_url = "https://github.com/docker/docker.github.io/edit/master/" | append: page.path %}
{% for entry in site.data.not_edited_here.overrides %} {% for entry in site.data.not_edited_here.overrides %}
{% if page.path contains entry.path %} {% if page.path contains entry.path %}
{% if entry.source %} {% if entry.source %}
{% assign edit_url = entry.source %} {% assign edit_url = entry.source %}
{% else %} {% else %}
{% assign edit_url = "" %} {% assign edit_url = "" %}
{% endif %} {% endif %}
{% break %} {% break %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
-->
<!-- End of logic for 'edit this button' -->
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<base href="{{ basehref }}" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <style type="text/css">
<style type="text/css"> @charset "UTF-8";
@charset "UTF-8"; [ng\:cloak],
[ng\:cloak], [ng-cloak],
[ng-cloak], [data-ng-cloak],
[data-ng-cloak], [x-ng-cloak],
[x-ng-cloak], .ng-cloak,
.ng-cloak, .x-ng-cloak,
.x-ng-cloak, .ng-hide:not(.ng-hide-animate) {
.ng-hide:not(.ng-hide-animate) { display: none !important;
display: none !important; }
}
ng\:form { ng\:form {
display: block; display: block;
} }
</style> </style>
<!-- Google Tag Manager --> <!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-WL2QLG5');</script> })(window,document,'script','dataLayer','GTM-WL2QLG5');</script>
<!-- End Google Tag Manager --> <!-- End Google Tag Manager -->
{% if site.GH_ENV == "gh_pages" %} {% if site.GH_ENV == "gh_pages" %}
<meta name="robots" content="noindex">{% endif %} <meta name="robots" content="noindex">{% endif %}
<!-- favicon --> <!-- favicon -->
<link rel="icon" type="image/x-icon" href="/favicons/docs@2x.ico" sizes="129x128"> <link rel="icon" type="image/x-icon" href="/favicons/docs@2x.ico" sizes="129x128">
<meta name="msapplication-TileImage" content="/favicons/docs@2x.ico"> <meta name="msapplication-TileImage" content="/favicons/docs@2x.ico">
<link rel="apple-touch-icon" type="image/x-icon" href="/favicons/docs@2x.ico" sizes="129x128"> <link rel="apple-touch-icon" type="image/x-icon" href="/favicons/docs@2x.ico" sizes="129x128">
<meta property="og:image" content="/favicons/docs@2x.ico"/> <meta property="og:image" content="/favicons/docs@2x.ico"/>
<!-- metadata --> <!-- metadata -->
<meta property="og:type" content="website"/> <meta property="og:type" content="website"/>
<meta property="og:updated_time" itemprop="dateUpdated" content="{% if page.date %}{{ page.date | date_to_xmlschema }}{% else %}{{ site.time | date_to_xmlschema }}{% endif %}"/> <meta property="og:updated_time" itemprop="dateUpdated" content="{% if page.date %}{{ page.date | date_to_xmlschema }}{% else %}{{ site.time | date_to_xmlschema }}{% endif %}"/>
<meta property="og:image" itemprop="image primaryImageOfPage" content="/images/docs@2x.png"/> <meta property="og:image" itemprop="image primaryImageOfPage" content="/images/docs@2x.png"/>
<meta name="twitter:card" content="summary"/> <meta name="twitter:card" content="summary"/>
<meta name="twitter:domain" content="docs.docker.com"/> <meta name="twitter:domain" content="docs.docker.com"/>
<meta name="twitter:site" content="@docker_docs"/> <meta name="twitter:site" content="@docker_docs"/>
<meta name="twitter:url" content="https://twitter.com/docker_docs"/> <meta name="twitter:url" content="https://twitter.com/docker_docs"/>
<meta name="twitter:title" itemprop="title name" content="{{ page.title }}"/> <meta name="twitter:title" itemprop="title name" content="{{ page.title }}"/>
<meta name="twitter:description" property="og:description" itemprop="description" content="{{ content | strip_html | truncatewords: 30}}" /> <meta name="twitter:description" property="og:description" itemprop="description" content="{{ content | strip_html | truncatewords: 30}}" />
<meta name="twitter:image:src" content="/images/docs@2x.png"/> <meta name="twitter:image:src" content="/images/docs@2x.png"/>
<meta name="twitter:image:alt" content="Docker Documentation"/> <meta name="twitter:image:alt" content="Docker Documentation"/>
<meta property="article:published_time" itemprop="datePublished" content="{% if page.date %}{{ page.date | date_to_xmlschema }}{% else %}{{ site.time | date_to_xmlschema }}{% endif %}"/> <meta property="article:published_time" itemprop="datePublished" content="{% if page.date %}{{ page.date | date_to_xmlschema }}{% else %}{{ site.time | date_to_xmlschema }}{% endif %}"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="{% if page.keywords %}{{ page.keywords }}{% else %}docker, docker open source, docker platform, distributed applications, microservices, containers, docker containers, docker software, docker virtualization{% endif %}"> <meta name="keywords" content="{% if page.keywords %}{{ page.keywords }}{% else %}docker, docker open source, docker platform, distributed applications, microservices, containers, docker containers, docker software, docker virtualization{% endif %}">
<link rel="stylesheet" href="/css/font-awesome.min.css"> <link rel="stylesheet" href="/css/font-awesome.min.css">
<link rel="stylesheet" href="/css/bootstrap.min.css"> <link rel="stylesheet" href="/css/bootstrap.min.css">
<link id="pygments" rel="stylesheet" href="/css/pygments/perldoc.css"> <link id="pygments" rel="stylesheet" href="/css/pygments/perldoc.css">
<link id="pagestyle" rel="stylesheet" href="/css/style.css"> <link id="pagestyle" rel="stylesheet" href="/css/style.css">
<!-- Go get "Open Sans" font from Google --> <!-- Go get "Open Sans" font from Google -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
<!-- SEO stuff --> <!-- SEO stuff -->
<title>{{ page.title }} | Docker Documentation</title> <title>{{ page.title }} | Docker Documentation</title>
<meta property="og:title" content="{{ page.title }}" /> <meta property="og:title" content="{{ page.title }}" />
<meta property="og:locale" content="en_US" /> <meta property="og:locale" content="en_US" />
<meta name="description" content="{{ page.description }}" /> <meta name="description" content="{{ page.description }}" />
<meta property="og:description" content="{{ page.description }}" /> <meta property="og:description" content="{{ page.description }}" />
<link rel="canonical" href="{{ page.url }}" /> <link rel="canonical" href="{{ page.url }}" />
<meta property="og:url" content="https://docs.docker.com{{ page.url }}" /> <meta property="og:url" content="https://docs.docker.com{{ page.url }}" />
<meta property="og:site_name" content="Docker Documentation" /> <meta property="og:site_name" content="Docker Documentation" />
<script type="application/ld+json"> <script type="application/ld+json">{"@context":"http://schema.org","@type":"WebPage","headline":"{{ page.title }}","description":"{{ page.description }}","url":"https://docs.docker.com{{ page.url }}"}</script>
{"@context":"http://schema.org","@type":"WebPage","headline":"{{ page.title }}","description":"{{ page.description }}","url":"https://docs.docker.com{{ page.url }}"}</script> <!-- END SEO STUFF -->
<!-- END SEO STUFF --> {% if page.hide_from_sitemap %}<meta name="robots" content="noindex" />{% endif %}
{% if page.hide_from_sitemap %}<meta name="robots" content="noindex" />{% endif %} <script>
<script language="javascript"> // Default to assuming this is an archive and hiding some stuff
// Default to assuming this is an archive and hiding some stuff // See js/archive.js and js/docs.js for logic relating to this
// See js/archive.js and js/docs.js for logic relating to this var isArchive = true;
var isArchive = true; var dockerVersion = 'v{{ site.docker_ce_version }}';
var dockerVersion = 'v{{ site.docker_ce_version }}'; </script>
</script>
</head> </head>
<body ng-app="Docker" ng-controller="DockerController" class="colums"> <body ng-app="Docker" ng-controller="DockerController" class="colums">
<header> <header>
{% if page.landing == true %}{% include global-header.html %}{% endif %} {% if page.landing != true %}{% include header.html %}{% endif %} {% if page.landing == true %}
</header> {% include global-header.html %}
{% else %}
{% include header.html %}
{% endif %}
</header>
<div class="{% if page.landing == true %}wrapper{%else%}wrapper right-open{% endif %}">
<div class="container-fluid">
<div class="row">
<div class="col-body">
<main class="col-content {% if page.landing == true %}main-content{%else%}content{% endif %}">
<section class="section">
{% if page.url == '/' %}
<h1>{{ site.name }}</h1>
{% else %}
{% if page.title %}
<h1>{{ page.title }}</h1>{% endif %} {% if page.advisory %}
<blockquote>{{ site.data.advisories.texts[page.advisory] | markdownify }}</blockquote>{% endif %}{% endif %} {% unless page.tree == false or page.skip_read_time == true %}{% include read_time.html %}{% endunless %}
{% if page.enterprise %}{% include ee_dropdown.html %}{% endif %}
{% if page.ui_tabs or page.cli_tabs or page.api_tabs %}
{% capture content %}
<div class="{% if page.landing == true %}wrapper{%else%}wrapper right-open{% endif %}"> {% if page.intro %}{{ page.intro | markdownify }}{% else %}{{ page.description | markdownify }}{% endif %}
<div class="container-fluid">
<div class="row">
<div class="col-body">
<main class="col-content {% if page.landing == true %}main-content{%else%}content{% endif %}">
<section class="section">
{% if page.url == '/' %}
<h1>{{ site.name }}</h1>
{% else %}
{% if page.title %}
<h1>{{ page.title }}</h1>{% endif %} {% if page.advisory %}
<blockquote>{{ site.data.advisories.texts[page.advisory] | markdownify }}</blockquote>{% endif %}{% endif %} {% unless page.tree == false or page.skip_read_time == true %}{% include read_time.html %}{% endunless %}
{% if page.enterprise %}{% include ee_dropdown.html %}{% endif %}
{% if page.ui_tabs or page.cli_tabs or page.api_tabs %}{% capture content %}
{% if page.intro %}{{ page.intro | markdownify }}{% else %}{{ page.description | markdownify }}{% endif %} {% if page.ui_tabs %}
<ul class="nav nav-tabs">{% for tab in page.ui_tabs %}
<li{% if forloop.first %} class="active"{% endif %}><a data-toggle="tab" data-target="#ui-{{ tab.version | slugify }}" id="ui-tabheader-{{ tab.version | slugify }}">{{ site.tablabels[tab.version] }}{% if tab.orhigher %} (or higher){% endif %}{% if tab.orlower %} (or lower){% endif %}</a></li>{% endfor %}
</ul>
<div class="tab-content">{% for tab in page.ui_tabs %}
<div id="ui-{{ tab.version | slugify }}" class="tab-pane fade{% if forloop.first %} in active{% endif %}">{% capture thistab %}{% include_relative {{ page.path | split: "/" | last }} version=tab.version ui="true" %}{% endcapture %}{{ thistab | split: "---" | shift:2 | join: "---" | markdownify }}</div>{% endfor %}
</div>
{% endif %}
{% if page.cli_tabs %}
<ul class="nav nav-tabs">{% for tab in page.cli_tabs %}
<li{% if forloop.first %} class="active"{% endif %}><a data-toggle="tab" data-target="#cli-{{ tab.version | slugify }}" id="cli-tabheader-{{ tab.version | slugify }}">{{ site.tablabels[tab.version] }}</a></li>{% endfor %}
</ul>
<div class="tab-content">{% for tab in page.cli_tabs %}
<div id="cli-{{ tab.version | slugify }}" class="tab-pane fade{% if forloop.first %} in active{% endif %}">{% capture thistab %}{% include_relative {{ page.path | split: "/" | last }} version=tab.version cli="true" %}{% endcapture %}{{ thistab | split: "---" | shift:2 | join: "---" | markdownify }}</div>{% endfor %}
</div>
{% endif %}
{% if page.api_tabs %}
<ul class="nav nav-tabs">{% for tab in page.api_tabs %}
<li{% if forloop.first %} class="active"{% endif %}><a data-toggle="tab" data-target="#api-{{ tab.version | slugify }}" id="api-tabheader-{{ tab.version | slugify }}">{{ site.tablabels[tab.version] }}</a></li>{% endfor %}
</ul>
<div class="tab-content">{% for tab in page.api_tabs %}
<div id="api-{{ tab.version | slugify }}" class="tab-pane fade{% if forloop.first %} in active{% endif %}">{% capture thistab %}{% include_relative {{ page.path | split: "/" | last }} version=tab.version api="true" %}{% endcapture %}{{ thistab | split: "---" | shift:2 | join: "---" | markdownify }}</div>{% endfor %}
</div>
{% endif %}
{% if page.next_steps %}
<h2>Next steps</h2>
<ul>
{% for step in page.next_steps %} <li><a href="{{ step.path }}">{{ step.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% endcapture %}
{% endif %}
{{ content }}
<!-- tags -->
{% unless page.notags == true %}
{% assign keywords = page.keywords | split:"," -%}
{% if keywords.size > 0 -%}
<span class="glyphicon glyphicon-tags" style="padding-right: 10px"></span><span style="vertical-align: 2px">
{%- for keyword in keywords -%}
{%- assign strippedKeyword = keyword | strip -%}
<a href="https://docs.docker.com/search/?q={{ strippedKeyword }}">{{ strippedKeyword }}</a>
{%- unless forloop.last %}, {% endunless -%}
{% endfor -%}
</span>
{% endif -%}
{% endunless %}
{% if page.noratings != true %}
<div id="ratings-div" style="color:#b9c2cc; text-align: center; margin-top: 150px; visibility: hidden">
<div id="pd_rating_holder_8453675"></div>
<script type="text/javascript">
PDRTJS_settings_8453675 = {
"id": "8453675",
"unique_id": "{{ page.path }}",
"title": "{{ page.title }}",
"permalink": "https://github.com/docker/docker.github.io/blob/master/{{ page.path }}"
};
(function(d, c, j) {
if (!document.getElementById(j)) {
var pd = d.createElement(c),
s;
pd.id = j;
pd.src = ('https:' == document.location.protocol) ? 'https://polldaddy.com/js/rating/rating.js' : 'http://i0.poll.fm/js/rating/rating.js';
s = document.getElementsByTagName(c)[0];
s.parentNode.insertBefore(pd, s);
}
}(document, 'script', 'pd-rating-js'));
</script>
</div>
{% endif %}
</section>
</main>
<nav class="col-nav">
<div id="sidebar-nav" class="sidebar hidden-sm hidden-xs">
{% include side-menu.html %}
</div>
</nav>
<div class="col-toc">
<div class="sidebar hidden-xs hidden-sm">
<div class="toc-nav">
<div class="feedback-links">
<ul>
{% if edit_url != "" %}
<li style="visibility: hidden"><a href="{{ edit_url }}"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> Edit this page</a></li>{% endif %}
<li><a href="https://github.com/docker/docker.github.io/issues/new?body=File: [{{ page.path }}](https://docs.docker.com{{ page.url }})"
class="nomunge"><i class="fa fa-check" aria-hidden="true"></i> Request docs changes</a></li>
<!-- toggle mode -->
<li>
<div class="toggle-mode">
<div class="icon">
<i class="fa fa-sun-o" aria-hidden="true"></i>
</div>
<div class="toggle-switch">
<label class="switch">
<input type="checkbox" id="switch-style">
<div class="slider round"></div>
</label>
</div>
<div class="icon">
<i class="fa fa-moon-o" aria-hidden="true"></i>
</div>
</div>
</li>
</ul>
</div>
{% unless page.notoc %} {% assign my_min = page.toc_min | default: site.toc_min | default: 2 %} {% assign my_max = page.toc_max | default: site.toc_max | default: 3 %} {% assign my_name = page.url | default: "unnamed" %}
<div id="side-toc-title">On this page:</div>
{% include toc_pure_liquid.html html=content sanitize=true class="inline_toc" id="my_toc" toc_min=my_min toc_max=my_max page_name=my_name %}
{% endunless %}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% if page.ui_tabs %} {% if page.path == "404.md" %}
<script type="text/javascript">
<ul class="nav nav-tabs">{% for tab in page.ui_tabs %} var path = window.location.pathname.replace("#","");
<li{% if forloop.first %} class="active"{% endif %}><a data-toggle="tab" data-target="#ui-{{ tab.version | slugify }}" id="ui-tabheader-{{ tab.version | slugify }}">{{ site.tablabels[tab.version] }}{% if tab.orhigher %} (or higher){% endif %}{% if tab.orlower %} (or lower){% endif %}</a></li>{% endfor %} var ghIssueQueryString = "https://github.com/docker/docker.github.io/issues/new?" + "title=404%20at%20" + path + "&body=URL%3A%20" + path;
</ul> document.getElementsByClassName("nomunge")[1].onclick = function() {
<div class="tab-content">{% for tab in page.ui_tabs %} document.getElementsByClassName("nomunge")[1].href = ghIssueQueryString;
<div id="ui-{{ tab.version | slugify }}" class="tab-pane fade{% if forloop.first %} in active{% endif %}">{% capture thistab %}{% include_relative {{ page.path | split: "/" | last }} version=tab.version ui="true" %}{% endcapture %}{{ thistab | split: "---" | shift:2 | join: "---" | markdownify }}</div>{% endfor %} return true;
</div> };
</script>
{% endif %} {% endif %}
{% if page.cli_tabs %} <footer class="footer">
{% include footer.html %}
<ul class="nav nav-tabs">{% for tab in page.cli_tabs %} </footer>
<li{% if forloop.first %} class="active"{% endif %}><a data-toggle="tab" data-target="#cli-{{ tab.version | slugify }}" id="cli-tabheader-{{ tab.version | slugify }}">{{ site.tablabels[tab.version] }}</a></li>{% endfor %} <link rel="stylesheet" href="/css/github.css">
</ul> {% if page.highlightjs == true %}
<div class="tab-content">{% for tab in page.cli_tabs %} <script src="/js/highlight.pack.js"></script>
<div id="cli-{{ tab.version | slugify }}" class="tab-pane fade{% if forloop.first %} in active{% endif %}">{% capture thistab %}{% include_relative {{ page.path | split: "/" | last }} version=tab.version cli="true" %}{% endcapture %}{{ thistab | split: "---" | shift:2 | join: "---" | markdownify }}</div>{% endfor %} <script>
</div> hljs.initHighlightingOnLoad();
</script>
{% endif %} {% endif %}
{% if page.api_tabs %} <script defer src="/js/anchorlinks.js"></script>
<script defer src="/js/menu.js"></script>
<ul class="nav nav-tabs">{% for tab in page.api_tabs %} <script src="/js/jquery.js"></script>
<li{% if forloop.first %} class="active"{% endif %}><a data-toggle="tab" data-target="#api-{{ tab.version | slugify }}" id="api-tabheader-{{ tab.version | slugify }}">{{ site.tablabels[tab.version] }}</a></li>{% endfor %} <script src="/js/bootstrap.min.js"></script>
</ul> <!-- Always include the archive.js, but it doesn't do much unless we are an archive -->
<div class="tab-content">{% for tab in page.api_tabs %} <script>
<div id="api-{{ tab.version | slugify }}" class="tab-pane fade{% if forloop.first %} in active{% endif %}">{% capture thistab %}{% include_relative {{ page.path | split: "/" | last }} version=tab.version api="true" %}{% endcapture %}{{ thistab | split: "---" | shift:2 | join: "---" | markdownify }}</div>{% endfor %} // Default to assuming this is an archive and hiding some stuff
</div> // See js/archive.js and js/docs.js for logic relating to this
var isArchive = true;
{% endif %} var dockerVersion = 'v{{ site.docker_ce_version }}';
// In archives, we need to know the page root and we get it from JEKYLL_ENV in the jekyll build command
{% if page.next_steps %} var jekyllEnv = '{{ jekyll.environment }}';
// If unset (in non-archive branches), defaults to "development". In that case, reset it to empty
<h2>Next steps</h2> if (jekyllEnv === 'development') {
jekyllEnv = '';
<ul> }
{% for step in page.next_steps %} <li><a href="{{ step.path }}">{{ step.title }}</a></li> var pageURL = jekyllEnv + '{{ page.url }}';
{% endfor %} </script>
</ul> <script src="/js/archive.js"></script>
{% endif %} <script src="/js/stickyfill.min.js"></script>
{% endcapture %} <script defer src="/js/metadata.js"></script>
{% endif %} <script src="/js/glossary.js"></script>
{{ content }} <script defer src="/js/docs.js"></script>
<!-- tags --> <script defer src="/js/toc.js"></script>
{% unless page.notags == true %} <script>
{% assign keywords = page.keywords | split:"," -%} jQuery(document).ready(function(){hookupTOCEvents();});
{% if keywords.size > 0 -%} </script>
<span class="glyphicon glyphicon-tags" style="padding-right: 10px"></span><span style="vertical-align: 2px">
{%- for keyword in keywords -%}
{%- assign strippedKeyword = keyword | strip -%}
<a href="https://docs.docker.com/search/?q={{ strippedKeyword }}">{{ strippedKeyword }}</a>
{%- unless forloop.last %}, {% endunless -%}
{% endfor -%}
</span>
{% endif -%}
{% endunless %}
<!-- link corrections -->
<script language="JavaScript">
var x = document.links.length;
var baseHref = document.getElementsByTagName('base')[0].href
for (i = 0; i < x; i++) {
var munged = false;
var thisHREF = document.links[i].href;
var originalURL = "{{ page.url }}";
if (thisHREF.indexOf(baseHref + "#") > -1) {
// hash fix
//console.log('BEFORE: base:',baseHref,'thisHREF:',thisHREF,'originalURL:',originalURL);
thisHREF = originalURL + thisHREF.replace(baseHref, "");
//console.log('AFTER: base:',baseHref,'thisHREF:',thisHREF,'originalURL:',originalURL);
}
if ((thisHREF.indexOf(window.location.hostname) > -1 || thisHREF.indexOf('http') == -1) && document.links[i].className.indexOf("nomunge") < 0) {
munged = true;
thisHREF = thisHREF.replace(".md", "/").replace("/index/", "/");
document.links[i].setAttribute('href', thisHREF);
}
}
</script>
{% if page.noratings != true %}
<div id="ratings-div" style="color:#b9c2cc; text-align: center; margin-top: 150px; visibility: hidden">
<div id="pd_rating_holder_8453675"></div>
<script type="text/javascript">
PDRTJS_settings_8453675 = {
"id": "8453675",
"unique_id": "{{ page.path }}",
"title": "{{ page.title }}",
"permalink": "https://github.com/docker/docker.github.io/blob/master/{{ page.path }}"
};
(function(d, c, j) {
if (!document.getElementById(j)) {
var pd = d.createElement(c),
s;
pd.id = j;
pd.src = ('https:' == document.location.protocol) ? 'https://polldaddy.com/js/rating/rating.js' : 'http://i0.poll.fm/js/rating/rating.js';
s = document.getElementsByTagName(c)[0];
s.parentNode.insertBefore(pd, s);
}
}(document, 'script', 'pd-rating-js'));
</script>
</div>
{% endif %}
</section>
</main>
<nav class="col-nav">
<div id="sidebar-nav" class="sidebar hidden-sm hidden-xs">
{% include side-menu.html %}
</div>
</nav>
<div class="col-toc">
<div class="sidebar hidden-xs hidden-sm">
<div class="toc-nav">
<div class="feedback-links">
<ul>
{% if edit_url != "" %}
<li style="visibility: hidden"><a href="{{ edit_url }}"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> Edit this page</a></li>{% endif %}
<li><a href="https://github.com/docker/docker.github.io/issues/new?body=File: [{{ page.path }}](https://docs.docker.com{{ page.url }})"
class="nomunge"><i class="fa fa-check" aria-hidden="true"></i> Request docs changes</a></li>
<!-- toggle mode -->
<li>
<div class="toggle-mode">
<div class="icon">
<i class="fa fa-sun-o" aria-hidden="true"></i>
</div>
<div class="toggle-switch">
<label class="switch">
<input type="checkbox" id="switch-style">
<div class="slider round"></div>
</label>
</div>
<div class="icon">
<i class="fa fa-moon-o" aria-hidden="true"></i>
</div>
</div>
</li>
</ul>
</div>
{% unless page.notoc %} {% assign my_min = page.toc_min | default: site.toc_min | default: 2 %} {% assign my_max = page.toc_max | default: site.toc_max | default: 3 %} {% assign my_name = page.url | default: "unnamed" %}
<div id="side-toc-title">On this page:</div>
{% include toc_pure_liquid.html html=content sanitize=true class="inline_toc" id="my_toc" toc_min=my_min toc_max=my_max page_name=my_name %}
</div>
{% endunless %}
</div>
</div>
</div>
</div>
</div>
</div>
{% if page.path == "404.md" %}
<script type="text/javascript">
var path = window.location.pathname.replace("#","");
var ghIssueQueryString = "https://github.com/docker/docker.github.io/issues/new?" + "title=404%20at%20" + path + "&body=URL%3A%20" + path;
document.getElementsByClassName("nomunge")[1].onclick = function() {
document.getElementsByClassName("nomunge")[1].href = ghIssueQueryString;
return true;
};
</script>
{% endif %}
<footer class="footer">
{% include footer.html %}
</footer>
<link rel="stylesheet" href="/css/github.css">
{% if page.highlightjs == true %}
<script src="/js/highlight.pack.js"></script>
<script>
hljs.initHighlightingOnLoad();
</script>
{% endif %}
<script defer src="/js/anchorlinks.js"></script>
<script defer src="/js/menu.js"></script>
<script src="/js/jquery.js"></script>
<script src="/js/bootstrap.min.js"></script>
<!-- Always include the archive.js, but it doesn't do much unless we are an archive -->
<script language="javascript">
// Default to assuming this is an archive and hiding some stuff
// See js/archive.js and js/docs.js for logic relating to this
var isArchive = true;
var dockerVersion = 'v{{ site.docker_ce_version }}';
// In archives, we need to know the page root and we get it from JEKYLL_ENV in the jekyll build command
var jekyllEnv = '{{ jekyll.environment }}';
// If unset (in non-archive branches), defaults to "development". In that case, reset it to empty
if (jekyllEnv == 'development') {
jekyllEnv = '';
}
var pageURL = jekyllEnv + '{{ page.url }}';
</script>
<script src="/js/archive.js"></script>
<script src="/js/stickyfill.min.js"></script>
<script defer src="/js/metadata.js"></script>
<script src="/js/glossary.js"></script>
<script defer src="/js/docs.js"></script>
<script defer src="/js/toc.js"></script>
<script language="javascript">
jQuery(document).ready(function(){
hookupTOCEvents();
});
</script>
</body> </body>
</html> </html>

View File

@ -5,7 +5,7 @@
for (var i = 0; i < hs.length; i++) { for (var i = 0; i < hs.length; i++) {
h = hs[i]; h = hs[i];
if (h.id != null && h.id.length > 0) { if (h.id != null && h.id.length > 0) {
h.insertAdjacentHTML('beforeend', '<a href="' + window.location.href + '#' + h.id + '" class="anchorLink">🔗</a>') h.insertAdjacentHTML('beforeend', '<a href="#' + h.id + '" class="anchorLink">🔗</a>')
} }
} }