@@ -281,7 +280,7 @@ build:
> In your Dockerfile, if you specify `ARG` before the `FROM` instruction,
> `ARG` is not available in the build instructions under `FROM`.
> If you need an argument to be available in both places, also specify it under
-> the `FROM` instruction. Refer to the [understand how ARGS and FROM interact](/engine/reference/builder/#understand-how-arg-and-from-interact)
+> the `FROM` instruction. Refer to the [understand how ARGS and FROM interact](/engine/reference/builder.md#understand-how-arg-and-from-interact)
> section in the documentation for usage details.
You can omit the value when specifying a build argument, in which case its value
@@ -317,7 +316,7 @@ build:
> Added in [version 3.3](compose-versioning.md#version-33) file format
-Add metadata to the resulting image using [Docker labels](/engine/userguide/labels-custom-metadata.md).
+Add metadata to the resulting image using [Docker labels](/config/labels-custom-metadata.md).
You can use either an array or a dictionary.
It's recommended that you use reverse-DNS notation to prevent your labels from
@@ -366,7 +365,7 @@ build:
> Added in [version 3.4](compose-versioning.md#version-34) file format
Build the specified stage as defined inside the `Dockerfile`. See the
-[multi-stage build docs](/engine/userguide/eng-image/multistage-build.md) for
+[multi-stage build docs](/develop/develop-images/multistage-build.md) for
details.
```yaml
@@ -710,13 +709,12 @@ networks:
The options for `endpoint_mode` also work as flags on the swarm mode CLI command
[docker service create](/engine/reference/commandline/service_create.md). For a
-quick list of all swarm related `docker` commands, see [Swarm mode CLI
-commands](/engine/swarm.md#swarm-mode-key-concepts-and-tutorial).
+quick list of all swarm related `docker` commands, see
+[Swarm mode CLI commands](/engine/swarm/index.md#swarm-mode-key-concepts-and-tutorial).
To learn more about service discovery and networking in swarm mode, see
-[Configure service
-discovery](/engine/swarm/networking.md#configure-service-discovery) in the swarm
-mode topics.
+[Configure service discovery](/engine/swarm/networking.md#configure-service-discovery)
+in the swarm mode topics.
#### labels
@@ -749,9 +747,8 @@ services:
Either `global` (exactly one container per swarm node) or `replicated` (a
specified number of containers). The default is `replicated`. (To learn more,
-see [Replicated and global
-services](/engine/swarm/how-swarm-mode-works/services/#replicated-and-global-services)
-in the [swarm](/engine/swarm/) topics.)
+see [Replicated and global services](/engine/swarm/how-swarm-mode-works/services.md#replicated-and-global-services)
+in the [swarm](/engine/swarm/index.md) topics.)
```yaml
@@ -808,11 +805,11 @@ Configures resource constraints.
> The `resources` section replaces the [older resource constraint options](compose-file-v2.md#cpu-and-other-resources)
> in Compose files prior to version 3 (`cpu_shares`, `cpu_quota`, `cpuset`,
> `mem_limit`, `memswap_limit`, `mem_swappiness`).
-> Refer to [Upgrading version 2.x to 3.x](/compose/compose-file/compose-versioning.md#upgrading)
+> Refer to [Upgrading version 2.x to 3.x](compose-versioning.md#upgrading)
> to learn about differences between version 2 and 3 of the compose-file format.
-Each of these is a single value, analogous to its [docker service
-create](/engine/reference/commandline/service_create.md) counterpart.
+Each of these is a single value, analogous to its
+[docker service create](/engine/reference/commandline/service_create.md) counterpart.
In this general example, the `redis` service is constrained to use no more than
50M of memory and `0.50` (50% of a single core) of available processing time (CPU),
@@ -841,8 +838,7 @@ services or containers in a swarm.
> The options described here are specific to the
`deploy` key and swarm mode. If you want to set resource constraints
on non swarm deployments, use
-[Compose file format version 2 CPU, memory, and other resource
-options](compose-file-v2.md#cpu-and-other-resources).
+[Compose file format version 2 CPU, memory, and other resource options](compose-file-v2.md#cpu-and-other-resources).
If you have further questions, refer to the discussion on the GitHub
issue [docker/compose/4513](https://github.com/docker/compose/issues/4513){: target="_blank" class="_"}.
{: .important}
@@ -853,8 +849,7 @@ If your services or containers attempt to use more memory than the system has
available, you may experience an Out Of Memory Exception (OOME) and a container,
or the Docker daemon, might be killed by the kernel OOM killer. To prevent this
from happening, ensure that your application runs on hosts with adequate memory
-and see [Understand the risks of running out of
-memory](/engine/admin/resource_constraints.md#understand-the-risks-of-running-out-of-memory).
+and see [Understand the risks of running out of memory](/config/containers/resource_constraints.md#understand-the-risks-of-running-out-of-memory).
#### restart_policy
@@ -1286,7 +1281,7 @@ for details.
### labels
-Add metadata to containers using [Docker labels](/engine/userguide/labels-custom-metadata.md). You can use either an array or a dictionary.
+Add metadata to containers using [Docker labels](/config/labels-custom-metadata.md). You can use either an array or a dictionary.
It's recommended that you use reverse-DNS notation to prevent your labels from conflicting with those used by other software.
@@ -1310,7 +1305,7 @@ labels:
>
> The `--link` flag is a legacy feature of Docker. It may eventually be removed.
> Unless you absolutely need to continue using it, we recommend that you use
-> [user-defined networks](/engine/userguide/networking/#user-defined-networks)
+> [user-defined networks](/compose/networking.md)
> to facilitate communication between two containers instead of using `--link`.
>
> One feature that user-defined networks do not support that you can do with
@@ -1365,7 +1360,7 @@ logging:
The `driver` name specifies a logging driver for the service's
containers, as with the ``--log-driver`` option for docker run
-([documented here](/engine/admin/logging/overview.md)).
+([documented here](/config/containers/logging/configure.md)).
The default value is json-file.
@@ -1395,7 +1390,7 @@ options:
syslog-address: "tcp://192.168.0.42:123"
```
-The default driver [json-file](/engine/admin/logging/overview.md#json-file), has options to limit the amount of logs stored. To do this, use a key-value pair for maximum storage size and maximum number of files:
+The default driver [json-file](/config/containers/logging/json-file.md), has options to limit the amount of logs stored. To do this, use a key-value pair for maximum storage size and maximum number of files:
```yaml
options:
@@ -1425,10 +1420,10 @@ services:
> Logging options available depend on which logging driver you use
>
> The above example for controlling log files and sizes uses options
-> specific to the [json-file driver](/engine/admin/logging/overview.md#json-file).
+> specific to the [json-file driver](/config/containers/logging/json-file.md).
> These particular options are not available on other logging drivers.
> For a full list of supported logging drivers and their options, refer to the
-> [logging drivers](/engine/admin/logging/overview.md) documentation.
+> [logging drivers](/config/containers/logging/configure.md) documentation.
### network_mode
@@ -1540,7 +1535,7 @@ The corresponding network configuration in the
[top-level networks section](#network-configuration-reference) must have an
`ipam` block with subnet configurations covering each static address.
-> If IPv6 addressing is desired, the [`enable_ipv6`](compose-file-v2.md##enable_ipv6)
+> If IPv6 addressing is desired, the [`enable_ipv6`](compose-file-v2.md#enable_ipv6)
> option must be set, and you must use a [version 2.x Compose file](compose-file-v2.md#ipv4_address-ipv6_address).
> _IPv6 options do not currently work in swarm mode_.
@@ -1766,7 +1761,7 @@ security_opt:
Specify how long to wait when attempting to stop a container if it doesn't
handle SIGTERM (or whatever stop signal has been specified with
-[`stop_signal`](#stopsignal)), before sending SIGKILL. Specified
+[`stop_signal`](#stop_signal)), before sending SIGKILL. Specified
as a [duration](#specifying-durations).
```yaml
@@ -1809,8 +1804,8 @@ sysctls:
You can only use sysctls that are namespaced in the kernel. Docker does not
support changing sysctls inside a container that also modify the host system.
-For an overview of supported sysctls, refer to [configure namespaced kernel
-parameters (sysctls) at runtime](/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime).
+For an overview of supported sysctls, refer to
+[configure namespaced kernel parameters (sysctls) at runtime](/engine/reference/commandline/run.md#configure-namespaced-kernel-parameters-sysctls-at-runtime).
> Note when using docker stack deploy
>
@@ -1869,7 +1864,7 @@ userns_mode: "host"
```
Disables the user namespace for this service, if Docker daemon is configured with user namespaces.
-See [dockerd](/engine/reference/commandline/dockerd.md#disable-user-namespace-for-a-container) for
+See [dockerd](/engine/reference/commandline/dockerd/#disable-user-namespace-for-a-container) for
more information.
> Note when using docker stack deploy
@@ -1931,8 +1926,8 @@ volumes:
> **Note**
>
-> For general information on volumes, refer to the [use volumes](/engine/admin/volumes/volumes.md)
-> and [volume plugins](/engine/extend/plugins_volume.md) sections in the documentation.
+> For general information on volumes, refer to the [use volumes](/storage/volumes.md)
+> and [volume plugins](/engine/extend/plugins_volume/) sections in the documentation.
#### Short syntax
@@ -2017,7 +2012,7 @@ volumes:
> When creating bind mounts, using the long syntax requires the
> referenced folder to be created beforehand. Using the short syntax
> creates the folder on the fly if it doesn't exist.
-> See the [bind mounts documentation](/engine/admin/volumes/bind-mounts.md/#differences-between--v-and---mount-behavior)
+> See the [bind mounts documentation](/storage/bind-mounts.md#differences-between--v-and---mount-behavior)
> for more information.
#### Volumes for services, swarms, and stack files
@@ -2038,10 +2033,10 @@ constraints on the service so that its tasks are deployed on a node that has the
volume present.
As an example, the `docker-stack.yml` file for the
-[votingapp sample in Docker
-Labs](https://github.com/docker/labs/blob/master/beginner/chapters/votingapp.md) defines a service called `db` that runs a `postgres` database. It is
-configured as a named volume to persist the data on the swarm,
-_and_ is constrained to run only on `manager` nodes. Here is the relevant snip-it from that file:
+[votingapp sample in Docker Labs](https://github.com/docker/labs/blob/master/beginner/chapters/votingapp.md)
+defines a service called `db` that runs a `postgres` database. It is configured
+as a named volume to persist the data on the swarm, _and_ is constrained to run
+only on `manager` nodes. Here is the relevant snip-it from that file:
```yaml
version: "{{ site.compose_file_v3 }}"
@@ -2087,8 +2082,8 @@ services:
```
Full detail on these flags, the problems they solve, and their
-`docker run` counterparts is in the Docker Desktop for Mac topic [Performance tuning for
-volume mounts (shared filesystems)](/docker-for-mac/osxfs-caching.md).
+`docker run` counterparts is in the Docker Desktop for Mac topic
+[Performance tuning for volume mounts (shared filesystems)](/docker-for-mac/osxfs-caching.md).
### domainname, hostname, ipc, mac\_address, privileged, read\_only, shm\_size, stdin\_open, tty, user, working\_dir
@@ -2151,8 +2146,8 @@ easily retrieved and inspected using the docker command line or API.
See the [docker volume](/engine/reference/commandline/volume_create.md)
subcommand documentation for more information.
-See [use volumes](/engine/admin/volumes/volumes.md) and [volume
-plugins](/engine/extend/plugins_volume.md) for general information on volumes.
+See [use volumes](/storage/volumes.md) and [volume
+plugins](/engine/extend/plugins_volume/) for general information on volumes.
Here's an example of a two-service setup where a database's data directory is
shared with another service as a volume so that it can be periodically backed
@@ -2251,18 +2246,18 @@ volumes:
> Note when using docker stack deploy
>
-> External volumes that do not exist _are created_ if you use [docker stack
-> deploy](#deploy) to launch the app in [swarm mode](/engine/swarm/index.md)
-> (instead of [docker compose up](/compose/reference/up.md)). In swarm mode, a
-> volume is automatically created when it is defined by a service. As service
-> tasks are scheduled on new nodes, [swarmkit](https://github.com/docker/swarmkit/blob/master/README.md)
+> External volumes that do not exist _are created_ if you use [docker stack deploy](#deploy)
+> to launch the app in [swarm mode](/engine/swarm/index.md) (instead of
+> [docker compose up](/compose/reference/up.md)). In swarm mode, a volume is
+> automatically created when it is defined by a service. As service tasks are
+> scheduled on new nodes, [swarmkit](https://github.com/docker/swarmkit/blob/master/README.md)
> creates the volume on the local node. To learn more, see [moby/moby#29976](https://github.com/moby/moby/issues/29976).
{: .important }
### labels
Add metadata to containers using
-[Docker labels](/engine/userguide/labels-custom-metadata.md). You can use either
+[Docker labels](/config/labels-custom-metadata.md). You can use either
an array or a dictionary.
It's recommended that you use reverse-DNS notation to prevent your labels from
@@ -2314,8 +2309,7 @@ The top-level `networks` key lets you specify networks to be created.
* For a full explanation of Compose's use of Docker networking features and all
network driver options, see the [Networking guide](/compose/networking.md).
* For [Docker Labs](https://github.com/docker/labs/blob/master/README.md)
- tutorials on networking, start with [Designing Scalable, Portable Docker
- Container Networks](https://github.com/docker/labs/blob/master/networking/README.md)
+ tutorials on networking, start with [Designing Scalable, Portable Docker Container Networks](https://github.com/docker/labs/blob/master/networking/README.md)
### driver
@@ -2334,22 +2328,21 @@ driver: overlay
#### bridge
Docker defaults to using a `bridge` network on a single host. For examples of
-how to work with bridge networks, see the Docker Labs tutorial on [Bridge
-networking](https://github.com/docker/labs/blob/master/networking/A2-bridge-networking.md).
+how to work with bridge networks, see the Docker Labs tutorial on
+[Bridge networking](https://github.com/docker/labs/blob/master/networking/A2-bridge-networking.md).
#### overlay
The `overlay` driver creates a named network across multiple nodes in a
-[swarm](/engine/swarm/).
+[swarm](/engine/swarm/index.md).
* For a working example of how to build and use an
`overlay` network with a service in swarm mode, see the Docker Labs tutorial on
-[Overlay networking and service
-discovery](https://github.com/docker/labs/blob/master/networking/A3-overlay-networking.md).
+[Overlay networking and service discovery](https://github.com/docker/labs/blob/master/networking/A3-overlay-networking.md).
* For an in-depth look at how it works under the hood, see the
-networking concepts lab on the [Overlay Driver Network
-Architecture](https://github.com/docker/labs/blob/master/networking/concepts/06-overlay-networks.md).
+networking concepts lab on the
+[Overlay Driver Network Architecture](https://github.com/docker/labs/blob/master/networking/concepts/06-overlay-networks.md).
#### host or none
@@ -2475,7 +2468,7 @@ you can set this option to `true`.
### labels
Add metadata to containers using
-[Docker labels](/engine/userguide/labels-custom-metadata.md). You can use either
+[Docker labels](/config/labels-custom-metadata.md). You can use either
an array or a dictionary.
It's recommended that you use reverse-DNS notation to prevent your labels from
@@ -2688,5 +2681,5 @@ stack.
- [User guide](/compose/index.md)
- [Installing Compose](/compose/install.md)
- [Compose file versions and upgrading](compose-versioning.md)
-- [Samples](/samples/)
-- [Command line reference](/compose/reference/)
+- [Samples](/samples/index.md)
+- [Command line reference](/compose/reference/index.md)
diff --git a/compose/django.md b/compose/django.md
index 4eb65148befa..32f78e79edea 100644
--- a/compose/django.md
+++ b/compose/django.md
@@ -20,9 +20,8 @@ and a `docker-compose.yml` file. (You can use either a `.yml` or `.yaml` extensi
The Dockerfile defines an application's image content via one or more build
commands that configure that image. Once built, you can run the image in a
- container. For more information on `Dockerfile`, see the [Docker user
- guide](/engine/tutorials/dockerimages.md#building-an-image-from-a-dockerfile)
- and the [Dockerfile reference](/engine/reference/builder.md).
+ container. For more information on `Dockerfile`, see the [Docker user guide](/get-started/index.md)
+ and the [Dockerfile reference](/engine/reference/builder/).
3. Add the following content to the `Dockerfile`.
@@ -58,7 +57,7 @@ and a `docker-compose.yml` file. (You can use either a `.yml` or `.yaml` extensi
also describes which Docker images these services use, how they link
together, any volumes they might need mounted inside the containers.
Finally, the `docker-compose.yml` file describes which ports these services
- expose. See the [`docker-compose.yml` reference](compose-file.md) for more
+ expose. See the [`docker-compose.yml` reference](/compose/compose-file/index.md) for more
information on how this file works.
9. Add the following configuration to the file.
@@ -91,7 +90,7 @@ In this step, you create a Django starter project by building the image from the
1. Change to the root of your project directory.
2. Create the Django project by running
-the [docker-compose run](/compose/reference/run/) command as follows.
+the [docker-compose run](/compose/reference/run.md) command as follows.
sudo docker-compose run web django-admin startproject composeexample .
@@ -152,12 +151,12 @@ In this section, you set up the database connection for Django.
}
These settings are determined by the
- [postgres](https://hub.docker.com/images/postgres) Docker image
+ [postgres](https://hub.docker.com/_/postgres) Docker image
specified in `docker-compose.yml`.
3. Save and close the file.
-4. Run the [docker-compose up](/compose/reference/up/) command from the top level directory for your project.
+4. Run the [docker-compose up](/compose/reference/up.md) command from the top level directory for your project.
```none
$ docker-compose up
@@ -223,7 +222,7 @@ def85eff5f51 django_web "python3 manage.py..." 10 minutes ago
Killing test_db_1 ... done
```
- * Or, for a more elegant shutdown, switch to a different shell, and run [docker-compose down](/compose/reference/down/) from the top level of your Django sample project directory.
+ * Or, for a more elegant shutdown, switch to a different shell, and run [docker-compose down](/compose/reference/down.md) from the top level of your Django sample project directory.
```none
vmb at mymachine in ~/sandbox/django
@@ -245,5 +244,5 @@ def85eff5f51 django_web "python3 manage.py..." 10 minutes ago
- [Getting Started](gettingstarted.md)
- [Get started with Rails](rails.md)
- [Get started with WordPress](wordpress.md)
-- [Command line reference](./reference/index.md)
-- [Compose file reference](compose-file.md)
+- [Command line reference](/compose/reference/index.md)
+- [Compose file reference](/compose/compose-file/index.md)
diff --git a/compose/env-file.md b/compose/env-file.md
index f543f32bcaa5..9b314490b857 100644
--- a/compose/env-file.md
+++ b/compose/env-file.md
@@ -20,10 +20,10 @@ These syntax rules apply to the `.env` file:
## Compose file and CLI variables
-The environment variables you define here are used for [variable
-substitution](compose-file/index.md#variable-substitution) in your Compose file,
-and can also be used to define the following [CLI
-variables](reference/envvars.md):
+The environment variables you define here are used for
+[variable substitution](/compose/compose-file/index.md#variable-substitution)
+in your Compose file, and can also be used to define the following
+[CLI variables](/compose/reference/envvars.md):
- `COMPOSE_API_VERSION`
- `COMPOSE_CONVERT_WINDOWS_PATHS`
@@ -37,19 +37,18 @@ variables](reference/envvars.md):
> **Notes**
>
-> * Values present in the environment at runtime always override
-those defined inside the `.env` file. Similarly, values passed via command-line
-arguments take precedence as well.
->
-> * Environment variables defined in the `.env` file are not
-automatically visible inside containers. To set container-applicable
-environment variables, follow the guidelines in the topic [Environment variables
-in Compose](/compose/environment-variables.md), which describes how to pass
-shell environment variables through to containers, define environment variables
-in Compose files, and more.
+> * Values present in the environment at runtime always override those defined
+> inside the `.env` file. Similarly, values passed via command-line arguments
+> take precedence as well.
+> * Environment variables defined in the `.env` file are not automatically
+> visible inside containers. To set container-applicable environment variables,
+> follow the guidelines in the topic
+> [Environment variables in Compose](/compose/environment-variables.md), which
+> describes how to pass shell environment variables through to containers,
+> define environment variables in Compose files, and more.
## More Compose documentation
- [User guide](index.md)
-- [Command line reference](./reference/index.md)
-- [Compose file reference](compose-file.md)
+- [Command line reference](/compose/reference/index.md)
+- [Compose file reference](/compose/compose-file/index.md)
diff --git a/compose/environment-variables.md b/compose/environment-variables.md
index 662eb230600f..668eafffe4d8 100644
--- a/compose/environment-variables.md
+++ b/compose/environment-variables.md
@@ -19,14 +19,14 @@ web:
```
For more information, see the
-[Variable substitution](compose-file.md#variable-substitution) section in the
+[Variable substitution](/compose/compose-file/index.md#variable-substitution) section in the
Compose file reference.
## Set environment variables in containers
You can set environment variables in a service's containers with the
-['environment' key](compose-file.md#environment), just like with
+['environment' key](/compose/compose-file/index.md#environment), just like with
`docker run -e VARIABLE=VALUE ...`:
```yaml
@@ -38,7 +38,7 @@ web:
## Pass environment variables to containers
You can pass environment variables from your shell straight through to a
-service's containers with the ['environment' key](compose-file.md#environment)
+service's containers with the ['environment' key](/compose/compose-file/index.md#environment)
by not giving them a value, just like with `docker run -e VARIABLE ...`:
```yaml
@@ -53,7 +53,7 @@ the same variable in the shell in which Compose is run.
## The “env_file” configuration option
You can pass multiple environment variables from an external file through to
-a service's containers with the ['env_file' option](compose-file.md#env_file),
+a service's containers with the ['env_file' option](/compose/compose-file/index.md#env_file),
just like with `docker run --env-file=FILE ...`:
```yaml
@@ -180,8 +180,8 @@ documented in [CLI Environment Variables](reference/envvars.md).
## Environment variables created by links
-When using the ['links' option](compose-file.md#links) in a
-[v1 Compose file](compose-file.md#version-1), environment variables are created
+When using the ['links' option](/compose/compose-file/index.md#links) in a
+[v1 Compose file](/compose/compose-file/index.md#version-1), environment variables are created
for each link. They are documented in
the [Link environment variables reference](link-env-deprecated.md).
diff --git a/compose/extends.md b/compose/extends.md
index 41f8500b083a..2724132480dd 100644
--- a/compose/extends.md
+++ b/compose/extends.md
@@ -25,14 +25,14 @@ contain configuration overrides for existing services or entirely new
services.
If a service is defined in both files, Compose merges the configurations using
-the rules described in [Adding and overriding
-configuration](extends.md#adding-and-overriding-configuration).
+the rules described in
+[Adding and overriding configuration](extends.md#adding-and-overriding-configuration).
To use multiple override files, or an override file with a different name, you
can use the `-f` option to specify the list of files. Compose merges files in
-the order they're specified on the command line. See the [`docker-compose`
-command reference](/compose/reference/overview.md) for more information about
-using `-f`.
+the order they're specified on the command line. See the
+[`docker-compose` command reference](/compose/reference/overview.md) for more information
+about using `-f`.
When you use multiple configuration files, you must make sure all paths in the
files are relative to the base Compose file (the first Compose file specified
@@ -159,17 +159,16 @@ backup, include the `docker-compose.admin.yml` as well.
## Extending services
-> **Note**: The `extends` keyword is supported in earlier Compose file formats
-up to Compose file version 2.1 (see [extends in
-v1](/compose/compose-file/compose-file-v1.md#extends) and [extends in
-v2](/compose/compose-file/compose-file-v2.md#extends)), but is not supported in
-Compose version 3.x. See the [Version 3
-summary](/compose/compose-file/compose-versioning.md#version-3) of keys added
-and removed, along with information on [how to
-upgrade](/compose/compose-file/compose-versioning.md#upgrading). See
-[moby/moby#31101](https://github.com/moby/moby/issues/31101) to follow the
-discussion thread on possibility of adding support for `extends` in some form in
-future versions.
+> **Note**
+>
+> The `extends` keyword is supported in earlier Compose file formats up to Compose
+> file version 2.1 (see [extends in v1](/compose/compose-file/compose-file-v1.md#extends)
+> and [extends in v2](/compose/compose-file/compose-file-v2.md#extends)), but is
+> not supported in Compose version 3.x. See the [Version 3 summary](/compose/compose-file/compose-versioning.md#version-3)
+> of keys added and removed, along with information on [how to upgrade](/compose/compose-file/compose-versioning.md#upgrading).
+> See [moby/moby#31101](https://github.com/moby/moby/issues/31101) to follow the
+> discussion thread on possibility of adding support for `extends` in some form in
+> future versions.
Docker Compose's `extends` keyword enables sharing of common configurations
among different files, or even different projects entirely. Extending services
@@ -376,5 +375,5 @@ container:
- [Get started with Django](django.md)
- [Get started with Rails](rails.md)
- [Get started with WordPress](wordpress.md)
-- [Command line reference](./reference/index.md)
-- [Compose file reference](compose-file.md)
+- [Command line reference](/compose/reference/index.md)
+- [Compose file reference](/compose/compose-file/index.md)
diff --git a/compose/faq.md b/compose/faq.md
index 9a868c248828..03248878b31f 100644
--- a/compose/faq.md
+++ b/compose/faq.md
@@ -16,7 +16,7 @@ Yes - see [Controlling startup order](startup-order.md).
## Why do my services take 10 seconds to recreate or stop?
Compose stop attempts to stop a container by sending a `SIGTERM`. It then waits
-for a [default timeout of 10 seconds](./reference/stop.md). After the timeout,
+for a [default timeout of 10 seconds](/compose/reference/stop.md). After the timeout,
a `SIGKILL` is sent to the container to forcefully kill it. If you
are waiting for this timeout, it means that your containers aren't shutting down
when they receive the `SIGTERM` signal.
@@ -54,9 +54,8 @@ handling `SIGTERM` properly.
Compose uses the project name to create unique identifiers for all of a
project's containers and other resources. To run multiple copies of a project,
-set a custom project name using the [`-p` command line
-option](./reference/overview.md) or the [`COMPOSE_PROJECT_NAME`
-environment variable](./reference/envvars.md#compose-project-name).
+set a custom project name using the [`-p` command line option](/compose/reference/overview.md)
+or the [`COMPOSE_PROJECT_NAME` environment variable](/compose/reference/envvars.md#compose_project_name).
## What's the difference between `up`, `run`, and `start`?
@@ -116,5 +115,5 @@ github](https://github.com/search?q=in%3Apath+docker-compose.yml+extension%3Ayml
- [Get started with Django](django.md)
- [Get started with Rails](rails.md)
- [Get started with WordPress](wordpress.md)
-- [Command line reference](./reference/index.md)
-- [Compose file reference](compose-file.md)
+- [Command line reference](/compose/reference/index.md)
+- [Compose file reference](/compose/compose-file/index.md)
diff --git a/compose/gettingstarted.md b/compose/gettingstarted.md
index 55198f2f3ced..1fc0221ec212 100644
--- a/compose/gettingstarted.md
+++ b/compose/gettingstarted.md
@@ -11,9 +11,9 @@ understandable even if you're not familiar with it.
## Prerequisites
-Make sure you have already installed both [Docker Engine](/install/index.md) and [Docker
-Compose](install.md). You don't need to install Python or Redis, as both are
-provided by Docker images.
+Make sure you have already installed both [Docker Engine](/install/index.md)
+and [Docker Compose](install.md). You don't need to install Python or Redis, as
+both are provided by Docker images.
## Step 1: Setup
@@ -102,9 +102,9 @@ This tells Docker to:
* Copy the current directory `.` in the project to the workdir `.` in the image.
* Set the default command for the container to `flask run`.
-For more information on how to write Dockerfiles, see the [Docker user
-guide](/engine/tutorials/dockerimages.md#building-an-image-from-a-dockerfile)
-and the [Dockerfile reference](/engine/reference/builder.md).
+For more information on how to write Dockerfiles, see the
+[Docker user guide](/develop/index.md)
+and the [Dockerfile reference](/engine/reference/builder/).
## Step 3: Define services in a Compose file
@@ -214,7 +214,8 @@ hitting CTRL+C in the original terminal where you started the app.
## Step 5: Edit the Compose file to add a bind mount
-Edit `docker-compose.yml` in your project directory to add a [bind mount](/engine/admin/volumes/bind-mounts.md) for the `web` service:
+Edit `docker-compose.yml` in your project directory to add a
+[bind mount](/storage/bind-mounts.md) for the `web` service:
version: '3'
services:
@@ -262,11 +263,10 @@ If you get runtime errors indicating an application file is not found, a volume
mount is denied, or a service cannot start, try enabling file or drive sharing.
Volume mounting requires shared drives for projects that live outside of
`C:\Users` (Windows) or `/Users` (Mac), and is required for _any_ project on
-Docker Desktop for Windows that uses [Linux
-containers](/docker-for-windows/#switch-between-windows-and-linux-containers-beta-feature). For more information, see [Shared Drives](../docker-for-windows/#shared-drives)
-on Docker Desktop for Windows, [File sharing](../docker-for-mac/#file-sharing) on Docker
-for Mac, and the general examples on how to [Manage data in
-containers](../engine/tutorials/dockervolumes.md).
+Docker Desktop for Windows that uses [Linux containers](/docker-for-windows/index.md#switch-between-windows-and-linux-containers).
+For more information, see [File sharing](/docker-for-mac/index.md#file-sharing) on Docker
+for Mac, and the general examples on how to
+> [Manage data in containers](/storage/volumes.md).
>
> * If you are using Oracle VirtualBox on an older Windows OS, you might encounter an issue with shared folders as described in this [VB trouble
ticket](https://www.virtualbox.org/ticket/14920). Newer Windows systems meet the
@@ -332,7 +332,7 @@ At this point, you have seen the basics of how Compose works.
## Where to go next
- Next, try the quick start guide for [Django](django.md),
- [Rails](rails.md), or [WordPress](/samples/library/wordpress/)
-- [Explore the full list of Compose commands](./reference/)
-- [Compose configuration file reference](compose-file/)
-- To learn more about volumes and bind mounts, see [Manage data in Docker](/engine/admin/volumes/index.md)
+ [Rails](rails.md), or [WordPress](wordpress.md)
+- [Explore the full list of Compose commands](/compose/reference/index.md)
+- [Compose configuration file reference](/compose/compose-file/index.md)
+- To learn more about volumes and bind mounts, see [Manage data in Docker](/storage/index.md)
diff --git a/compose/index.md b/compose/index.md
index 605ef977f284..9847e579dfd9 100644
--- a/compose/index.md
+++ b/compose/index.md
@@ -47,7 +47,7 @@ A `docker-compose.yml` looks like this:
logvolume01: {}
For more information about the Compose file, see the
-[Compose file reference](compose-file/index.md).
+[Compose file reference](/compose/compose-file/index.md).
Compose has commands for managing the whole lifecycle of your application:
@@ -64,8 +64,8 @@ Compose has commands for managing the whole lifecycle of your application:
- [Get started with Rails](rails.md)
- [Get started with WordPress](wordpress.md)
- [Frequently asked questions](faq.md)
-- [Command line reference](./reference/index.md)
-- [Compose file reference](compose-file/index.md)
+- [Command line reference](/compose/reference/index.md)
+- [Compose file reference](/compose/compose-file/index.md)
## Features
@@ -88,8 +88,8 @@ Compose uses a project name to isolate environments from each other. You can mak
The default project name is the basename of the project directory. You can set
a custom project name by using the
-[`-p` command line option](./reference/overview.md) or the
-[`COMPOSE_PROJECT_NAME` environment variable](./reference/envvars.md#compose-project-name).
+[`-p` command line option](/compose/reference/overview.md) or the
+[`COMPOSE_PROJECT_NAME` environment variable](/compose/reference/envvars.md#compose_project_name).
### Preserve volume data when containers are created
@@ -99,7 +99,7 @@ the old container to the new container. This process ensures that any data
you've created in volumes isn't lost.
If you use `docker-compose` on a Windows machine, see
-[Environment variables](reference/envvars.md) and adjust the necessary environment
+[Environment variables](/compose/reference/envvars.md) and adjust the necessary environment
variables for your specific needs.
@@ -115,7 +115,7 @@ environment very quickly.
Compose supports variables in the Compose file. You can use these variables
to customize your composition for different environments, or different users.
-See [Variable substitution](compose-file.md#variable-substitution) for more
+See [Variable substitution](/compose/compose-file/index.md#variable-substitution) for more
details.
You can extend a Compose file using the `extends` field or by creating multiple
@@ -133,7 +133,7 @@ When you're developing software, the ability to run an application in an
isolated environment and interact with it is crucial. The Compose command
line tool can be used to create the environment and interact with it.
-The [Compose file](compose-file.md) provides a way to document and configure
+The [Compose file](/compose/compose-file/index.md) provides a way to document and configure
all of the application's service dependencies (databases, queues, caches,
web service APIs, etc). Using the Compose command line tool you can create
and start one or more containers for each dependency with a single command
@@ -148,7 +148,7 @@ started guide" to a single machine readable Compose file and a few commands.
An important part of any Continuous Deployment or Continuous Integration process
is the automated test suite. Automated end-to-end testing requires an
environment in which to run tests. Compose provides a convenient way to create
-and destroy isolated testing environments for your test suite. By defining the full environment in a [Compose file](compose-file.md), you can create and destroy these environments in just a few commands:
+and destroy isolated testing environments for your test suite. By defining the full environment in a [Compose file](/compose/compose-file/index.md), you can create and destroy these environments in just a few commands:
$ docker-compose up -d
$ ./run_tests
@@ -180,8 +180,6 @@ individuals, we have a number of open channels for communication.
* To report bugs or file feature requests: use the [issue tracker on Github](https://github.com/docker/compose/issues).
* To talk about the project with people in real time: join the
- `#docker-compose` channel on freenode IRC.
+ `#docker-compose` channel on the Docker Community Slack.
* To contribute code or documentation changes: submit a [pull request on Github](https://github.com/docker/compose/pulls).
-
-For more information and resources, visit the [Getting Help project page](/opensource/get-help/).
diff --git a/compose/install.md b/compose/install.md
index bbd0326abc84..019b95b6b28d 100644
--- a/compose/install.md
+++ b/compose/install.md
@@ -79,7 +79,7 @@ Windows Server, follow the instructions in the Windows Server tab.
### Install Compose on Windows Server
Follow these instructions if you are running the Docker daemon and client directly
-on Microsoft Windows Server with [Docker Engine - Enterprise](/install/windows/docker-ee.md),
+on Microsoft Windows Server with [Docker Engine - Enterprise](/ee/docker-ee/windows/docker-ee.md),
and want to install Docker Compose.
@@ -119,10 +119,11 @@ and want to install Docker Compose.
### Install Compose on Linux systems
-On Linux, you can download the Docker Compose binary from the [Compose
-repository release page on GitHub](https://github.com/docker/compose/releases){:
-target="_blank" class="_"}. Follow the instructions from the link, which involve
-running the `curl` command in your terminal to download the binaries. These step-by-step instructions are also included below.
+On Linux, you can download the Docker Compose binary from the
+[Compose repository release page on GitHub](https://github.com/docker/compose/releases){:target="_blank" class="_"}.
+Follow the instructions from the link, which involve running the `curl` command
+in your terminal to download the binaries. These step-by-step instructions are
+also included below.
> For `alpine`, the following dependency packages are needed:
> `py-pip`, `python-dev`, `libffi-dev`, `openssl-dev`, `gcc`, `libc-dev`, and `make`.
@@ -282,4 +283,4 @@ pip uninstall docker-compose
- [Get started with Rails](rails.md)
- [Get started with WordPress](wordpress.md)
- [Command line reference](/compose/reference/index.md)
-- [Compose file reference](compose-file.md)
+- [Compose file reference](/compose/compose-file/index.md)
diff --git a/compose/link-env-deprecated.md b/compose/link-env-deprecated.md
index 018fe86f1ab6..cebc3b512901 100644
--- a/compose/link-env-deprecated.md
+++ b/compose/link-env-deprecated.md
@@ -7,11 +7,11 @@ title: Link environment variables (superseded)
notoc: true
---
-> **Note**: Environment variables are no longer the recommended method for connecting to linked services. Instead, you should use the link name (by default, the name of the linked service) as the hostname to connect to. See the [docker-compose.yml documentation](compose-file.md#links) for details.
+> **Note**: Environment variables are no longer the recommended method for connecting to linked services. Instead, you should use the link name (by default, the name of the linked service) as the hostname to connect to. See the [docker-compose.yml documentation](/compose/compose-file/#links) for details.
>
-> Environment variables are only populated if you're using the [legacy version 1 Compose file format](compose-file.md#versioning).
+> Environment variables are only populated if you're using the [legacy version 1 Compose file format](/compose/compose-file/compose-versioning.md#versioning).
-Compose uses [Docker links](/engine/userguide/networking/default_network/dockerlinks.md)
+Compose uses [Docker links](/network/links.md)
to expose services' containers to one another. Each linked container injects a set of
environment variables, each of which begins with the uppercase name of the container.
@@ -39,5 +39,5 @@ Fully qualified container name, such as `DB_1_NAME=/myapp_web_1/myapp_db_1`
- [User guide](index.md)
- [Installing Compose](install.md)
-- [Command line reference](./reference/index.md)
-- [Compose file reference](compose-file.md)
+- [Command line reference](/compose/reference/index.md)
+- [Compose file reference](/compose/compose-file/index.md)
diff --git a/compose/networking.md b/compose/networking.md
index 446c75e9a616..f0acd87de6b1 100644
--- a/compose/networking.md
+++ b/compose/networking.md
@@ -4,19 +4,18 @@ keywords: documentation, docs, docker, compose, orchestration, containers, netwo
title: Networking in Compose
---
-> This page applies to Compose file formats [version 2](compose-file/compose-file-v2.md) and [higher](compose-file/). Networking features are not supported for Compose file [version 1 (legacy)](compose-file/compose-file-v1.md).
+> This page applies to Compose file formats [version 2](/compose/compose-file/compose-file-v2.md) and [higher](/compose/compose-file/index.md). Networking features are not supported for Compose file [version 1 (legacy)](/compose/compose-file/compose-file-v1.md).
By default Compose sets up a single
-[network](/engine/reference/commandline/network_create/) for your app. Each
+[network](/engine/reference/commandline/network_create.md) for your app. Each
container for a service joins the default network and is both *reachable* by
other containers on that network, and *discoverable* by them at a hostname
identical to the container name.
> **Note**: Your app's network is given a name based on the "project name",
> which is based on the name of the directory it lives in. You can override the
-> project name with either the [`--project-name`
-> flag](reference/overview.md) or the [`COMPOSE_PROJECT_NAME` environment
-> variable](reference/envvars.md#compose-project-name).
+> project name with either the [`--project-name` flag](/compose/reference/overview.md)
+> or the [`COMPOSE_PROJECT_NAME` environment variable](/compose/reference/envvars.md#compose_project_name).
For example, suppose your app is in a directory called `myapp`, and your `docker-compose.yml` looks like this:
@@ -83,15 +82,15 @@ Links allow you to define extra aliases by which a service is reachable from ano
db:
image: postgres
-See the [links reference](compose-file/compose-file-v2.md#links) for more information.
+See the [links reference](/compose/compose-file/compose-file-v2.md#links) for more information.
## Multi-host networking
-> **Note**: The instructions in this section refer to [legacy Docker Swarm](/compose/swarm.md) operations, and only work when targeting a legacy Swarm cluster. For instructions on deploying a compose project to the newer integrated swarm mode, consult the [Docker Stacks](/compose/bundles.md) documentation.
+> **Note**: The instructions in this section refer to [legacy Docker Swarm](swarm.md) operations, and only work when targeting a legacy Swarm cluster. For instructions on deploying a compose project to the newer integrated swarm mode, consult the [Docker Stacks](/engine/reference/commandline/stack_deploy.md) documentation.
When [deploying a Compose application to a Swarm cluster](swarm.md), you can make use of the built-in `overlay` driver to enable multi-host communication between containers with no changes to your Compose file or application code.
-Consult the [Getting started with multi-host networking](/engine/userguide/networking/get-started-overlay/) to see how to set up a Swarm cluster. The cluster uses the `overlay` driver by default, but you can specify it explicitly if you prefer - see below for how to do this.
+Consult the [Getting started with multi-host networking](/network/network-tutorial-overlay.md) to see how to set up a Swarm cluster. The cluster uses the `overlay` driver by default, but you can specify it explicitly if you prefer - see below for how to do this.
## Specify custom networks
@@ -129,9 +128,9 @@ Here's an example Compose file defining two custom networks. The `proxy` service
foo: "1"
bar: "2"
-Networks can be configured with static IP addresses by setting the [ipv4_address and/or ipv6_address](compose-file/compose-file-v2.md#ipv4-address-ipv6-address) for each attached network.
+Networks can be configured with static IP addresses by setting the [ipv4_address and/or ipv6_address](/compose/compose-file/compose-file-v2.md#ipv4_address-ipv6_address) for each attached network.
-Networks can also be given a [custom name](compose-file/index.md#name-1) (since version 3.5):
+Networks can also be given a [custom name](/compose/compose-file/index.md#network-configuration-reference) (since version 3.5):
version: "3.5"
networks:
@@ -141,8 +140,8 @@ Networks can also be given a [custom name](compose-file/index.md#name-1) (since
For full details of the network configuration options available, see the following references:
-- [Top-level `networks` key](compose-file/compose-file-v2.md#network-configuration-reference)
-- [Service-level `networks` key](compose-file/compose-file-v2.md#networks)
+- [Top-level `networks` key](/compose/compose-file/compose-file-v2.md#network-configuration-reference)
+- [Service-level `networks` key](/compose/compose-file/compose-file-v2.md#networks)
## Configure the default network
@@ -165,7 +164,7 @@ Instead of (or as well as) specifying your own networks, you can also change the
## Use a pre-existing network
-If you want your containers to join a pre-existing network, use the [`external` option](compose-file/compose-file-v2.md#network-configuration-reference):
+If you want your containers to join a pre-existing network, use the [`external` option](/compose/compose-file/compose-file-v2.md#network-configuration-reference):
networks:
default:
diff --git a/compose/production.md b/compose/production.md
index a860c247dbd6..31233765ea3f 100644
--- a/compose/production.md
+++ b/compose/production.md
@@ -76,5 +76,5 @@ Read more about the Compose/Swarm integration in the
## Compose documentation
- [Installing Compose](install.md)
-- [Command line reference](./reference/index.md)
-- [Compose file reference](compose-file.md)
+- [Command line reference](/compose/reference/index.md)
+- [Compose file reference](/compose/compose-file/index.md)
diff --git a/compose/rails.md b/compose/rails.md
index ad72c789c15f..c29999a33444 100644
--- a/compose/rails.md
+++ b/compose/rails.md
@@ -33,9 +33,8 @@ Dockerfile consists of:
That'll put your application code inside an image that builds a container
with Ruby, Bundler and all your dependencies inside it. For more information on
-how to write Dockerfiles, see the [Docker user
-guide](/engine/tutorials/dockerimages.md#building-an-image-from-a-dockerfile)
-and the [Dockerfile reference](/engine/reference/builder.md).
+how to write Dockerfiles, see the [Docker user guide](/get-started/index.md)
+and the [Dockerfile reference](/engine/reference/builder/).
Next, create a bootstrap `Gemfile` which just loads Rails. It'll be overwritten
in a moment by `rails new`.
@@ -90,7 +89,7 @@ to link them together and expose the web app's port.
### Build the project
With those files in place, you can now generate the Rails skeleton app
-using [docker-compose run](/compose/reference/run/):
+using [docker-compose run](/compose/reference/run.md):
docker-compose run web rails new . --force --no-deps --database=postgresql
@@ -170,7 +169,7 @@ test:
database: myapp_test
```
-You can now boot the app with [docker-compose up](/compose/reference/up/):
+You can now boot the app with [docker-compose up](/compose/reference/up.md):
docker-compose up
@@ -218,7 +217,7 @@ MACHINE_VM` returns the Docker host IP address, to which you can append the port
### Stop the application
-To stop the application, run [docker-compose down](/compose/reference/down/) in
+To stop the application, run [docker-compose down](/compose/reference/down.md) in
your project directory. You can use the same terminal window in which you
started the database, or another one where you have access to a command prompt.
This is a clean way to stop the application.
@@ -270,5 +269,5 @@ host.
- [Getting Started](gettingstarted.md)
- [Get started with Django](django.md)
- [Get started with WordPress](wordpress.md)
-- [Command line reference](./reference/index.md)
-- [Compose file reference](compose-file.md)
+- [Command line reference](/compose/reference/index.md)
+- [Compose file reference](/compose/compose-file/index.md)
diff --git a/compose/reference/build.md b/compose/reference/build.md
index 8b229b788ecc..103c701c716b 100644
--- a/compose/reference/build.md
+++ b/compose/reference/build.md
@@ -22,8 +22,8 @@ Options:
Services are built once and then tagged, by default as `project_service`. For
example, `composetest_db`. If the Compose file specifies an
[image](/compose/compose-file/index.md#image) name, the image is
-tagged with that name, substituting any variables beforehand. See [variable
-substitution](/compose/compose-file/#variable-substitution).
+tagged with that name, substituting any variables beforehand. See
+[variable substitution](/compose/compose-file/index.md#variable-substitution).
If you change a service's Dockerfile or the contents of its
build directory, run `docker-compose build` to rebuild it.
diff --git a/compose/reference/envvars.md b/compose/reference/envvars.md
index e626f10f3bf4..58fb7f77a9a8 100644
--- a/compose/reference/envvars.md
+++ b/compose/reference/envvars.md
@@ -93,7 +93,7 @@ using this character as path separator.
## COMPOSE\_FORCE\_WINDOWS\_HOST
-If set, volume declarations using the [short syntax](../compose-file/index.md#short-syntax-3)
+If set, volume declarations using the [short syntax](/compose/compose-file/#short-syntax-3)
are parsed assuming the host path is a Windows path, even if Compose is
running on a UNIX-based system.
Supported values: `true` or `1` to enable, `false` or `0` to disable.
@@ -119,5 +119,5 @@ Supported: `true` or `1` to enable, `false` or `0` to disable.
- [User guide](/compose/index.md)
- [Installing Compose](/compose/install.md)
-- [Compose file reference](/compose/compose-file.md)
+- [Compose file reference](/compose/compose-file/index.md)
- [Environment file](/compose/env-file.md)
diff --git a/compose/reference/events.md b/compose/reference/events.md
index 6d8106fb497c..2ff3c04f273d 100644
--- a/compose/reference/events.md
+++ b/compose/reference/events.md
@@ -31,4 +31,4 @@ format:
}
```
-The events that can be received using this can be seen [here](/engine/reference/commandline/events/#object-types).
+The events that can be received using this can be seen [here](/engine/reference/commandline/events.md#object-types).
diff --git a/compose/reference/overview.md b/compose/reference/overview.md
index ff2a401c5156..9e2f3abcc129 100644
--- a/compose/reference/overview.md
+++ b/compose/reference/overview.md
@@ -135,9 +135,9 @@ a [COMPOSE_FILE environment variable](envvars.md#compose_file) in your shell or
in an environment file.
For an example of using the `-f` option at the command line, suppose you are
-running the [Compose Rails sample](/compose/rails/), and
+running the [Compose Rails sample](/compose/rails.md), and
have a `docker-compose.yml` file in a directory called `sandbox/rails`. You can
-use a command like [docker-compose pull](/compose/reference/pull.md) to get the
+use a command like [docker-compose pull](pull.md) to get the
postgres image for the `db` service from anywhere by using the `-f` flag as
follows: `docker-compose -f ~/sandbox/rails/docker-compose.yml pull db`
@@ -168,8 +168,7 @@ Status: Downloaded newer image for postgres:latest
Each configuration has a project name. If you supply a `-p` flag, you can
specify a project name. If you don't specify the flag, Compose uses the current
-directory name. See also the [COMPOSE_PROJECT_NAME environment variable](
-envvars.md#compose_project_name).
+directory name. See also the [COMPOSE_PROJECT_NAME environment variable](envvars.md#compose_project_name).
## Set up environment variables
@@ -177,11 +176,10 @@ You can set [environment variables](envvars.md) for various
`docker-compose` options, including the `-f` and `-p` flags.
For example, the [COMPOSE_FILE environment variable](envvars.md#compose_file)
-relates to the `-f` flag, and [COMPOSE_PROJECT_NAME environment
-variable](envvars.md#compose_project_name) relates to the `-p` flag.
+relates to the `-f` flag, and `COMPOSE_PROJECT_NAME`
+[environment variable](envvars.md#compose_project_name) relates to the `-p` flag.
-Also, you can set some of these variables in an [environment
-file](/compose/env-file.md).
+Also, you can set some of these variables in an [environment file](/compose/env-file.md).
## Where to go next
diff --git a/compose/release-notes.md b/compose/release-notes.md
index e2b670644c41..e9c8c42c9646 100644
--- a/compose/release-notes.md
+++ b/compose/release-notes.md
@@ -657,8 +657,8 @@ naming scheme accordingly before upgrading.
- Added support for `extra_hosts` in build configuration
-- Added support for the [long syntax](/compose/compose-file.md#long-syntax-3) for volume entries, as previously introduced in the 3.2 format.
- Using this syntax will create [mounts](/engine/admin/volumes/bind-mounts.md) instead of volumes.
+- Added support for the [long syntax](/compose/compose-file/index.md#long-syntax-3) for volume entries, as previously introduced in the 3.2 format.
+ Using this syntax will create [mounts](/storage/bind-mounts.md) instead of volumes.
#### Compose file version 2.1 and up
@@ -1986,8 +1986,8 @@ Several new configuration keys have been added to `docker-compose.yml`:
- `pid: host`, like `docker run --pid=host`, lets you reuse the same PID namespace as the host machine.
- `cpuset`, like `docker run --cpuset-cpus`, lets you specify which CPUs to allow execution in.
- `read_only`, like `docker run --read-only`, lets you mount a container's filesystem as read-only.
-- `security_opt`, like `docker run --security-opt`, lets you specify [security options](https://docs.docker.com/engine/reference/run/#security-configuration).
-- `log_driver`, like `docker run --log-driver`, lets you specify a [log driver](https://docs.docker.com/engine/reference/run/#logging-drivers-log-driver).
+- `security_opt`, like `docker run --security-opt`, lets you specify [security options](/engine/reference/run/#security-configuration).
+- `log_driver`, like `docker run --log-driver`, lets you specify a [log driver](/engine/reference/run/#logging-drivers-log-driver).
### Bug Fixes
@@ -2072,7 +2072,7 @@ The highlights:
This means the GitHub repository has moved to [https://github.com/docker/fig](https://github.com/docker/fig) and our IRC channel is now #docker-fig on Freenode.
- - Fig can be used with the [official Docker OS X installer](https://docs.docker.com/installation/mac/). Boot2Docker will mount the home directory from your host machine so volumes work as expected.
+ - Fig can be used with the [official Docker OS X installer](/docker-for-mac/install.md). Boot2Docker will mount the home directory from your host machine so volumes work as expected.
- Fig supports Docker 1.3.
diff --git a/compose/samples-for-compose.md b/compose/samples-for-compose.md
index 019fddeedea1..555ea5b23651 100644
--- a/compose/samples-for-compose.md
+++ b/compose/samples-for-compose.md
@@ -5,20 +5,20 @@ title: Sample apps with Compose
---
The following samples show the various aspects of how to work with Docker
-Compose. As a prerequisite, be sure to [install Docker
-Compose](/compose/install/) if you have not already done so.
+Compose. As a prerequisite, be sure to [install Docker Compose](/compose/install.md)
+if you have not already done so.
## Key concepts these samples cover
The samples should help you to:
- define services based on Docker images using
- [Compose files](/compose/compose-file.md) `docker-compose.yml` and
+ [Compose files](/compose/compose-file/index.md) `docker-compose.yml` and
`docker-stack.yml` files
- understand the relationship between `docker-compose.yml` and
- [Dockerfiles](/engine/reference/builder.md)
+ [Dockerfiles](/engine/reference/builder/)
- learn how to make calls to your application services from Compose files
-- learn how to deploy applications and services to a [swarm](/engine/swarm.md)
+- learn how to deploy applications and services to a [swarm](/engine/swarm/index.md)
## Samples tailored to demo Compose
@@ -31,4 +31,4 @@ Docker Compose to set up and run a Rails/PostgreSQL app.
- [Quickstart: Compose and WordPress](/compose/wordpress.md) - Shows how to
use Docker Compose to set up and run WordPress in an isolated environment
-with Docker containers.
\ No newline at end of file
+with Docker containers.
diff --git a/compose/startup-order.md b/compose/startup-order.md
index aef9acfcafee..c52d9011635b 100644
--- a/compose/startup-order.md
+++ b/compose/startup-order.md
@@ -6,7 +6,7 @@ notoc: true
---
You can control the order of service startup and shutdown with the
-[depends_on](compose-file.md#depends-on) option. Compose always starts and stops
+[depends_on](/compose/compose-file/index.md#depends_on) option. Compose always starts and stops
containers in dependency order, where dependencies are determined by
`depends_on`, `links`, `volumes_from`, and `network_mode: "service:..."`.
@@ -84,5 +84,5 @@ script:
- [Get started with Django](django.md)
- [Get started with Rails](rails.md)
- [Get started with WordPress](wordpress.md)
-- [Command line reference](./reference/index.md)
-- [Compose file reference](compose-file.md)
+- [Command line reference](/compose/reference/index.md)
+- [Compose file reference](/compose/compose-file/index.md)
diff --git a/compose/swarm.md b/compose/swarm.md
index d6686609afcc..e9fa52888738 100644
--- a/compose/swarm.md
+++ b/compose/swarm.md
@@ -10,8 +10,8 @@ Docker Compose and [Docker Swarm](/swarm/overview.md) aim to have full integrati
you can point a Compose app at a Swarm cluster and have it all just work as if
you were using a single Docker host.
-The actual extent of integration depends on which version of the [Compose file
-format](compose-file.md#versioning) you are using:
+The actual extent of integration depends on which version of the
+[Compose file format](/compose/compose-file/compose-versioning.md) you are using:
1. If you're using version 1 along with `links`, your app works, but Swarm
schedules all containers on one host, because links between containers
@@ -21,10 +21,10 @@ format](compose-file.md#versioning) you are using:
- subject to the [limitations](swarm.md#limitations) described below,
- - as long as the Swarm cluster is configured to use the [overlay driver](/engine/userguide/networking/#an-overlay-network-with-docker-engine-swarm-mode),
+ - as long as the Swarm cluster is configured to use the [overlay driver](/network/overlay.md),
or a custom driver which supports multi-host networking.
-Read [Get started with multi-host networking](/engine/userguide/networking/get-started-overlay/) to see how to
+Read [Get started with multi-host networking](/network/network-tutorial-overlay.md) to see how to
set up a Swarm cluster with [Docker Machine](/machine/overview.md) and the overlay driver. Once you've got it running, deploying your app to it should be as simple as:
$ eval "$(docker-machine env --swarm
)"
@@ -55,7 +55,7 @@ from `docker-compose.yml`:
### Multiple dependencies
If a service has multiple dependencies of the type which force co-scheduling
-(see [Automatic scheduling](swarm.md#automatic-scheduling) below), it's possible that
+(see [Automatic scheduling](#automatic-scheduling) below), it's possible that
Swarm schedules the dependencies on different nodes, making the dependent
service impossible to schedule. For example, here `foo` needs to be co-scheduled
with `bar` and `baz`:
@@ -75,7 +75,7 @@ The problem is that Swarm might first schedule `bar` and `baz` on different
nodes (since they're not dependent on one another), making it impossible to
pick an appropriate node for `foo`.
-To work around this, use [manual scheduling](swarm.md#manual-scheduling) to ensure that
+To work around this, use [manual scheduling](#manual-scheduling) to ensure that
all three services end up on the same node:
version: "2"
@@ -170,5 +170,5 @@ them.
environment:
- "affinity:image==redis"
-For the full set of available filters and expressions, see the [Swarm
-documentation](/swarm/scheduler/filter.md).
+For the full set of available filters and expressions, see the
+[Swarm documentation](/swarm/scheduler/filter.md).
diff --git a/compose/wordpress.md b/compose/wordpress.md
index 0e6714f7e1c5..a147c4d64926 100644
--- a/compose/wordpress.md
+++ b/compose/wordpress.md
@@ -7,7 +7,7 @@ title: "Quickstart: Compose and WordPress"
You can use Docker Compose to easily run WordPress in an isolated environment
built with Docker containers. This quick-start guide demonstrates how to use
Compose to set up and run WordPress. Before starting, make sure you have
-[Compose installed](/compose/install.md).
+[Compose installed](install.md).
### Define the project
@@ -67,7 +67,7 @@ Compose to set up and run WordPress. Before starting, make sure you have
> **Notes**:
>
* The docker volume `db_data` persists any updates made by WordPress
- to the database. [Learn more about docker volumes](/engine/admin/volumes/volumes/)
+ to the database. [Learn more about docker volumes](/storage/volumes.md)
>
* WordPress Multisite works only on ports `80` and `443`.
{: .note-vanilla}
@@ -76,7 +76,7 @@ Compose to set up and run WordPress. Before starting, make sure you have
Now, run `docker-compose up -d` from your project directory.
-This runs [`docker-compose up`](/compose/reference/up/) in detached mode, pulls
+This runs [`docker-compose up`](/compose/reference/up.md) in detached mode, pulls
the needed Docker images, and starts the wordpress and database containers, as shown in
the example below.
diff --git a/config/daemon/systemd.md b/config/daemon/systemd.md
index fcaeb24919a8..57f0469688c4 100644
--- a/config/daemon/systemd.md
+++ b/config/daemon/systemd.md
@@ -34,14 +34,14 @@ do not have `systemctl`, use the `service` command.
### Start automatically at system boot
If you want Docker to start at boot, see
-[Configure Docker to start on boot](/install/linux/linux-postinstall.md/#configure-docker-to-start-on-boot).
+[Configure Docker to start on boot](/install/linux/linux-postinstall.md#configure-docker-to-start-on-boot).
## Custom Docker daemon options
There are a number of ways to configure the daemon flags and environment variables
for your Docker daemon. The recommended way is to use the platform-independent
`daemon.json` file, which is located in `/etc/docker/` on Linux by default. See
-[Daemon configuration file](/engine/reference/commandline/dockerd.md/#daemon-configuration-file).
+[Daemon configuration file](/engine/reference/commandline/dockerd.md#daemon-configuration-file).
You can configure nearly all daemon configuration options using `daemon.json`. The following
example configures two options. One thing you cannot configure using `daemon.json` mechanism is
@@ -161,6 +161,5 @@ See
When installing the binary without a package, you may want
to integrate Docker with systemd. For this, install the two unit files
-(`service` and `socket`) from [the github
-repository](https://github.com/moby/moby/tree/master/contrib/init/systemd)
+(`service` and `socket`) from [the github repository](https://github.com/moby/moby/tree/master/contrib/init/systemd)
to `/etc/systemd/system`.
diff --git a/datacenter/dtr/2.0/configure/config-general.md b/datacenter/dtr/2.0/configure/config-general.md
index 7f650a076ab1..95914857c850 100644
--- a/datacenter/dtr/2.0/configure/config-general.md
+++ b/datacenter/dtr/2.0/configure/config-general.md
@@ -37,9 +37,9 @@ which image tags were signed by viewing the appropriate repositories through
Trusted Registry's web interface.
To configure your Docker client to push signed images to Docker
-Trusted Registry refer to the CLI Reference's [Environment Variables
-Section](/engine/reference/commandline/cli.md#environment-variables) and
-[Notary Section](/engine/reference/commandline/cli.md#notary).
+Trusted Registry refer to the CLI Reference's
+[Environment Variables Section](/engine/reference/commandline/cli.md#environment-variables)
+and [Notary Section](/engine/reference/commandline/cli.md#notary).
This requires you to set the `DOCKER_CONTENT_TRUST` variable and configure
your system to trust Docker Trusted Registry's TLS certificate if it doesn't
diff --git a/datacenter/dtr/2.0/configure/config-security.md b/datacenter/dtr/2.0/configure/config-security.md
index a21e77b49e2b..5997936d4e28 100644
--- a/datacenter/dtr/2.0/configure/config-security.md
+++ b/datacenter/dtr/2.0/configure/config-security.md
@@ -22,8 +22,7 @@ options for setting this up:
2. You can generate your own certificates using a public service or your enterprise's infrastructure. See the [Generating SSL certificates](config-security.md#generating-ssl-certificates) section for the options available.
If you are generating your own certificates, you can install them by following
-the instructions for [Adding your own registry certificates to Docker Trusted
-Registry](config-security.md#adding-your-own-registry-certificates-to-dtr).
+the instructions for [Adding your own registry certificates to Docker Trusted Registry](config-security.md#adding-your-own-registry-certificates-to-dtr).
However, if you choose to use the Trusted Registry-generated certificates, or
the certificates you generate yourself are not trusted by your client Docker
diff --git a/datacenter/dtr/2.0/configure/config-storage.md b/datacenter/dtr/2.0/configure/config-storage.md
index 480f48a57433..029b9caf0547 100644
--- a/datacenter/dtr/2.0/configure/config-storage.md
+++ b/datacenter/dtr/2.0/configure/config-storage.md
@@ -178,8 +178,8 @@ YAML file (which is discussed further in this document.)
See the [Docker Registry storage driver](/registry/storage-drivers/)
documentation for the full options specific to each driver. Storage drivers can
-be customized through the [Docker Registry storage driver
-API](/registry/storage-drivers/index.md#storage-driver-api).
+be customized through the
+[Docker Registry storage driver API](/registry/storage-drivers/index.md#storage-driver-api).
### Filesystem settings
diff --git a/datacenter/dtr/2.0/install/upgrade/index.md b/datacenter/dtr/2.0/install/upgrade/index.md
index fec028a1a07f..befc488591ab 100644
--- a/datacenter/dtr/2.0/install/upgrade/index.md
+++ b/datacenter/dtr/2.0/install/upgrade/index.md
@@ -17,8 +17,8 @@ business peak hours to ensure the impact on your business is close to none.
## Step 1. Upgrade DTR to 2.0
-Make sure you're running DTR 2.0. If that's not the case, [upgrade your
-installation to the 2.0 version](upgrade-major.md).
+Make sure you're running DTR 2.0. If that's not the case,
+[upgrade your installation to the 2.0 version](upgrade-major.md).
## Step 2. Upgrade DTR
diff --git a/datacenter/dtr/2.1/guides/configure/configure-storage.md b/datacenter/dtr/2.1/guides/configure/configure-storage.md
index 2e12727d6bdd..6e9d0b76a19f 100644
--- a/datacenter/dtr/2.1/guides/configure/configure-storage.md
+++ b/datacenter/dtr/2.1/guides/configure/configure-storage.md
@@ -157,8 +157,8 @@ YAML file (which is discussed further in this document.)
See the [Docker Registry storage driver](/registry/storage-drivers/)
documentation for the full options specific to each driver. Storage drivers can
-be customized through the [Docker Registry storage driver
-API](/registry/storage-drivers/index.md#storage-driver-api).
+be customized through the
+[Docker Registry storage driver API](/registry/storage-drivers/index.md#storage-driver-api).
### Filesystem settings
diff --git a/datacenter/dtr/2.1/guides/configure/index.md b/datacenter/dtr/2.1/guides/configure/index.md
index 0322fa33415e..a1da215e757e 100644
--- a/datacenter/dtr/2.1/guides/configure/index.md
+++ b/datacenter/dtr/2.1/guides/configure/index.md
@@ -37,8 +37,8 @@ Finally, click **Save** for the changes to take effect.
If you're using certificates issued by a globally trusted certificate authority,
any web browser or client tool should now trust DTR. If you're using an internal
-certificate authority, you need to [configure your system to trust that
-certificate authority](../repos-and-images/index.md).
+certificate authority, you need to
+[configure your system to trust that certificate authority](../repos-and-images/index.md).
## Where to go next
diff --git a/datacenter/dtr/2.1/guides/install/upgrade.md b/datacenter/dtr/2.1/guides/install/upgrade.md
index 45cd0e02c181..cbd3b22e93c9 100644
--- a/datacenter/dtr/2.1/guides/install/upgrade.md
+++ b/datacenter/dtr/2.1/guides/install/upgrade.md
@@ -21,8 +21,8 @@ business peak hours to ensure the impact on your business is close to none.
## Step 1. Upgrade DTR to 2.0
-Make sure you're running DTR 2.0. If that's not the case, [upgrade your
-installation to the 2.0 version](/datacenter/dtr/2.0/install/upgrade/upgrade-major.md).
+Make sure you're running DTR 2.0. If that's not the case,
+[upgrade your installation to the 2.0 version](/datacenter/dtr/2.0/install/upgrade/upgrade-major.md).
## Step 2. Upgrade DTR
diff --git a/datacenter/dtr/2.2/guides/index.md b/datacenter/dtr/2.2/guides/index.md
index d4cc9d8df9af..897e49ae5a45 100644
--- a/datacenter/dtr/2.2/guides/index.md
+++ b/datacenter/dtr/2.2/guides/index.md
@@ -48,10 +48,10 @@ DTR has a built in security scanner that can be used to discover what versions
of software are used in your images. It scans each layer and aggregates the
results to give you a complete picture of what you are shipping as a part of
your stack. Most importantly, it co-relates this information with a
-vulnerability database that is kept up to date through [periodic
-updates](admin/configure/set-up-vulnerability-scans.md). This
-gives you [unprecedented insight into your exposure to known security
-threats](user/manage-images/scan-images-for-vulnerabilities.md).
+vulnerability database that is kept up to date through
+[periodic updates](admin/configure/set-up-vulnerability-scans.md). This
+gives you
+[unprecedented insight into your exposure to known security threats](user/manage-images/scan-images-for-vulnerabilities.md).
## Image signing
diff --git a/datacenter/dtr/2.2/guides/user/manage-images/scan-images-for-vulnerabilities.md b/datacenter/dtr/2.2/guides/user/manage-images/scan-images-for-vulnerabilities.md
index fa4913f7a09f..0ffbaffa015e 100644
--- a/datacenter/dtr/2.2/guides/user/manage-images/scan-images-for-vulnerabilities.md
+++ b/datacenter/dtr/2.2/guides/user/manage-images/scan-images-for-vulnerabilities.md
@@ -13,8 +13,9 @@ Scanning. The results of these scans are reported for each image tag.
Docker Security Scanning is available as an add-on to Docker Trusted Registry,
and an administrator configures it for your DTR instance. If you do not see
security scan results available on your repositories, your organization may not
-have purchased the Security Scanning feature or it may be disabled. See [Set up
-Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md) for more details.
+have purchased the Security Scanning feature or it may be disabled. See
+[Set up Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md)
+for more details.
> **Tip**: Only users with write access to a repository can manually start a
scan. Users with read-only access can view the scan results, but cannot start
diff --git a/datacenter/dtr/2.2/guides/user/manage-images/sign-images/delegate-image-signing.md b/datacenter/dtr/2.2/guides/user/manage-images/sign-images/delegate-image-signing.md
index 2a3564944859..275cbd08ac56 100644
--- a/datacenter/dtr/2.2/guides/user/manage-images/sign-images/delegate-image-signing.md
+++ b/datacenter/dtr/2.2/guides/user/manage-images/sign-images/delegate-image-signing.md
@@ -63,8 +63,8 @@ notary delegation add --publish \
--all-paths
```
-Now members from the QA team just need to [configure their Notary CLI client
-with UCP private keys](../../access-dtr/configure-your-notary-client.md)
+Now members from the QA team just need to
+[configure their Notary CLI client with UCP private keys](../../access-dtr/configure-your-notary-client.md)
before [pushing and signing images](index.md) into the `dev/nginx` repository.
## Where to go next
diff --git a/datacenter/dtr/2.3/guides/index.md b/datacenter/dtr/2.3/guides/index.md
index 4ad0f9cb3457..a70b3da0a07a 100644
--- a/datacenter/dtr/2.3/guides/index.md
+++ b/datacenter/dtr/2.3/guides/index.md
@@ -48,10 +48,10 @@ DTR has a built in security scanner that can be used to discover what versions
of software are used in your images. It scans each layer and aggregates the
results to give you a complete picture of what you are shipping as a part of
your stack. Most importantly, it co-relates this information with a
-vulnerability database that is kept up to date through [periodic
-updates](admin/configure/set-up-vulnerability-scans.md). This
-gives you [unprecedented insight into your exposure to known security
-threats](user/manage-images/scan-images-for-vulnerabilities.md).
+vulnerability database that is kept up to date through
+[periodic updates](admin/configure/set-up-vulnerability-scans.md). This
+gives you
+[unprecedented insight into your exposure to known security threats](user/manage-images/scan-images-for-vulnerabilities.md).
## Image signing
diff --git a/datacenter/dtr/2.3/guides/user/create-and-manage-webhooks.md b/datacenter/dtr/2.3/guides/user/create-and-manage-webhooks.md
index 89d30efbd60c..eef5112a6ec8 100644
--- a/datacenter/dtr/2.3/guides/user/create-and-manage-webhooks.md
+++ b/datacenter/dtr/2.3/guides/user/create-and-manage-webhooks.md
@@ -45,4 +45,4 @@ the event is triggered.
## Where to go next
-* [Create deployment policies](create-deployment-policies.md)
+* [Create deployment policies](create-promotion-policies.md)
diff --git a/datacenter/dtr/2.3/guides/user/manage-images/scan-images-for-vulnerabilities.md b/datacenter/dtr/2.3/guides/user/manage-images/scan-images-for-vulnerabilities.md
index 014845508451..586ce5629538 100644
--- a/datacenter/dtr/2.3/guides/user/manage-images/scan-images-for-vulnerabilities.md
+++ b/datacenter/dtr/2.3/guides/user/manage-images/scan-images-for-vulnerabilities.md
@@ -13,8 +13,9 @@ Scanning. The results of these scans are reported for each image tag.
Docker Security Scanning is available as an add-on to Docker Trusted Registry,
and an administrator configures it for your DTR instance. If you do not see
security scan results available on your repositories, your organization may not
-have purchased the Security Scanning feature or it may be disabled. See [Set up
-Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md) for more details.
+have purchased the Security Scanning feature or it may be disabled. See
+[Set up Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md)
+for more details.
> **Tip**: Only users with write access to a repository can manually start a
scan. Users with read-only access can view the scan results, but cannot start
@@ -39,8 +40,9 @@ discovered vulnerabilities.
DTR scans both Linux and Windows images, but by default Docker doesn't push
foreign image layers for Windows images so DTR can't scan them. If
-you want DTR to scan your Windows images, [configure Docker to always push image
-layers](pull-and-push-images.md), and it will scan the non-foreign layers.
+you want DTR to scan your Windows images,
+[configure Docker to always push image layers](pull-and-push-images.md), and it
+will scan the non-foreign layers.
## Security scan on push
diff --git a/datacenter/dtr/2.3/guides/user/manage-images/sign-images/delegate-image-signing.md b/datacenter/dtr/2.3/guides/user/manage-images/sign-images/delegate-image-signing.md
index 2c124236d8d8..af801bfe092a 100644
--- a/datacenter/dtr/2.3/guides/user/manage-images/sign-images/delegate-image-signing.md
+++ b/datacenter/dtr/2.3/guides/user/manage-images/sign-images/delegate-image-signing.md
@@ -63,8 +63,8 @@ notary delegation add --publish \
--all-paths
```
-Now members from the QA team just need to [configure their Notary CLI client
-with UCP private keys](../../access-dtr/configure-your-notary-client.md)
+Now members from the QA team just need to
+[configure their Notary CLI client with UCP private keys](../../access-dtr/configure-your-notary-client.md)
before [pushing and signing images](index.md) into the `dev/nginx` repository.
## Where to go next
diff --git a/datacenter/dtr/2.4/guides/user/manage-images/scan-images-for-vulnerabilities.md b/datacenter/dtr/2.4/guides/user/manage-images/scan-images-for-vulnerabilities.md
index 22a079b99f86..ed36badcadb4 100644
--- a/datacenter/dtr/2.4/guides/user/manage-images/scan-images-for-vulnerabilities.md
+++ b/datacenter/dtr/2.4/guides/user/manage-images/scan-images-for-vulnerabilities.md
@@ -13,8 +13,9 @@ Scanning. The results of these scans are reported for each image tag.
Docker Security Scanning is available as an add-on to Docker Trusted Registry,
and an administrator configures it for your DTR instance. If you do not see
security scan results available on your repositories, your organization may not
-have purchased the Security Scanning feature or it may be disabled. See [Set up
-Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md) for more details.
+have purchased the Security Scanning feature or it may be disabled. See
+[Set up Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md)
+for more details.
> **Tip**: Only users with write access to a repository can manually start a
scan. Users with read-only access can view the scan results, but cannot start
@@ -39,8 +40,9 @@ discovered vulnerabilities.
DTR scans both Linux and Windows images, but but by default Docker doesn't push
foreign image layers for Windows images so DTR can't scan them. If
-you want DTR to scan your Windows images, [configure Docker to always push image
-layers](pull-and-push-images.md), and it will scan the non-foreign layers.
+you want DTR to scan your Windows images,
+[configure Docker to always push image layers](pull-and-push-images.md), and it
+will scan the non-foreign layers.
## Security scan on push
diff --git a/datacenter/dtr/2.4/guides/user/manage-images/sign-images/delegate-image-signing.md b/datacenter/dtr/2.4/guides/user/manage-images/sign-images/delegate-image-signing.md
index 7818fd360ee8..925037cd31de 100644
--- a/datacenter/dtr/2.4/guides/user/manage-images/sign-images/delegate-image-signing.md
+++ b/datacenter/dtr/2.4/guides/user/manage-images/sign-images/delegate-image-signing.md
@@ -63,8 +63,8 @@ notary delegation add --publish \
--all-paths
```
-Now members from the QA team just need to [configure their Notary CLI client
-with UCP private keys](../../access-dtr/configure-your-notary-client.md)
+Now members from the QA team just need to
+[configure their Notary CLI client with UCP private keys](../../access-dtr/configure-your-notary-client.md)
to [push and sign images](index.md) into the `dev/nginx` repository.
## Where to go next
diff --git a/datacenter/dtr/2.5/guides/index.md b/datacenter/dtr/2.5/guides/index.md
index 3dbe720887bc..e95668a1a082 100644
--- a/datacenter/dtr/2.5/guides/index.md
+++ b/datacenter/dtr/2.5/guides/index.md
@@ -52,10 +52,9 @@ DTR has a built-in security scanner that can be used to discover what versions
of software are used in your images. It scans each layer and aggregates the
results to give you a complete picture of what you are shipping as a part of
your stack. Most importantly, it correlates this information with a
-vulnerability database that is kept up to date through [periodic
-updates](admin/configure/set-up-vulnerability-scans.md). This
-gives you [unprecedented insight into your exposure to known security
-threats](user/manage-images/scan-images-for-vulnerabilities.md).
+vulnerability database that is kept up to date through
+[periodic updates](admin/configure/set-up-vulnerability-scans.md). This
+gives you [unprecedented insight into your exposure to known security threats](user/manage-images/scan-images-for-vulnerabilities.md).
## Image signing
diff --git a/datacenter/dtr/2.5/guides/user/manage-images/scan-images-for-vulnerabilities.md b/datacenter/dtr/2.5/guides/user/manage-images/scan-images-for-vulnerabilities.md
index 22a079b99f86..ed36badcadb4 100644
--- a/datacenter/dtr/2.5/guides/user/manage-images/scan-images-for-vulnerabilities.md
+++ b/datacenter/dtr/2.5/guides/user/manage-images/scan-images-for-vulnerabilities.md
@@ -13,8 +13,9 @@ Scanning. The results of these scans are reported for each image tag.
Docker Security Scanning is available as an add-on to Docker Trusted Registry,
and an administrator configures it for your DTR instance. If you do not see
security scan results available on your repositories, your organization may not
-have purchased the Security Scanning feature or it may be disabled. See [Set up
-Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md) for more details.
+have purchased the Security Scanning feature or it may be disabled. See
+[Set up Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md)
+for more details.
> **Tip**: Only users with write access to a repository can manually start a
scan. Users with read-only access can view the scan results, but cannot start
@@ -39,8 +40,9 @@ discovered vulnerabilities.
DTR scans both Linux and Windows images, but but by default Docker doesn't push
foreign image layers for Windows images so DTR can't scan them. If
-you want DTR to scan your Windows images, [configure Docker to always push image
-layers](pull-and-push-images.md), and it will scan the non-foreign layers.
+you want DTR to scan your Windows images,
+[configure Docker to always push image layers](pull-and-push-images.md), and it
+will scan the non-foreign layers.
## Security scan on push
diff --git a/datacenter/dtr/2.5/guides/user/manage-images/sign-images/delegate-image-signing.md b/datacenter/dtr/2.5/guides/user/manage-images/sign-images/delegate-image-signing.md
index 7818fd360ee8..925037cd31de 100644
--- a/datacenter/dtr/2.5/guides/user/manage-images/sign-images/delegate-image-signing.md
+++ b/datacenter/dtr/2.5/guides/user/manage-images/sign-images/delegate-image-signing.md
@@ -63,8 +63,8 @@ notary delegation add --publish \
--all-paths
```
-Now members from the QA team just need to [configure their Notary CLI client
-with UCP private keys](../../access-dtr/configure-your-notary-client.md)
+Now members from the QA team just need to
+[configure their Notary CLI client with UCP private keys](../../access-dtr/configure-your-notary-client.md)
to [push and sign images](index.md) into the `dev/nginx` repository.
## Where to go next
diff --git a/datacenter/dtr/2.6/guides/admin/manage-webhooks/use-the-api.md b/datacenter/dtr/2.6/guides/admin/manage-webhooks/use-the-api.md
index f710fc1c078a..1565574e4e62 100644
--- a/datacenter/dtr/2.6/guides/admin/manage-webhooks/use-the-api.md
+++ b/datacenter/dtr/2.6/guides/admin/manage-webhooks/use-the-api.md
@@ -6,7 +6,7 @@ keywords: dtr, webhooks, api, registry
## Prerequisite
-See [Webhook types](/ee/dtr/admin/manage-webhooks/index.md/#webhook-types) for a list of events you can trigger notifications for via the API.
+See [Webhook types](/ee/dtr/admin/manage-webhooks/index.md#webhook-types) for a list of events you can trigger notifications for via the API.
## API Base URL
diff --git a/datacenter/dtr/2.6/guides/admin/manage-webhooks/use-the-web-ui.md b/datacenter/dtr/2.6/guides/admin/manage-webhooks/use-the-web-ui.md
index b3c8dfe26f67..93cbe166edaf 100644
--- a/datacenter/dtr/2.6/guides/admin/manage-webhooks/use-the-web-ui.md
+++ b/datacenter/dtr/2.6/guides/admin/manage-webhooks/use-the-web-ui.md
@@ -7,7 +7,7 @@ keywords: dtr, webhooks, ui, web interface, registry
## Prerequisites
- You must have admin privileges to the repository in order to create a webhook.
-- See [Webhook types](/ee/dtr/admin/manage-webhooks/index.md/#webhook-types) for a list of events you can trigger notifications for using the web interface.
+- See [Webhook types](/ee/dtr/admin/manage-webhooks/index.md#webhook-types) for a list of events you can trigger notifications for using the web interface.
## Create a webhook for your repository
diff --git a/datacenter/dtr/2.6/guides/index.md b/datacenter/dtr/2.6/guides/index.md
index 9fd3320ecff8..4480349beafe 100644
--- a/datacenter/dtr/2.6/guides/index.md
+++ b/datacenter/dtr/2.6/guides/index.md
@@ -47,10 +47,10 @@ DTR has a built-in security scanner that can be used to discover what versions
of software are used in your images. It scans each layer and aggregates the
results to give you a complete picture of what you are shipping as a part of
your stack. Most importantly, it correlates this information with a
-vulnerability database that is kept up to date through [periodic
-updates](admin/configure/set-up-vulnerability-scans.md). This
-gives you [unprecedented insight into your exposure to known security
-threats](user/manage-images/scan-images-for-vulnerabilities.md).
+vulnerability database that is kept up to date through
+[periodic updates](admin/configure/set-up-vulnerability-scans.md). This
+gives you
+[unprecedented insight into your exposure to known security threats](user/manage-images/scan-images-for-vulnerabilities.md).
## Image signing
diff --git a/datacenter/dtr/2.6/guides/user/manage-images/scan-images-for-vulnerabilities.md b/datacenter/dtr/2.6/guides/user/manage-images/scan-images-for-vulnerabilities.md
index ce01f5ee3929..f0d70aa3e6e8 100644
--- a/datacenter/dtr/2.6/guides/user/manage-images/scan-images-for-vulnerabilities.md
+++ b/datacenter/dtr/2.6/guides/user/manage-images/scan-images-for-vulnerabilities.md
@@ -13,8 +13,9 @@ Scanning. The results of these scans are reported for each image tag in a reposi
Docker Security Scanning is available as an add-on to Docker Trusted Registry,
and an administrator configures it for your DTR instance. If you do not see
security scan results available on your repositories, your organization may not
-have purchased the Security Scanning feature or it may be disabled. See [Set up
-Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md) for more details.
+have purchased the Security Scanning feature or it may be disabled. See
+[Set up Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md)
+for more details.
> **Tip**: Only users with write access to a repository can manually start a
scan. Users with read-only access can view the scan results, but cannot start
@@ -39,8 +40,9 @@ discovered vulnerabilities.
DTR scans both Linux and Windows images, but by default Docker doesn't push
foreign image layers for Windows images so DTR won't be able to scan them. If
-you want DTR to scan your Windows images, [configure Docker to always push image
-layers](pull-and-push-images.md), and it will scan the non-foreign layers.
+you want DTR to scan your Windows images,
+[configure Docker to always push image layers](pull-and-push-images.md), and it
+will scan the non-foreign layers.
## Security scan on push
diff --git a/datacenter/dtr/2.6/guides/user/manage-images/sign-images/trust-with-remote-ucp.md b/datacenter/dtr/2.6/guides/user/manage-images/sign-images/trust-with-remote-ucp.md
index 011cdb3535fa..47c8d6f841e0 100644
--- a/datacenter/dtr/2.6/guides/user/manage-images/sign-images/trust-with-remote-ucp.md
+++ b/datacenter/dtr/2.6/guides/user/manage-images/sign-images/trust-with-remote-ucp.md
@@ -8,8 +8,9 @@ redirect_from:
For more advanced deployments, you may want to share one Docker Trusted Registry
across multiple Universal Control Planes. However, customers wanting to adopt
-this model alongside the [Only Run Signed
-Images](/ee/ucp/admin/configure/run-only-the-images-you-trust.md) UCP feature, run into problems as each UCP operates an independent set of users.
+this model alongside the
+[Only Run Signed Images](/ee/ucp/admin/configure/run-only-the-images-you-trust.md)
+UCP feature, run into problems as each UCP operates an independent set of users.
Docker Content Trust (DCT) gets around this problem, since users from
a remote UCP are able to sign images in the central DTR and still apply runtime
@@ -26,9 +27,8 @@ cluster separately.
> Before attempting this guide, familiarize yourself with [Docker Content
> Trust](engine/security/trust/content_trust/#signing-images-with-docker-content-trust)
-> and [Only Run Signed
-> Images](/ee/ucp/admin/configure/run-only-the-images-you-trust.md) on a
-> single UCP. Many of the concepts within this guide may be new without that
+> and [Only Run Signed Images](/ee/ucp/admin/configure/run-only-the-images-you-trust.md)
+> on a single UCP. Many of the concepts within this guide may be new without that
> background.
## Prerequisites
diff --git a/datacenter/ucp/2.1/guides/admin/backups-and-disaster-recovery.md b/datacenter/ucp/2.1/guides/admin/backups-and-disaster-recovery.md
index 751a77904da3..3621e267b881 100644
--- a/datacenter/ucp/2.1/guides/admin/backups-and-disaster-recovery.md
+++ b/datacenter/ucp/2.1/guides/admin/backups-and-disaster-recovery.md
@@ -150,8 +150,8 @@ manager failures, the system should be configured for [high availability](config
4. Perform a restore operation on the recovered swarm manager node.
5. Log in to UCP and browse to the nodes page, or use the CLI `docker node ls`
command.
-6. If any nodes are listed as `down`, you need to manually [remove these
- nodes](configure/scale-your-cluster.md) from the cluster and then re-join
+6. If any nodes are listed as `down`, you need to manually
+ [remove these nodes](configure/scale-your-cluster.md) from the cluster and then re-join
them using a `docker swarm join` operation with the cluster's new join-token.
## Where to go next
diff --git a/datacenter/ucp/2.1/guides/admin/install/uninstall.md b/datacenter/ucp/2.1/guides/admin/install/uninstall.md
index ac31808646f4..05df85263d87 100644
--- a/datacenter/ucp/2.1/guides/admin/install/uninstall.md
+++ b/datacenter/ucp/2.1/guides/admin/install/uninstall.md
@@ -31,9 +31,9 @@ $ docker run --rm -it \
This runs the uninstall command in interactive mode, so that you are prompted
for any necessary configuration values. Running this command on a single manager
-node will uninstall UCP from the entire cluster. [Check the reference
-documentation](../../../reference/cli/index.md) to learn the options available
-in the `uninstall-ucp` command.
+node will uninstall UCP from the entire cluster.
+[Check the reference documentation](../../../reference/cli/index.md) to learn the
+options available in the `uninstall-ucp` command.
## Swarm mode CA
diff --git a/datacenter/ucp/2.1/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md b/datacenter/ucp/2.1/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
index 15e8576687dc..e473abc0e72f 100644
--- a/datacenter/ucp/2.1/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
+++ b/datacenter/ucp/2.1/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
@@ -8,8 +8,8 @@ There are several cases in the lifecycle of UCP when a node is actively
transitioning from one state to another, such as when a new node is joining the
cluster or during node promotion and demotion. In these cases, the current step
of the transition will be reported by UCP as a node message. You can view the
-state of each individual node by following the same steps required to [monitor
-cluster status](index.md).
+state of each individual node by following the same steps required to
+[monitor cluster status](index.md).
## UCP node states
diff --git a/datacenter/ucp/2.2/guides/admin/backups-and-disaster-recovery.md b/datacenter/ucp/2.2/guides/admin/backups-and-disaster-recovery.md
index 009fb92e0806..f6a24491f991 100644
--- a/datacenter/ucp/2.2/guides/admin/backups-and-disaster-recovery.md
+++ b/datacenter/ucp/2.2/guides/admin/backups-and-disaster-recovery.md
@@ -189,8 +189,8 @@ manager failures, the system should be configured for
4. Perform a restore operation on the recovered swarm manager node.
5. Log in to UCP and browse to the nodes page, or use the CLI `docker node ls`
command.
-6. If any nodes are listed as `down`, you need to manually [remove these
- nodes](../configure/scale-your-cluster.md) from the swarm and then re-join
+6. If any nodes are listed as `down`, you need to manually
+ [remove these nodes](configure/scale-your-cluster.md) from the swarm and then re-join
them using a `docker swarm join` operation with the swarm's new join-token.
## Where to go next
diff --git a/datacenter/ucp/2.2/guides/admin/configure/ucp-configuration-file.md b/datacenter/ucp/2.2/guides/admin/configure/ucp-configuration-file.md
index 14857deb4dc9..a65079be116c 100644
--- a/datacenter/ucp/2.2/guides/admin/configure/ucp-configuration-file.md
+++ b/datacenter/ucp/2.2/guides/admin/configure/ucp-configuration-file.md
@@ -215,7 +215,7 @@ Configures the swarm cluster that the current UCP instance manages.
The `dns`, `dns_opt`, and `dns_search` settings configure the DNS settings for UCP
components. Assigning these values overrides the settings in a container's
`/etc/resolv.conf` file. For more info, see
-[Configure container DNS](/engine/userguide/networking/default_network/configure-dns/).
+[Configure container DNS](/config/containers/container-networking.md#dns-services).
| Parameter | Required | Description |
|:----------------------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
diff --git a/datacenter/ucp/2.2/guides/admin/install/uninstall.md b/datacenter/ucp/2.2/guides/admin/install/uninstall.md
index 3a42fd2eb9c4..87ca8b8c843a 100644
--- a/datacenter/ucp/2.2/guides/admin/install/uninstall.md
+++ b/datacenter/ucp/2.2/guides/admin/install/uninstall.md
@@ -31,9 +31,9 @@ $ docker container run --rm -it \
This runs the uninstall command in interactive mode, so that you are prompted
for any necessary configuration values. Running this command on a single manager
-node will uninstall UCP from the entire cluster. [Check the reference
-documentation](../../../reference/cli/index.md) to learn the options available
-in the `uninstall-ucp` command.
+node will uninstall UCP from the entire cluster.
+[Check the reference documentation](../../../reference/cli/index.md) to learn the
+options available in the `uninstall-ucp` command.
## Swarm mode CA
diff --git a/datacenter/ucp/2.2/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md b/datacenter/ucp/2.2/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
index f71f0913a54b..d601a56246d0 100644
--- a/datacenter/ucp/2.2/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
+++ b/datacenter/ucp/2.2/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
@@ -8,8 +8,8 @@ There are several cases in the lifecycle of UCP when a node is actively
transitioning from one state to another, such as when a new node is joining the
swarm or during node promotion and demotion. In these cases, the current step
of the transition will be reported by UCP as a node message. You can view the
-state of each individual node by following the same steps required to [monitor
-cluster status](index.md).
+state of each individual node by following the same steps required to
+[monitor cluster status](index.md).
## UCP node states
diff --git a/datacenter/ucp/3.0/guides/admin/backups-and-disaster-recovery.md b/datacenter/ucp/3.0/guides/admin/backups-and-disaster-recovery.md
index 688f6d6b9808..a971afa5b90a 100644
--- a/datacenter/ucp/3.0/guides/admin/backups-and-disaster-recovery.md
+++ b/datacenter/ucp/3.0/guides/admin/backups-and-disaster-recovery.md
@@ -200,9 +200,10 @@ manager failures, the system should be configured for
4. Perform a restore operation on the recovered swarm manager node.
5. Log in to UCP and browse to the nodes page, or use the CLI `docker node ls`
command.
-6. If any nodes are listed as `down`, you need to manually [remove these
- nodes](../configure/scale-your-cluster.md) from the swarm and then re-join
- them using a `docker swarm join` operation with the swarm's new join-token.
+6. If any nodes are listed as `down`, you need to manually
+ [remove these nodes](../configure/scale-your-cluster.md) from the swarm and
+ then re-join them using a `docker swarm join` operation with the swarm's new
+ join-token.
## Where to go next
diff --git a/datacenter/ucp/3.0/guides/admin/configure/ucp-configuration-file.md b/datacenter/ucp/3.0/guides/admin/configure/ucp-configuration-file.md
index 14857deb4dc9..a65079be116c 100644
--- a/datacenter/ucp/3.0/guides/admin/configure/ucp-configuration-file.md
+++ b/datacenter/ucp/3.0/guides/admin/configure/ucp-configuration-file.md
@@ -215,7 +215,7 @@ Configures the swarm cluster that the current UCP instance manages.
The `dns`, `dns_opt`, and `dns_search` settings configure the DNS settings for UCP
components. Assigning these values overrides the settings in a container's
`/etc/resolv.conf` file. For more info, see
-[Configure container DNS](/engine/userguide/networking/default_network/configure-dns/).
+[Configure container DNS](/config/containers/container-networking.md#dns-services).
| Parameter | Required | Description |
|:----------------------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
diff --git a/datacenter/ucp/3.0/guides/admin/install/uninstall.md b/datacenter/ucp/3.0/guides/admin/install/uninstall.md
index 92bbb1d9315e..189c71f1d019 100644
--- a/datacenter/ucp/3.0/guides/admin/install/uninstall.md
+++ b/datacenter/ucp/3.0/guides/admin/install/uninstall.md
@@ -31,9 +31,9 @@ $ docker container run --rm -it \
This runs the uninstall command in interactive mode, so that you are prompted
for any necessary configuration values. Running this command on a single manager
-node will uninstall UCP from the entire cluster. [Check the reference
-documentation](../../../reference/cli/index.md) to learn the options available
-in the `uninstall-ucp` command.
+node will uninstall UCP from the entire cluster.
+[Check the reference documentation](../../../reference/cli/index.md) to learn
+the options available in the `uninstall-ucp` command.
## Swarm mode CA
diff --git a/datacenter/ucp/3.0/guides/admin/install/upgrade.md b/datacenter/ucp/3.0/guides/admin/install/upgrade.md
index a01974bb9796..8899a9a0de80 100644
--- a/datacenter/ucp/3.0/guides/admin/install/upgrade.md
+++ b/datacenter/ucp/3.0/guides/admin/install/upgrade.md
@@ -23,7 +23,7 @@ Don't make changes to UCP configurations while you're upgrading.
This can lead to misconfigurations that are difficult to troubleshoot.
> **Note**: If you are upgrading a cluster to UCP 3.0.2 or higher on Microsoft
-> Azure then please ensure all of the Azure [prerequisities](install-on-azure.md/#azure-prerequisites)
+> Azure then please ensure all of the Azure [prerequisities](install-on-azure.md#azure-prerequisites)
> are met.
## Back up your swarm
diff --git a/datacenter/ucp/3.0/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md b/datacenter/ucp/3.0/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
index f71f0913a54b..d601a56246d0 100644
--- a/datacenter/ucp/3.0/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
+++ b/datacenter/ucp/3.0/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
@@ -8,8 +8,8 @@ There are several cases in the lifecycle of UCP when a node is actively
transitioning from one state to another, such as when a new node is joining the
swarm or during node promotion and demotion. In these cases, the current step
of the transition will be reported by UCP as a node message. You can view the
-state of each individual node by following the same steps required to [monitor
-cluster status](index.md).
+state of each individual node by following the same steps required to
+[monitor cluster status](index.md).
## UCP node states
diff --git a/datacenter/ucp/3.0/guides/user/kubernetes/deploy-with-compose.md b/datacenter/ucp/3.0/guides/user/kubernetes/deploy-with-compose.md
index 64172cc8446c..86cbb666cd72 100644
--- a/datacenter/ucp/3.0/guides/user/kubernetes/deploy-with-compose.md
+++ b/datacenter/ucp/3.0/guides/user/kubernetes/deploy-with-compose.md
@@ -6,7 +6,7 @@ redirect_from:
- /ee/ucp/user/services/deploy-compose-on-kubernetes/
---
-Docker Enterprise Edition enables deploying [Docker Compose](/compose/overview.md/)
+Docker Enterprise Edition enables deploying [Docker Compose](/compose/overview.md)
files to Kubernetes clusters. Starting in Compile file version 3.3, you use the
same `docker-compose.yml` file that you use for Swarm deployments, but you
specify **Kubernetes workloads** when you deploy the stack. The result is a
diff --git a/datacenter/ucp/3.1/guides/admin/backups-and-disaster-recovery.md b/datacenter/ucp/3.1/guides/admin/backups-and-disaster-recovery.md
index f7242d35e62f..d6ce2c9093d2 100644
--- a/datacenter/ucp/3.1/guides/admin/backups-and-disaster-recovery.md
+++ b/datacenter/ucp/3.1/guides/admin/backups-and-disaster-recovery.md
@@ -207,9 +207,10 @@ manager failures, the system should be configured for
4. Perform a restore operation on the recovered swarm manager node.
5. Log in to UCP and browse to the nodes page, or use the CLI `docker node ls`
command.
-6. If any nodes are listed as `down`, you'll have to manually [remove these
- nodes](configure/scale-your-cluster.md) from the swarm and then re-join
- them using a `docker swarm join` operation with the swarm's new join-token.
+6. If any nodes are listed as `down`, you'll have to manually
+ [remove these nodes](configure/scale-your-cluster.md) from the swarm and then
+ re-join them using a `docker swarm join` operation with the swarm's new
+ join-token.
## Where to go next
diff --git a/datacenter/ucp/3.1/guides/admin/configure/ucp-configuration-file.md b/datacenter/ucp/3.1/guides/admin/configure/ucp-configuration-file.md
index 0a6c203ae140..703c0e7d9327 100644
--- a/datacenter/ucp/3.1/guides/admin/configure/ucp-configuration-file.md
+++ b/datacenter/ucp/3.1/guides/admin/configure/ucp-configuration-file.md
@@ -186,7 +186,7 @@ Configures the cluster that the current UCP instance manages.
The `dns`, `dns_opt`, and `dns_search` settings configure the DNS settings for UCP
components. Assigning these values overrides the settings in a container's
`/etc/resolv.conf` file. For more info, see
-[Configure container DNS](/engine/userguide/networking/default_network/configure-dns/).
+[Configure container DNS](/config/containers/container-networking.md#dns-services).
| Parameter | Required | Description |
|:---------------------------------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
diff --git a/datacenter/ucp/3.1/guides/admin/install/uninstall.md b/datacenter/ucp/3.1/guides/admin/install/uninstall.md
index be7c80c4bc8f..23b4cb1e44d8 100644
--- a/datacenter/ucp/3.1/guides/admin/install/uninstall.md
+++ b/datacenter/ucp/3.1/guides/admin/install/uninstall.md
@@ -39,8 +39,8 @@ The UCP configuration is kept in case you want to reinstall UCP with the same
configuration. If you want to also delete the configuration, run the uninstall
command with the `--purge-config` option.
-[Check the reference
-documentation](/reference/ucp/3.0/cli/index.md) to learn the options available.
+[Check the reference documentation](/reference/ucp/3.0/cli/index.md) to learn
+the options available.
Once the uninstall command finishes, UCP is completely removed from all the
nodes in the cluster. You don't need to run the command again from other nodes.
diff --git a/datacenter/ucp/3.1/guides/admin/install/upgrade.md b/datacenter/ucp/3.1/guides/admin/install/upgrade.md
index e7e728af4ade..50ef9dba5b8d 100644
--- a/datacenter/ucp/3.1/guides/admin/install/upgrade.md
+++ b/datacenter/ucp/3.1/guides/admin/install/upgrade.md
@@ -27,10 +27,10 @@ disk space. In particular, manager nodes must have at least 8GB of memory.
Learn about [UCP system requirements](system-requirements.md).
Ensure that your cluster nodes meet the minimum requirements for port openings.
-[Ports used](system-requirements.md/#ports-used) are documented in the UCP system requirements.
+[Ports used](system-requirements.md#ports-used) are documented in the UCP system requirements.
> **Note**: If you are upgrading a cluster to UCP 3.0.2 or higher on Microsoft
-> Azure then please ensure all of the Azure [prerequisites](install-on-azure.md/#azure-prerequisites)
+> Azure then please ensure all of the Azure [prerequisites](install-on-azure.md#azure-prerequisites)
> are met.
## Back up your cluster
diff --git a/datacenter/ucp/3.1/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md b/datacenter/ucp/3.1/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
index 35ee07c226a9..8221a326d8ba 100644
--- a/datacenter/ucp/3.1/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
+++ b/datacenter/ucp/3.1/guides/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
@@ -8,8 +8,8 @@ There are several cases in the lifecycle of UCP when a node is actively
transitioning from one state to another, such as when a new node is joining the
cluster or during node promotion and demotion. In these cases, the current step
of the transition will be reported by UCP as a node message. You can view the
-state of each individual node by following the same steps required to [monitor
-cluster status](index.md).
+state of each individual node by following the same steps required to
+[monitor cluster status](index.md).
## UCP node states
diff --git a/datacenter/ucp/3.1/guides/authorization/index.md b/datacenter/ucp/3.1/guides/authorization/index.md
index 3603eb7a8094..b4e39ddefc04 100644
--- a/datacenter/ucp/3.1/guides/authorization/index.md
+++ b/datacenter/ucp/3.1/guides/authorization/index.md
@@ -115,11 +115,11 @@ Pods with any of the following defined in the Pod Specification:
Namespace.
- `SecurityContext.allowPrivilegeEscalation` - Prevents a child process
of a container from gaining more privileges than its parent.
- - `SecurityContext.capabilities` - Prevents additional [Linux
- Capabilities](https://docs.docker.com/engine/security/security/#linux-kernel-capabilities)
+ - `SecurityContext.capabilities` - Prevents additional
+ [Linux Capabilities](/engine/security/security.md#linux-kernel-capabilities)
from being added to a pod.
- - `SecurityContext.privileged` - Prevents a user from deploying a [Privileged
- Container](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities).
+ - `SecurityContext.privileged` - Prevents a user from deploying a
+ [Privileged Container](/engine/reference/run/#runtime-privilege-and-linux-capabilities).
- `Volume.hostPath` - Prevents a user from mounting a path from the host into
the container. This could be a file, a directory, or even the Docker Socket.
diff --git a/datacenter/ucp/3.1/guides/kubernetes/deploy-with-compose.md b/datacenter/ucp/3.1/guides/kubernetes/deploy-with-compose.md
index d60e77a60002..16f06b479230 100644
--- a/datacenter/ucp/3.1/guides/kubernetes/deploy-with-compose.md
+++ b/datacenter/ucp/3.1/guides/kubernetes/deploy-with-compose.md
@@ -4,7 +4,7 @@ description: Use Docker Enterprise Edition to deploy a Kubernetes workload from
keywords: UCP, Docker EE, Kubernetes, Compose
---
-Docker Enterprise Edition enables deploying [Docker Compose](/compose/overview.md/)
+Docker Enterprise Edition enables deploying [Docker Compose](/compose/overview.md)
files to Kubernetes clusters. Starting in Compose file version 3.3, you use the
same `docker-compose.yml` file that you use for Swarm deployments, but you
specify **Kubernetes workloads** when you deploy the stack. The result is a
diff --git a/datacenter/ucp/3.1/guides/kubernetes/install-cni-plugin.md b/datacenter/ucp/3.1/guides/kubernetes/install-cni-plugin.md
index 58a0d2503a87..039d27f1676e 100644
--- a/datacenter/ucp/3.1/guides/kubernetes/install-cni-plugin.md
+++ b/datacenter/ucp/3.1/guides/kubernetes/install-cni-plugin.md
@@ -21,10 +21,10 @@ or contact that third party.
## Install an unmanaged CNI plugin on Docker UCP
-Once a platform operator has complied with [UCP system
-requirements](/ee/ucp/admin/install/system-requirements/) and
+Once a platform operator has complied with
+[UCP system requirements](/ee/ucp/admin/install/system-requirements.md) and
taken into consideration any requirements for the custom CNI plugin, you can
-[run the UCP install command](/reference/ucp/3.1/cli/install/) with the `--unmanaged-cni` flag
+[run the UCP install command](/datacenter/ucp/3.1/reference/cli/install.md) with the `--unmanaged-cni` flag
to bring up the platform.
This command will install UCP, and bring up components
@@ -54,8 +54,9 @@ will also be unavailable, as this runs in a Kubernetes pod.
### Configure CLI access to UCP
Next, a platform operator should log into UCP, download a UCP client bundle, and
-configure the Kubernetes CLI tool, `kubectl`. See [CLI Based
-Access](/ee/ucp/user-access/cli/#download-client-certificates) for more details.
+configure the Kubernetes CLI tool, `kubectl`. See
+[CLI Based Access](/ee/ucp/user-access/cli.md#download-client-certificates)
+for more details.
With `kubectl`, you can see that the UCP components running on
Kubernetes are still pending, waiting for a CNI driver before becoming
diff --git a/datacenter/ucp/3.1/guides/kubernetes/storage/use-azure-disk.md b/datacenter/ucp/3.1/guides/kubernetes/storage/use-azure-disk.md
index a2471925a95a..d7b8e936a8af 100644
--- a/datacenter/ucp/3.1/guides/kubernetes/storage/use-azure-disk.md
+++ b/datacenter/ucp/3.1/guides/kubernetes/storage/use-azure-disk.md
@@ -16,14 +16,12 @@ Disks on demand.
This guide assumes you have already provisioned a UCP environment on
Microsoft Azure. The Cluster must be provisioned after meeting all of the
-prerequisites listed in [Install UCP on
-Azure](/ee/ucp/admin/install/install-on-azure.md).
+prerequisites listed in [Install UCP on Azure](/ee/ucp/admin/install/cloudproviders/install-on-azure.md).
Additionally, this guide uses the Kubernetes Command Line tool `$
kubectl` to provision Kubernetes objects within a UCP cluster. Therefore, this
tool must be downloaded, along with a UCP client bundle. For more
-information on configuring CLI access for UCP, see [CLI Based
-Access](/ee/ucp/user-access/cli/).
+information on configuring CLI access for UCP, see [CLI Based Access](/ee/ucp/user-access/cli.md).
## Manually provision Azure Disks
@@ -233,7 +231,5 @@ $ kubectl describe pods mypod-azure-disk
## Where to go next
-- [Deploy an Ingress Controller on
- Kubernetes](/ee/ucp/kubernetes/layer-7-routing/)
-- [Discover Network Encryption on
- Kubernetes](/ee/ucp/kubernetes/kubernetes-network-encryption/)
+- [Deploy an Ingress Controller on Kubernetes](../layer-7-routing.md)
+- [Discover Network Encryption on Kubernetes](../kubernetes-network-encryption.md)
diff --git a/datacenter/ucp/3.1/guides/kubernetes/storage/use-azure-files.md b/datacenter/ucp/3.1/guides/kubernetes/storage/use-azure-files.md
index 6ba7ead84d8b..b872f51426fd 100644
--- a/datacenter/ucp/3.1/guides/kubernetes/storage/use-azure-files.md
+++ b/datacenter/ucp/3.1/guides/kubernetes/storage/use-azure-files.md
@@ -15,14 +15,12 @@ provision Azure Files Shares on demand.
This guide assumes you have already provisioned a UCP environment on
Microsoft Azure. The cluster must be provisioned after meeting all
-prerequisites listed in [Install UCP on
-Azure](/ee/ucp/admin/install/install-on-azure.md).
+prerequisites listed in [Install UCP on Azure](/ee/ucp/admin/install/cloudproviders/install-on-azure.md).
Additionally, this guide uses the Kubernetes Command Line tool `$
kubectl` to provision Kubernetes objects within a UCP cluster. Therefore, you must download
this tool along with a UCP client bundle. For more
-information on configuring CLI access to UCP, see [CLI Based
-Access](/ee/ucp/user-access/cli/).
+information on configuring CLI access to UCP, see [CLI Based Access](/ee/ucp/user-access/cli.md).
## Manually Provisioning Azure Files
@@ -36,8 +34,7 @@ Azure Files Shares.
When manually creating an Azure Files Share, first create an Azure
Storage Account for the file shares. If you have already provisioned
-a Storage Account, you can skip to [Creating an Azure Files
-Share](#creating-an-azure-file-share).
+a Storage Account, you can skip to [Creating an Azure Files Share](#creating-an-azure-files-share).
> **Note**: the Azure Kubernetes Driver does not support Azure Storage Accounts
> created using Azure Premium Storage.
diff --git a/datacenter/ucp/3.1/guides/release-notes.md b/datacenter/ucp/3.1/guides/release-notes.md
index 7c10ceb01989..6992f31b049a 100644
--- a/datacenter/ucp/3.1/guides/release-notes.md
+++ b/datacenter/ucp/3.1/guides/release-notes.md
@@ -46,8 +46,8 @@ upgrade your installation to the latest release.
file](/ee/ucp/admin/configure/ucp-configuration-file/) for more details.
(ENGORC-2334)
* Users can now adjust the internal Kubernetes Service IP Range from the default
- `10.96.0.0/16` at install time. See [Plan
- Installation](/ee/ucp/admin/install/plan-installation.md#avoid-ip-range-conflicts)
+ `10.96.0.0/16` at install time. See
+ [Plan Installation](/ee/ucp/admin/install/plan-installation.md#avoid-ip-range-conflicts)
for more details. (ENGCORE-683)
### Bug fixes
diff --git a/develop/dev-best-practices.md b/develop/dev-best-practices.md
index d04078d020d8..5c5c58d7304a 100644
--- a/develop/dev-best-practices.md
+++ b/develop/dev-best-practices.md
@@ -20,7 +20,7 @@ keep image size small:
starting with a generic `ubuntu` image and installing `openjdk` as part of the
Dockerfile.
-- [Use multistage builds](/engine/userguide/eng-image/multistage-build.md). For
+- [Use multistage builds](/develop/develop-images/multistage-build.md). For
instance, you can use the `maven` image to build your Java application, then
reset to the `tomcat` image and copy the Java artifacts into the correct
location to deploy your app, all in the same Dockerfile. This means that your
@@ -45,7 +45,7 @@ keep image size small:
```
- If you have multiple images with a lot in common, consider creating your own
- [base image](/engine/userguide/eng-image/baseimages.md) with the shared
+ [base image](/develop/develop-images/baseimages.md) with the shared
components, and basing your unique images on that. Docker only needs to load
the common layers once, and they are cached. This means that your
derivative images use memory on the Docker host more efficiently and load more
@@ -63,12 +63,12 @@ keep image size small:
## Where and how to persist application data
- **Avoid** storing application data in your container's writable layer using
- [storage drivers](/engine/userguide/storagedriver.md). This increases the
+ [storage drivers](/storage/storagedriver/select-storage-driver.md). This increases the
size of your container and is less efficient from an I/O perspective than
using volumes or bind mounts.
-- Instead, store data using [volumes](/engine/admin/volumes/volumes.md).
+- Instead, store data using [volumes](/storage/volumes.md).
- One case where it is appropriate to use
- [bind mounts](/engine/admin/volumes/bind-mounts.md) is during development,
+ [bind mounts](/storage/bind-mounts.md) is during development,
when you may want to mount your source directory or a binary you just built
into your container. For production, use a volume instead, mounting it into
the same location as you mounted a bind mount during development.
@@ -82,7 +82,7 @@ keep image size small:
## Use CI/CD for testing and deployment
- When you check a change into source control or create a pull request, use
- [Docker Hub](/docker-hub/builds/automated-build.md) or
+ [Docker Hub](/docker-hub/builds/index.md) or
another CI/CD pipeline to automatically build and tag a Docker image and test
it.
diff --git a/develop/develop-images/dockerfile_best-practices.md b/develop/develop-images/dockerfile_best-practices.md
index 2dcd1ee8ddda..5d4feeb2e43f 100644
--- a/develop/develop-images/dockerfile_best-practices.md
+++ b/develop/develop-images/dockerfile_best-practices.md
@@ -320,7 +320,7 @@ processes, and [Apache](https://httpd.apache.org/) can create one process per
request.
Use your best judgment to keep containers as clean and modular as possible. If
-containers depend on each other, you can use [Docker container networks](/engine/userguide/networking/)
+containers depend on each other, you can use [Docker container networks](/network/index.md)
to ensure that these containers can communicate.
### Minimize the number of layers
@@ -450,9 +450,9 @@ LABEL vendor=ACME\ Incorporated \
See [Understanding object labels](/config/labels-custom-metadata.md)
for guidelines about acceptable label keys and values. For information about
-querying labels, refer to the items related to filtering in [Managing labels on
-objects](/config/labels-custom-metadata.md#managing-labels-on-objects). See also
-[LABEL](/engine/reference/builder/#label) in the Dockerfile reference.
+querying labels, refer to the items related to filtering in
+[Managing labels on objects](/config/labels-custom-metadata.md#manage-labels-on-objects).
+See also [LABEL](/engine/reference/builder/#label) in the Dockerfile reference.
### RUN
diff --git a/develop/index.md b/develop/index.md
index 55d5db93976a..d0e3478984a4 100644
--- a/develop/index.md
+++ b/develop/index.md
@@ -16,8 +16,8 @@ If you're just getting started developing a brand new app on Docker, check out
these resources to understand some of the most common patterns for getting the
most benefits from Docker.
-- Use [multistage builds](/engine/userguide/eng-image/multistage-build.md){: target="_blank" class="_"} to keep your images lean
-- Manage application data using [volumes](/engine/admin/volumes/volumes.md) and [bind mounts](/engine/admin/volumes/bind-mounts.md){: target="_blank" class="_"}
+- Use [multistage builds](/develop/develop-images/multistage-build.md){: target="_blank" class="_"} to keep your images lean
+- Manage application data using [volumes](/storage/volumes.md) and [bind mounts](/storage/bind-mounts.md){: target="_blank" class="_"}
- [Scale your app](/get-started/kube-deploy.md){: target="_blank" class="_"} with kubernetes
- [Scale your app](/get-started/swarm-deploy.md){: target="_blank" class="_"} as a swarm service
- [General application development best practices](/develop/dev-best-practices.md){: target="_blank" class="_"}
@@ -27,8 +27,8 @@ most benefits from Docker.
- [Docker for Java developers](https://github.com/docker/labs/tree/master/developer-tools/java/){: target="_blank" class="_"} lab
- [Port a node.js app to Docker](https://github.com/docker/labs/tree/master/developer-tools/nodejs/porting){: target="_blank" class="_"}
- [Ruby on Rails app on Docker](https://github.com/docker/labs/tree/master/developer-tools/ruby){: target="_blank" class="_"} lab
-- [Dockerize a .Net Core application](/engine/examples/dotnetcore/){: target="_blank" class="_"}
-- [Dockerize an ASP.NET Core application with SQL Server on Linux](/compose/aspnet-mssql-compose/){: target="_blank" class="_"} using Docker Compose
+- [Dockerize a .Net Core application](/engine/examples/dotnetcore.md){: target="_blank" class="_"}
+- [Dockerize an ASP.NET Core application with SQL Server on Linux](/compose/aspnet-mssql-compose.md){: target="_blank" class="_"} using Docker Compose
## Advanced development with the SDK or API
diff --git a/docker-for-mac/docker-toolbox.md b/docker-for-mac/docker-toolbox.md
index c2730365e6aa..55aade80f64d 100644
--- a/docker-for-mac/docker-toolbox.md
+++ b/docker-for-mac/docker-toolbox.md
@@ -58,8 +58,8 @@ Also note that Docker Desktop can’t route traffic to containers, so you can't
directly access an exposed port on a running container from the hosting machine.
If you do need multiple VMs, such as when testing multi-node swarms, you can
-continue to use Docker Machine, which operates outside the scope of Docker Desktop. See [Docker Toolbox and Docker Desktop
-coexistence](docker-toolbox.md#docker-toolbox-and-docker-desktop-coexistence).
+continue to use Docker Machine, which operates outside the scope of Docker Desktop. See
+[Docker Toolbox and Docker Desktop coexistence](docker-toolbox.md#docker-toolbox-and-docker-desktop-coexistence).
## Setting up to run Docker Desktop on Mac
@@ -103,8 +103,7 @@ coexistence](docker-toolbox.md#docker-toolbox-and-docker-desktop-coexistence).
> `/usr/local/bin` with symlinks to its own versions.
{:.warning}
-See also [Unset environment variables in the current
-shell](/machine/get-started.md#unset-environment-variables-in-the-current-shell)
+See also [Unset environment variables in the current shell](/machine/get-started.md#unset-environment-variables-in-the-current-shell)
in the Docker Machine topics.
## Docker Toolbox and Docker Desktop coexistence
@@ -222,6 +221,5 @@ it](https://docs.docker.com/toolbox/toolbox_install_mac/#how-to-uninstall-toolbo
You might decide that you do not need Toolbox now that you have Docker Desktop,
and want to uninstall it. For details on how to perform a clean uninstall of
-Toolbox on Mac, see [How to uninstall
-Toolbox](/toolbox/toolbox_install_mac.md#how-to-uninstall-toolbox) in the
-Toolbox Mac topics.
+Toolbox on Mac, see [How to uninstall Toolbox](/toolbox/toolbox_install_mac.md#how-to-uninstall-toolbox)
+in the Toolbox Mac topics.
diff --git a/docker-for-mac/edge-release-notes.md b/docker-for-mac/edge-release-notes.md
index c0ef240ae698..1cf7ca7d5136 100644
--- a/docker-for-mac/edge-release-notes.md
+++ b/docker-for-mac/edge-release-notes.md
@@ -1437,8 +1437,8 @@ issue is being investigated. The workaround is to restart Docker.app
with `osxfs`. In particular, writes of small blocks and traversals of large
directories are currently slow. Additionally, containers that perform large
numbers of directory operations, such as repeated scans of large directory
-trees, may suffer from poor performance. More information is available in [Known
-Issues](troubleshoot.md#known-issues) in Troubleshooting.
+trees, may suffer from poor performance. More information is available in
+[Known Issues](troubleshoot.md#known-issues) in Troubleshooting.
* Under some unhandled error conditions, `inotify` event delivery can fail and become permanently disabled. The workaround is to restart Docker.app.
diff --git a/docker-for-mac/index.md b/docker-for-mac/index.md
index 62be3390dee4..62425bab3b3e 100644
--- a/docker-for-mac/index.md
+++ b/docker-for-mac/index.md
@@ -168,8 +168,7 @@ For more information, see:
- [Namespaces](osxfs.md#namespaces){: target="_blank" class="_"} in the topic on
[osxfs file system sharing](osxfs.md).
-- [Volume mounting requires file sharing for any project directories outside of
- `/Users`](troubleshoot.md#volume-mounting-requires-file-sharing-for-any-project-directories-outside-of-users).)
+- [Volume mounting requires file sharing for any project directories outside of `/Users`](troubleshoot.md#volume-mounting-requires-file-sharing-for-any-project-directories-outside-of-users).)
#### Proxies
@@ -205,8 +204,8 @@ You can configure Docker Desktop networking to work on a virtual private network
The Docker Engine page allows you to configure the Docker daemon to determine how your containers run.
-Type a JSON configuration file in the box to configure the daemon settings. For a full list of options, see the Docker Engine [dockerd commandline
-reference](/engine/reference/commandline/dockerd.md){:target="_blank"
+Type a JSON configuration file in the box to configure the daemon settings. For a full list of options, see the Docker Engine
+[dockerd commandline reference](/engine/reference/commandline/dockerd.md){:target="_blank"
class="_"}.
Click **Apply & Restart** to save your settings and restart Docker Desktop.
@@ -370,7 +369,7 @@ Desktop `xhyve` virtual machine).
> effect.
>
> * The registry cannot be listed as an _insecure registry_ (see [Docker
-> Daemon](index.md#docker-daemon)). Docker Desktop ignores certificates listed
+> Engine](#docker-engine). Docker Desktop ignores certificates listed
> under insecure registries, and does not send client certificates. Commands
> like `docker run` that attempt to pull from the registry produce error
> messages on the command line, as well as on the registry.
@@ -411,9 +410,9 @@ also in your keychain.
```
To learn more about how to install a CA root certificate for the registry and
-how to set the client TLS certificate for verification, see [Verify repository
-client with certificates](/engine/security/certificates.md) in the Docker Engine
-topics.
+how to set the client TLS certificate for verification, see
+[Verify repository client with certificates](/engine/security/certificates.md)
+in the Docker Engine topics.
## Install shell completion
@@ -471,8 +470,8 @@ forum](https://forums.docker.com/c/docker-for-mac){:target="_blank" class="_"}.
To report bugs or problems, log on to Docker Desktop [for Mac issues on
GitHub](https://github.com/docker/for-mac/issues){:target="_blank" class="_"},
-where you can review community reported issues, and file new ones. See [Logs
-and Troubleshooting](troubleshoot.md) for more details.
+where you can review community reported issues, and file new ones. See
+[Logs and Troubleshooting](troubleshoot.md) for more details.
For information about providing feedback on the documentation or update it yourself, see [Contribute to documentation](/opensource/).
@@ -483,8 +482,7 @@ Select **Sign in /Create Docker ID** from the Docker Desktop menu to access your
For more information, refer to the following [Docker Hub topics](/docker-hub/index.md){:target="_blank"
class="_"}:
-* [Organizations and Teams in Docker
- Hub](/docker-cloud/orgs/index.md){:target="_blank" class="_"}
+* [Organizations and Teams in Docker Hub](/docker-hub/orgs.md){:target="_blank" class="_"}
* [Builds](/docker-hub/builds/index.md){:target="_blank" class="_"}
### Two-factor authentication
@@ -513,8 +511,8 @@ After you have successfully authenticated, you can access your organizations and
* Dig in deeper with [Docker Labs](https://github.com/docker/labs/) example
walkthroughs and source code.
-* For a summary of Docker command line interface (CLI) commands, see [Docker CLI
- Reference Guide](/engine/api.md){: target="_blank" class="_"}.
+* For a summary of Docker command line interface (CLI) commands, see
+ [Docker CLI Reference Guide](/engine/api/index.md){: target="_blank" class="_"}.
* Check out the blog post, [What’s New in Docker 17.06 Community Edition
(CE)](https://blog.docker.com/2017/07/whats-new-docker-17-06-community-edition-ce/){:
diff --git a/docker-for-mac/install.md b/docker-for-mac/install.md
index d10787e2175f..f2d8dfbf029a 100644
--- a/docker-for-mac/install.md
+++ b/docker-for-mac/install.md
@@ -134,6 +134,6 @@ For information on how to back up and restore data volumes, see [Backup, restore
to run and submit diagnostics, and submit issues.
- [FAQs](faqs.md) provide answers to frequently asked questions.
- [Release notes](release-notes.md) lists component updates, new features, and
- improvements associated with Stable releases. For information about Edge releases, see [Edge release
- notes](edge-release-notes.md).
+ improvements associated with Stable releases. For information about Edge releases, see
+ [Edge release notes](edge-release-notes.md).
- [Get started with Docker](/get-started/) provides a general Docker tutorial.
\ No newline at end of file
diff --git a/docker-for-mac/osxfs-caching.md b/docker-for-mac/osxfs-caching.md
index 5e0943756d05..00b41d502694 100644
--- a/docker-for-mac/osxfs-caching.md
+++ b/docker-for-mac/osxfs-caching.md
@@ -4,14 +4,13 @@ keywords: mac, osxfs, volumes
title: Performance tuning for volume mounts (shared filesystems)
---
-[Docker 17.04 CE
-Edge](/edge/index.md#docker-ce-edge-new-features) adds support
+[Docker 17.04 CE Edge](/edge/index.md#docker-ce-edge-new-features) adds support
for two new flags to the [docker run `-v`,
`--volume`](/engine/reference/run/#volume-shared-filesystems)
option, `cached` and `delegated`, that can significantly improve the performance
of mounted volume access on Docker Desktop for Mac. These options begin to solve some of
-the challenges discussed in [Performance issues, solutions, and
-roadmap](osxfs.md#performance-issues-solutions-and-roadmap).
+the challenges discussed in
+[Performance issues, solutions, and roadmap](osxfs.md#performance-issues-solutions-and-roadmap).
> **Tip:** Release notes for Docker CE Edge 17.04 are
[here](https://github.com/moby/moby/releases/tag/v17.04.0-ce), and the
@@ -26,8 +25,7 @@ Performance](https://stories.amazee.io/docker-on-mac-performance-docker-machine-
gives a nice, quick summary.
For information on how to configure these options in a Compose file, see
-[Caching options for volume
-mounts](/compose/compose-file.md#caching-options-for-volume-mounts-docker-for-mac)
+[Caching options for volume mounts](/compose/compose-file/index.md#caching-options-for-volume-mounts-docker-desktop-for-mac)
the Docker Compose topics.
## Performance implications of host-container file system consistency
diff --git a/docker-for-mac/troubleshoot.md b/docker-for-mac/troubleshoot.md
index e61c576d2ba8..2fc7d4adb6a4 100644
--- a/docker-for-mac/troubleshoot.md
+++ b/docker-for-mac/troubleshoot.md
@@ -163,13 +163,13 @@ As well as on the registry. For example:
2019/06/20 18:15:30 http: TLS handshake error from 192.168.203.139:52883: tls: first record does not look like a TLS handshake
```
-For more about using client and server side certificates, see [Adding TLS
-certificates](index.md#adding-tls-certificates) in the Getting Started topic.
+For more about using client and server side certificates, see
+[Adding TLS certificates](index.md#add-tls-certificates) in the Getting Started topic.
### Docker Desktop does not start if Mac user account and home folder are renamed after installing the app
-See [Do I need to reinstall Docker Desktop if I change the name of my macOS
-account?](faqs.md#do-i-need-to-reinstall-docker-for-mac-if-i-change-the-name-of-my-macos-account)
+See
+[Do I need to reinstall Docker Desktop if I change the name of my macOS account?](faqs.md#do-i-need-to-reinstall-docker-for-mac-if-i-change-the-name-of-my-macos-account)
in the FAQs.
### Volume mounting requires file sharing for any project directories outside of `/Users`
@@ -229,8 +229,8 @@ in the Apple documentation, and Docker Desktop [Mac system requirements](install
* If you use bash, use the following command: `unset ${!DOCKER_*}`
* For other shells, unset each environment variable individually as described
- in [Setting up to run Docker Desktop on
- Mac](docker-toolbox.md#setting-up-to-run-docker-desktop-on-mac) in [Docker Desktop on Mac vs. Docker Toolbox](docker-toolbox.md).
+ in [Setting up to run Docker Desktop on Mac](docker-toolbox.md#setting-up-to-run-docker-desktop-on-mac)
+ in [Docker Desktop on Mac vs. Docker Toolbox](docker-toolbox.md).
* Network connections fail if the macOS Firewall is set to "Block all incoming
connections". You can enable the firewall, but `bootpd` must be allowed
@@ -335,8 +335,8 @@ in the Apple documentation, and Docker Desktop [Mac system requirements](install
outside of `osxfs` mounts, and use third-party tools like Unison or `rsync` to
synchronize between container directories and bind-mounted directories. We are
actively working on `osxfs` performance using a number of different
- techniques. To learn more, see the topic on [Performance issues, solutions,
- and roadmap](osxfs.md#performance-issues-solutions-and-roadmap).
+ techniques. To learn more, see the topic on
+ [Performance issues, solutions, and roadmap](osxfs.md#performance-issues-solutions-and-roadmap).
* If your system does not have access to an NTP server, then after a hibernate
the time seen by Docker Desktop may be considerably out of sync with the host.
diff --git a/docker-for-windows/edge-release-notes.md b/docker-for-windows/edge-release-notes.md
index e50885ad9ec4..9f199be9d494 100644
--- a/docker-for-windows/edge-release-notes.md
+++ b/docker-for-windows/edge-release-notes.md
@@ -1312,10 +1312,9 @@ registry access (fixes [docker/for-win#569](https://github.com/docker/for-win/is
**New**
-- Windows containers settings panel and options are working. In previous releases, settings were not implemented for [Windows containers
-mode](index.md#switch-between-windows-and-linux-containers-beta-feature). (See
-[About the Docker Windows containers specific
-dialogs](index.md#about-the-docker-windows-containers-specific-dialogs).)
+- Windows containers settings panel and options are working. In previous releases, settings were not implemented for
+[Windows containers mode](index.md#switch-between-windows-and-linux-containers). (See
+[About the Docker Windows containers specific dialogs](index.md#about-the-docker-windows-containers-specific-dialogs).)
- Windows containers: Restart from the settings panel works
- Windows containers: Factory default
- Windows containers: `Daemon.json` can be modified
diff --git a/docker-for-windows/index.md b/docker-for-windows/index.md
index 1d7d4835dae2..df86c9bdd925 100644
--- a/docker-for-windows/index.md
+++ b/docker-for-windows/index.md
@@ -307,8 +307,8 @@ Updating these settings requires a reconfiguration and reboot of the Linux VM.
The Docker Engine page allows you to configure the Docker daemon to determine how your containers run.
-Type a JSON configuration file in the box to configure the daemon settings. For a full list of options, see the Docker Engine [dockerd commandline
-reference](/engine/reference/commandline/dockerd.md){:target="_blank"
+Type a JSON configuration file in the box to configure the daemon settings. For a full list of options, see the Docker Engine
+[dockerd commandline reference](/engine/reference/commandline/dockerd.md){:target="_blank"
class="_"}.
Click **Apply & Restart** to save your settings and restart Docker Desktop.
diff --git a/docker-for-windows/install.md b/docker-for-windows/install.md
index cdab36aa6bf6..49dedd5c1031 100644
--- a/docker-for-windows/install.md
+++ b/docker-for-windows/install.md
@@ -55,11 +55,9 @@ more information, see [Running Docker Desktop in nested virtualization scenarios
Looking for information on using Windows containers?
-* [Switch between Windows and Linux
- containers](/docker-for-windows/index.md#switch-between-windows-and-linux-containers)
+* [Switch between Windows and Linux containers](/docker-for-windows/index.md#switch-between-windows-and-linux-containers)
describes how you can toggle between Linux and Windows containers in Docker Desktop and points you to the tutorial mentioned above.
-* [Getting Started with Windows Containers
- (Lab)](https://github.com/docker/labs/blob/master/windows/windows-containers/README.md)
+* [Getting Started with Windows Containers (Lab)](https://github.com/docker/labs/blob/master/windows/windows-containers/README.md)
provides a tutorial on how to set up and run Windows containers on Windows 10, Windows Server 2016 and Windows Server 2019. It shows you how to use a MusicStore application
with Windows containers.
* Docker Container Platform for Windows [articles and blog
@@ -157,5 +155,4 @@ For information on how to back up and restore data volumes, see [Backup, restore
* [Troubleshooting](troubleshoot.md) describes common problems, workarounds, and
how to get support.
* [FAQs](faqs.md) provides answers to frequently asked questions.
-* [Stable Release Notes](release-notes.md) or [Edge Release
- Notes](edge-release-notes.md).
+* [Stable Release Notes](release-notes.md) or [Edge Release Notes](edge-release-notes.md).
diff --git a/docker-for-windows/troubleshoot.md b/docker-for-windows/troubleshoot.md
index d443e9949607..38f49efb367e 100644
--- a/docker-for-windows/troubleshoot.md
+++ b/docker-for-windows/troubleshoot.md
@@ -98,9 +98,9 @@ As well as on the registry. For example:
2017/06/20 18:15:30 http: TLS handshake error from 192.168.203.139:52883: tls: first record does not look like a TLS handshake
```
-For more about using client and server side certificates, see [How do I add
-custom CA certificates?](index.md#how-do-i-add-custom-ca certificates) and [How
-do I add client certificates?](index.md#how-do-i-add-client-certificates) in the
+For more about using client and server side certificates, see
+[How do I add custom CA certificates?](index.md#how-do-i-add-custom-ca-certificates)
+and [How do I add client certificates?](index.md#how-do-i-add-client-certificates) in the
Getting Started topic.
### Volumes
@@ -117,9 +117,8 @@ volume defaults at container runtime, you need to either use non-host-mounted
volumes or find a way to make the applications work with the default file
permissions.
-See also, [Can I change permissions on shared volumes for container-specific
-deployment
-requirements?](faqs.md#can-i-change-permissions-on-shared-volumes-for-container-specific-deployment-requirements)
+See also,
+[Can I change permissions on shared volumes for container-specific deployment requirements?](faqs.md#can-i-change-permissions-on-shared-volumes-for-container-specific-deployment-requirements)
in the FAQs.
#### Volume mounting requires shared drives for Linux containers
@@ -183,13 +182,12 @@ In the subsequent screen, verify that Hyper-V is enabled:
#### Hyper-V driver for Docker Machine
The Docker Desktop installation includes the legacy tool Docker Machine which uses the old
-[`boot2docker.iso`](https://github.com/boot2docker/boot2docker){:
-target="_blank" class="_"}, and the [Microsoft Hyper-V
-driver](/machine/drivers/hyper-v.md) to create local virtual machines. _This is
-tangential to using Docker Desktop_, but if you want to use Docker Machine
-to create multiple local Virtual Machines (VMs), or to provision remote machines, see the [Docker
-Machine](/machine/index.md) topics. This is documented only for users looking for information about Docker Machine on Windows, which requires that Hyper-V is enabled, an external network switch is active, and referenced in the flags for the `docker-machine create` command [as described in the Docker
-Machine driver example](/machine/drivers/hyper-v.md#example).
+[`boot2docker.iso`](https://github.com/boot2docker/boot2docker){:target="_blank" class="_"},
+and the [Microsoft Hyper-V driver](/machine/drivers/hyper-v.md) to create local
+virtual machines. _This is tangential to using Docker Desktop_, but if you want to use Docker Machine
+to create multiple local Virtual Machines (VMs), or to provision remote machines, see the
+[Docker Machine](/machine/index.md) topics. This is documented only for users looking for information about Docker Machine on Windows, which requires that Hyper-V is enabled, an external network switch is active, and referenced in the flags for the `docker-machine create` command
+as described in the [Docker Machine driver example](/machine/drivers/hyper-v.md#example).
#### Virtualization must be enabled
@@ -225,14 +223,14 @@ Here are some steps to take if you experience similar problems:

-4. Set up an external network switch. If you plan at any point to use [Docker
- Machine](/machine/overview.md) to set up multiple local VMs, you need this
- anyway, as described in the topic on the [Hyper-V driver for Docker
- Machine](/machine/drivers/hyper-v.md#example). You can replace `DockerNAT`
- with this switch.
+4. Set up an external network switch. If you plan at any point to use
+ [Docker Machine](/machine/overview.md) to set up multiple local VMs, you
+ need this anyway, as described in the topic on the
+ [Hyper-V driver for Docker Machine](/machine/drivers/hyper-v.md#example).
+ You can replace `DockerNAT` with this switch.
-5. If previous steps fail to solve the problems, follow steps on the [Cleanup
- README](https://github.com/Microsoft/Virtualization-Documentation/blob/master/windows-server-container-tools/CleanupContainerHostNetworking/README.md).
+5. If previous steps fail to solve the problems, follow steps on the
+ [Cleanup README](https://github.com/Microsoft/Virtualization-Documentation/blob/master/windows-server-container-tools/CleanupContainerHostNetworking/README.md).
> Read the full description before you run the Windows cleanup script.
>
@@ -246,12 +244,10 @@ Docker Desktop is not supported on Windows Server. Instead, you can use
[Docker Enterprise Basic](/ee/index.md) at no additional cost.
If you have questions about how to run Windows containers on Windows 10, see
-[Switch between Windows and Linux
-containers](index.md#switch-between-windows-and-linux-containers).
+[Switch between Windows and Linux containers](index.md#switch-between-windows-and-linux-containers).
A full tutorial is available in [docker/labs](https://github.com/docker/labs) at
-[Getting Started with Windows
-Containers](https://github.com/docker/labs/blob/master/windows/windows-containers/README.md).
+[Getting Started with Windows Containers](https://github.com/docker/labs/blob/master/windows/windows-containers/README.md).
You can install a native Windows binary which allows you to develop and run
Windows containers without Docker Desktop. However, if you install Docker this way, you cannot develop or run Linux containers. If you try to run a Linux container on the native Docker daemon, an error occurs:
@@ -288,8 +284,7 @@ Linux containers).
To reach a Windows container from the local host, you need to specify the IP
address and port for the container that is running the service.
-You can get the container IP address by using [`docker
-inspect`](/engine/reference/commandline/inspect.md) with some `--format` options
+You can get the container IP address by using [`docker inspect`](/engine/reference/commandline/inspect.md) with some `--format` options
and the ID or name of the container. For the example above, the command would
look like this, using the name we gave to the container (`webserver`) instead of
the container ID:
diff --git a/docker-hub/builds/automated-testing.md b/docker-hub/builds/automated-testing.md
index 22580c64db57..692ee558bff0 100644
--- a/docker-hub/builds/automated-testing.md
+++ b/docker-hub/builds/automated-testing.md
@@ -44,9 +44,8 @@ make sure all of your services start.
You can define more than one `docker-compose.test.yml` file if needed. Any file
that ends in `.test.yml` is used for testing, and the tests run sequentially.
-You can also use [custom build
-hooks](advanced.md#override-build-test-or-push-commands) to further customize
-your test behavior.
+You can also use [custom build hooks](advanced.md#override-build-test-or-push-commands)
+to further customize your test behavior.
> **Note**: If you enable Automated builds, they also run any tests defined
in the `test.yml` files.
diff --git a/docker-hub/builds/index.md b/docker-hub/builds/index.md
index bbf8efc28c11..0e0d2896525d 100644
--- a/docker-hub/builds/index.md
+++ b/docker-hub/builds/index.md
@@ -85,7 +85,7 @@ You might redirected to the settings page to [link](link-source.md) the code rep
8. For each branch or tag, enable or disable the **Build Caching** toggle.
- [Build caching](/engine/userguide/eng-image/dockerfile_best-practices/#/build-cache) can save time if you are building a large image frequently or have
+ [Build caching](/develop/develop-images/dockerfile_best-practices.md#leverage-build-cache) can save time if you are building a large image frequently or have
many dependencies. You might want to leave build caching disabled to
make sure all of your dependencies are resolved at build time, or if
you have a large layer that is quicker to build locally.
diff --git a/docker-hub/builds/link-source.md b/docker-hub/builds/link-source.md
index 73cced84525c..650ff886e009 100644
--- a/docker-hub/builds/link-source.md
+++ b/docker-hub/builds/link-source.md
@@ -33,9 +33,9 @@ organizations.
>**Note**: If you are the owner of any GitHub organizations, you might see
options to grant Docker Hub access to them from this screen. You can also
individually edit an organization's third-party access settings to grant or
- revoke Docker Hub's access. See [Grant access to a GitHub
- organization](link-source.md#grant-access-to-a-github-organization) to
- learn more.
+ revoke Docker Hub's access. See
+ [Grant access to a GitHub organization](link-source.md#grant-access-to-a-github-organization)
+ to learn more.
5. Click **Authorize docker** to save the link.
diff --git a/docker-hub/repos.md b/docker-hub/repos.md
index ad6859c8e247..4db8ba7900c2 100644
--- a/docker-hub/repos.md
+++ b/docker-hub/repos.md
@@ -155,9 +155,9 @@ tutum/centos Centos image with SSH access. For the root.
There you can see two example results: `centos` and `ansible/centos7-ansible`.
The second result shows that it comes from the public repository of a user,
named `ansible/`, while the first result, `centos`, doesn't explicitly list a
-repository which means that it comes from the top-level namespace for [official
-images](/docker-hub/official_images.md). The `/` character separates a user's
-repository from the image name.
+repository which means that it comes from the top-level namespace for
+[official images](/docker-hub/official_images.md). The `/` character separates
+a user's repository from the image name.
Once you've found the image you want, you can download it with `docker pull `:
diff --git a/ee/dtr/admin/manage-webhooks/use-the-api.md b/ee/dtr/admin/manage-webhooks/use-the-api.md
index 02b1957af694..322db5aab34d 100644
--- a/ee/dtr/admin/manage-webhooks/use-the-api.md
+++ b/ee/dtr/admin/manage-webhooks/use-the-api.md
@@ -8,7 +8,7 @@ keywords: dtr, webhooks, api, registry
## Prerequisite
-See [Webhook types](/ee/dtr/admin/manage-webhooks/index.md/#webhook-types) for a list of events you can trigger notifications for via the API.
+See [Webhook types](/ee/dtr/admin/manage-webhooks/index.md#webhook-types) for a list of events you can trigger notifications for via the API.
## API Base URL
diff --git a/ee/dtr/admin/manage-webhooks/use-the-web-ui.md b/ee/dtr/admin/manage-webhooks/use-the-web-ui.md
index 2e5f213bee2c..3f1012c293f8 100644
--- a/ee/dtr/admin/manage-webhooks/use-the-web-ui.md
+++ b/ee/dtr/admin/manage-webhooks/use-the-web-ui.md
@@ -9,7 +9,7 @@ keywords: dtr, webhooks, ui, web interface, registry
## Prerequisites
- You must have admin privileges to the repository in order to create a webhook.
-- See [Webhook types](/ee/dtr/admin/manage-webhooks/index.md/#webhook-types) for a list of events you can trigger notifications for using the web interface.
+- See [Webhook types](/ee/dtr/admin/manage-webhooks/index.md#webhook-types) for a list of events you can trigger notifications for using the web interface.
## Create a webhook for your repository
diff --git a/ee/dtr/index.md b/ee/dtr/index.md
index 26a74ba7c43e..1403a90ad647 100644
--- a/ee/dtr/index.md
+++ b/ee/dtr/index.md
@@ -49,10 +49,9 @@ DTR has a built-in security scanner that can be used to discover what versions
of software are used in your images. It scans each layer and aggregates the
results to give you a complete picture of what you are shipping as a part of
your stack. Most importantly, it correlates this information with a
-vulnerability database that is kept up to date through [periodic
-updates](admin/configure/set-up-vulnerability-scans.md). This
-gives you [unprecedented insight into your exposure to known security
-threats](user/manage-images/scan-images-for-vulnerabilities.md).
+vulnerability database that is kept up to date through
+[periodic updates](admin/configure/set-up-vulnerability-scans.md). This gives you
+[unprecedented insight into your exposure to known security threats](user/manage-images/scan-images-for-vulnerabilities.md).
## Image signing
diff --git a/ee/dtr/user/manage-images/scan-images-for-vulnerabilities.md b/ee/dtr/user/manage-images/scan-images-for-vulnerabilities.md
index 6b1e433e582e..43c32145588f 100644
--- a/ee/dtr/user/manage-images/scan-images-for-vulnerabilities.md
+++ b/ee/dtr/user/manage-images/scan-images-for-vulnerabilities.md
@@ -15,8 +15,9 @@ Scanning. The results of these scans are reported for each image tag in a reposi
Docker Security Scanning is available as an add-on to Docker Trusted Registry,
and an administrator configures it for your DTR instance. If you do not see
security scan results available on your repositories, your organization may not
-have purchased the Security Scanning feature or it may be disabled. See [Set up
-Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md) for more details.
+have purchased the Security Scanning feature or it may be disabled. See
+[Set up Security Scanning in DTR](../../admin/configure/set-up-vulnerability-scans.md)
+for more details.
> **Tip**: Only users with write access to a repository can manually start a
scan. Users with read-only access can view the scan results, but cannot start
@@ -41,8 +42,9 @@ discovered vulnerabilities.
DTR scans both Linux and Windows images, but by default Docker doesn't push
foreign image layers for Windows images so DTR won't be able to scan them. If
-you want DTR to scan your Windows images, [configure Docker to always push image
-layers](pull-and-push-images.md), and it will scan the non-foreign layers.
+you want DTR to scan your Windows images,
+[configure Docker to always push image layers](pull-and-push-images.md), and it
+will scan the non-foreign layers.
## Security scan on push
diff --git a/ee/dtr/user/manage-images/sign-images/index.md b/ee/dtr/user/manage-images/sign-images/index.md
index f683122168a7..e11f3d892e05 100644
--- a/ee/dtr/user/manage-images/sign-images/index.md
+++ b/ee/dtr/user/manage-images/sign-images/index.md
@@ -11,9 +11,9 @@ redirect_from:
Two key components of the Docker Trusted Registry are the Notary Server and the Notary
Signer. These two containers provide the required components for using Docker Content
-Trust (DCT) out of the box. [Docker Content
-Trust](/engine/security/trust/content_trust/) allows you to sign image tags,
-therefore giving consumers a way to verify the integrity of your image.
+Trust (DCT) out of the box. [Docker Content Trust](/engine/security/trust/content_trust.md)
+allows you to sign image tags, therefore giving consumers a way to verify the integrity
+of your image.
As part of DTR, both the Notary and the Registry
servers are accessed through a front-end proxy, with both components sharing the
@@ -29,13 +29,12 @@ DCT is integrated with the Docker CLI, and allows you to:
## Sign images that UCP can trust
-UCP has a feature which will prevent [untrusted
-images](/ee/ucp/admin/configure/run-only-the-images-you-trust/) from being
-deployed on the cluster. To use the feature, you need to sign and push images to your DTR.
-To tie the signed images back to UCP, you need to sign the
+UCP has a feature which will prevent [untrusted images](/ee/ucp/admin/configure/run-only-the-images-you-trust.md)
+from being deployed on the cluster. To use the feature, you need to sign and push
+images to your DTR. To tie the signed images back to UCP, you need to sign the
images with the private keys of the UCP users. From a UCP client bundle, use
-`key.pem` as your private key, and `cert.pem` as your public key
-on an `x509` certificate.
+`key.pem` as your private key, and `cert.pem` as your public key on an `x509`
+certificate.
To sign images in a way that UCP can trust, you need to:
diff --git a/ee/dtr/user/manage-images/sign-images/trust-with-remote-ucp.md b/ee/dtr/user/manage-images/sign-images/trust-with-remote-ucp.md
index 91df3d4cfe32..17783d92d71f 100644
--- a/ee/dtr/user/manage-images/sign-images/trust-with-remote-ucp.md
+++ b/ee/dtr/user/manage-images/sign-images/trust-with-remote-ucp.md
@@ -10,8 +10,9 @@ redirect_from:
For more advanced deployments, you may want to share one Docker Trusted Registry
across multiple Universal Control Planes. However, customers wanting to adopt
-this model alongside the [Only Run Signed
-Images](/ee/ucp/admin/configure/run-only-the-images-you-trust.md) UCP feature, run into problems as each UCP operates an independent set of users.
+this model alongside the
+[Only Run Signed Images](/ee/ucp/admin/configure/run-only-the-images-you-trust.md)
+UCP feature, run into problems as each UCP operates an independent set of users.
Docker Content Trust (DCT) gets around this problem, since users from
a remote UCP are able to sign images in the central DTR and still apply runtime
@@ -28,9 +29,8 @@ cluster separately.
> Before attempting this guide, familiarize yourself with [Docker Content
> Trust](engine/security/trust/content_trust/#signing-images-with-docker-content-trust)
-> and [Only Run Signed
-> Images](/ee/ucp/admin/configure/run-only-the-images-you-trust.md) on a
-> single UCP. Many of the concepts within this guide may be new without that
+> and [Only Run Signed Images](/ee/ucp/admin/configure/run-only-the-images-you-trust.md)
+> on a single UCP. Many of the concepts within this guide may be new without that
> background.
## Prerequisites
diff --git a/ee/index.md b/ee/index.md
index b20596d96fbb..7cc3a218937c 100644
--- a/ee/index.md
+++ b/ee/index.md
@@ -157,8 +157,8 @@ Managers: 1
## Use the Kubernetes CLI
-Docker Enterprise exposes the standard Kubernetes API, so you can use [kubectl
-to manage your Kubernetes workloads](./ucp/user-access/cli/):
+Docker Enterprise exposes the standard Kubernetes API, so you can use
+[kubectl to manage your Kubernetes workloads](ucp/user-access/cli.md):
```bash
kubectl cluster-info
diff --git a/ee/overview.md b/ee/overview.md
index efc44472068d..1f00b23abe9c 100644
--- a/ee/overview.md
+++ b/ee/overview.md
@@ -151,8 +151,8 @@ Managers: 1
## Use the Kubernetes CLI
-Docker Enterprise exposes the standard Kubernetes API, so you can use [kubectl
-to manage your Kubernetes workloads](./ucp/user-access/cli/):
+Docker Enterprise exposes the standard Kubernetes API, so you can use
+[kubectl to manage your Kubernetes workloads](ucp/user-access/cli.md):
```bash
kubectl cluster-info
diff --git a/ee/telemetry.md b/ee/telemetry.md
index b891625d5d71..40dd3b39684e 100644
--- a/ee/telemetry.md
+++ b/ee/telemetry.md
@@ -54,9 +54,8 @@ You can find out more about an individual option by clicking the **?** icon.
## Use the CLI to control telemetry
At the engine level, there is a telemetry module built into the Docker
-Enterprise Engine 18.09 or newer. It can be disabled by modifing the [daemon
-configuration
-file](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file).
+Enterprise Engine 18.09 or newer. It can be disabled by modifing the
+[daemon configuration file](/engine/reference/commandline/dockerd/#daemon-configuration-file).
By default this is stored at `/etc/docker/daemon.json`.
```bash
diff --git a/ee/ucp/admin/backups-and-disaster-recovery.md b/ee/ucp/admin/backups-and-disaster-recovery.md
index ea59d7d6c322..db3ed877697c 100644
--- a/ee/ucp/admin/backups-and-disaster-recovery.md
+++ b/ee/ucp/admin/backups-and-disaster-recovery.md
@@ -207,9 +207,10 @@ manager failures, the system should be configured for
4. Perform a restore operation on the recovered swarm manager node.
5. Log in to UCP and browse to the nodes page, or use the CLI `docker node ls`
command.
-6. If any nodes are listed as `down`, you'll have to manually [remove these
- nodes](configure/scale-your-cluster.md) from the swarm and then re-join
- them using a `docker swarm join` operation with the swarm's new join-token.
+6. If any nodes are listed as `down`, you'll have to manually
+ [remove these nodes](configure/scale-your-cluster.md) from the swarm and then
+ re-join them using a `docker swarm join` operation with the swarm's new
+ join-token.
## Where to go next
diff --git a/ee/ucp/admin/configure/ucp-configuration-file.md b/ee/ucp/admin/configure/ucp-configuration-file.md
index 9de97087d36f..0a0cdcfafbe8 100644
--- a/ee/ucp/admin/configure/ucp-configuration-file.md
+++ b/ee/ucp/admin/configure/ucp-configuration-file.md
@@ -193,7 +193,7 @@ Configures the cluster that the current UCP instance manages.
The `dns`, `dns_opt`, and `dns_search` settings configure the DNS settings for UCP
components. Assigning these values overrides the settings in a container's
`/etc/resolv.conf` file. For more info, see
-[Configure container DNS](/engine/userguide/networking/default_network/configure-dns/).
+[Configure container DNS](/config/containers/container-networking.md#dns-services).
| Parameter | Required | Description |
|:---------------------------------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
diff --git a/ee/ucp/admin/install/index.md b/ee/ucp/admin/install/index.md
index 7345fd40c241..a19377e90c37 100644
--- a/ee/ucp/admin/install/index.md
+++ b/ee/ucp/admin/install/index.md
@@ -83,8 +83,7 @@ To install UCP:
This runs the install command in interactive mode, so that you're prompted
for any necessary configuration values. To find what other options are
available in the install command, including how to install UCP on a system
- with SELinux enabled, check the [reference
- documentation](/reference/ucp/3.2/cli/install.md).
+ with SELinux enabled, check the [reference documentation](/reference/ucp/3.2/cli/install.md).
> Note
>
diff --git a/ee/ucp/admin/install/upgrade.md b/ee/ucp/admin/install/upgrade.md
index 7e958255d917..9c254b59dadd 100644
--- a/ee/ucp/admin/install/upgrade.md
+++ b/ee/ucp/admin/install/upgrade.md
@@ -37,7 +37,7 @@ Complete the following checks:
> Note
>
> If you are upgrading a cluster to UCP 3.0.2 or higher on Microsoft
-> Azure, please ensure that all of the Azure [prerequisites](install-on-azure.md/#azure-prerequisites)
+> Azure, please ensure that all of the Azure [prerequisites](install-on-azure.md#azure-prerequisites)
> are met.
#### Storage
diff --git a/ee/ucp/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md b/ee/ucp/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
index 0a0a61707ad6..8d541be0dc6b 100644
--- a/ee/ucp/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
+++ b/ee/ucp/admin/monitor-and-troubleshoot/troubleshoot-node-messages.md
@@ -14,8 +14,8 @@ There are several cases in the lifecycle of UCP when a node is actively
transitioning from one state to another, such as when a new node is joining the
cluster or during node promotion and demotion. In these cases, the current step
of the transition will be reported by UCP as a node message. You can view the
-state of each individual node by following the same steps required to [monitor
-cluster status](index.md).
+state of each individual node by following the same steps required to
+[monitor cluster status](index.md).
## UCP node states
diff --git a/ee/ucp/authorization/index.md b/ee/ucp/authorization/index.md
index 4b48dfc2ec9a..ce21dfdda55b 100644
--- a/ee/ucp/authorization/index.md
+++ b/ee/ucp/authorization/index.md
@@ -124,11 +124,11 @@ Pods with any of the following defined in the Pod Specification:
Namespace.
- `SecurityContext.allowPrivilegeEscalation` - Prevents a child process
of a container from gaining more privileges than its parent.
- - `SecurityContext.capabilities` - Prevents additional [Linux
- Capabilities](https://docs.docker.com/engine/security/security/#linux-kernel-capabilities)
+ - `SecurityContext.capabilities` - Prevents additional
+ [Linux Capabilities](/engine/security/security.md#linux-kernel-capabilities)
from being added to a pod.
- - `SecurityContext.privileged` - Prevents a user from deploying a [Privileged
- Container](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities).
+ - `SecurityContext.privileged` - Prevents a user from deploying a
+ [Privileged Container](/engine/reference/run/#runtime-privilege-and-linux-capabilities).
- `Volume.hostPath` - Prevents a user from mounting a path from the host into
the container. This could be a file, a directory, or even the Docker Socket.
diff --git a/ee/ucp/kubernetes/deploy-with-compose.md b/ee/ucp/kubernetes/deploy-with-compose.md
index 41b020eb981f..557ba485b227 100644
--- a/ee/ucp/kubernetes/deploy-with-compose.md
+++ b/ee/ucp/kubernetes/deploy-with-compose.md
@@ -8,7 +8,7 @@ redirect_from:
>{% include enterprise_label_shortform.md %}
-Docker Enterprise Edition enables deploying [Docker Compose](/compose/overview.md/)
+Docker Enterprise Edition enables deploying [Docker Compose](/compose/overview.md)
files to Kubernetes clusters. Starting in Compose file version 3.3, you use the
same `docker-compose.yml` file that you use for Swarm deployments, but you
specify **Kubernetes workloads** when you deploy the stack. The result is a
diff --git a/ee/ucp/kubernetes/storage/use-azure-disk.md b/ee/ucp/kubernetes/storage/use-azure-disk.md
index 7dfcb580a22f..735a22df010f 100644
--- a/ee/ucp/kubernetes/storage/use-azure-disk.md
+++ b/ee/ucp/kubernetes/storage/use-azure-disk.md
@@ -18,14 +18,12 @@ Disks on demand.
This guide assumes you have already provisioned a UCP environment on
Microsoft Azure. The Cluster must be provisioned after meeting all of the
-prerequisites listed in [Install UCP on
-Azure](/ee/ucp/admin/install/install-on-azure.md).
+prerequisites listed in [Install UCP on Azure](/ee/ucp/admin/install/cloudproviders/install-on-azure.md).
Additionally, this guide uses the Kubernetes Command Line tool `$
kubectl` to provision Kubernetes objects within a UCP cluster. Therefore, this
tool must be downloaded, along with a UCP client bundle. For more
-information on configuring CLI access for UCP, see [CLI Based
-Access](/ee/ucp/user-access/cli/).
+information on configuring CLI access for UCP, see [CLI Based Access](/ee/ucp/user-access/cli.md).
## Manually provision Azure Disks
diff --git a/ee/ucp/kubernetes/storage/use-azure-files.md b/ee/ucp/kubernetes/storage/use-azure-files.md
index 98782277eca0..727e42809a0c 100644
--- a/ee/ucp/kubernetes/storage/use-azure-files.md
+++ b/ee/ucp/kubernetes/storage/use-azure-files.md
@@ -17,14 +17,12 @@ provision Azure Files Shares on demand.
This guide assumes you have already provisioned a UCP environment on
Microsoft Azure. The cluster must be provisioned after meeting all
-prerequisites listed in [Install UCP on
-Azure](/ee/ucp/admin/install/install-on-azure.md).
+prerequisites listed in [Install UCP on Azure](/ee/ucp/admin/install/cloudproviders/install-on-azure.md).
Additionally, this guide uses the Kubernetes Command Line tool `$
kubectl` to provision Kubernetes objects within a UCP cluster. Therefore, you must download
this tool along with a UCP client bundle. For more
-information on configuring CLI access to UCP, see [CLI Based
-Access](/ee/ucp/user-access/cli/).
+information on configuring CLI access to UCP, see [CLI Based Access](/ee/ucp/user-access/cli.md).
## Manually Provisioning Azure Files
@@ -39,7 +37,7 @@ Azure Files Shares.
When manually creating an Azure Files Share, first create an Azure
Storage Account for the file shares. If you have already provisioned
a Storage Account, you can skip to [Creating an Azure Files
-Share](#creating-an-azure-file-share).
+Share](#creating-an-azure-files-share).
> **Note**: the Azure Kubernetes Driver does not support Azure Storage Accounts
> created using Azure Premium Storage.
@@ -287,7 +285,5 @@ subjects:
## Where to go next
-- [Deploy an Ingress Controller on
- Kubernetes](/ee/ucp/kubernetes/layer-7-routing/)
-- [Discover Network Encryption on
- Kubernetes](/ee/ucp/kubernetes/kubernetes-network-encryption/)
+- [Deploy an Ingress Controller on Kubernetes](/ee/ucp/kubernetes/layer-7-routing/)
+- [Discover Network Encryption on Kubernetes](../kubernetes-network-encryption.md)
diff --git a/ee/ucp/release-notes.md b/ee/ucp/release-notes.md
index 73d467abf46f..ec1b98ef3878 100644
--- a/ee/ucp/release-notes.md
+++ b/ee/ucp/release-notes.md
@@ -626,8 +626,8 @@ leading to a gap in permissions checks. (ENGORC-2781)
file](/ee/ucp/admin/configure/ucp-configuration-file/) for more details.
(ENGORC-2334)
* Users can now adjust the internal Kubernetes Service IP Range from the default
- `10.96.0.0/16` at install time. See [Plan
- Installation](/ee/ucp/admin/install/plan-installation.md#avoid-ip-range-conflicts)
+ `10.96.0.0/16` at install time. See
+ [Plan Installation](/ee/ucp/admin/install/plan-installation.md#avoid-ip-range-conflicts)
for more details. (ENGCORE-683)
### Bug fixes
diff --git a/ee/upgrade.md b/ee/upgrade.md
index 677e860b5b9b..32e352d705f4 100644
--- a/ee/upgrade.md
+++ b/ee/upgrade.md
@@ -217,7 +217,7 @@ To upgrade a node individually by operating system, please follow the instructio
listed below:
* [Windows Server](/install/windows/docker-ee/#update-docker-engine---enterprise)
-* [Ubuntu](/install/linux/docker-ee/ubuntu.md/#upgrade-docker-engine---enterprise)
+* [Ubuntu](/install/linux/docker-ee/ubuntu.md#upgrade-docker-engine---enterprise)
* [RHEL](/install/linux/docker-ee/rhel/#upgrade-from-the-repository)
* [CentOS](/install/linux/docker-ee/centos/#upgrade-from-the-repository)
* [Oracle Linux](/install/linux/docker-ee/oracle/#upgrade-from-the-repository)
diff --git a/engine/examples/apt-cacher-ng.md b/engine/examples/apt-cacher-ng.md
index b5ccd3af6ff2..40a73923da0c 100644
--- a/engine/examples/apt-cacher-ng.md
+++ b/engine/examples/apt-cacher-ng.md
@@ -5,10 +5,9 @@ title: Dockerize an apt-cacher-ng service
---
> **Note**:
-> - **If you don't like sudo** then see [*Giving non-root
-> access*](../installation/binaries.md#giving-non-root-access).
-> - **If you're using macOS or docker via TCP** then you shouldn't use
-> sudo.
+> - **If you don't like sudo** then see
+> [*Giving non-root access*](/install/linux/linux-postinstall.md#manage-docker-as-a-non-root-user).
+> - **If you're using macOS or docker via TCP** then you shouldn't use sudo.
When you have multiple Docker servers, or build unrelated Docker
containers which can't make use of the Docker build cache, it can be
diff --git a/engine/examples/couchdb_data_volumes.md b/engine/examples/couchdb_data_volumes.md
index 6c6ed5dba618..d8952055f6ec 100644
--- a/engine/examples/couchdb_data_volumes.md
+++ b/engine/examples/couchdb_data_volumes.md
@@ -5,8 +5,7 @@ title: Dockerize a CouchDB service
---
> **Note**:
-> - **If you don't like sudo** then see [*Giving non-root
-> access*](../installation/binaries.md#giving-non-root-access)
+> - **If you don't like sudo** then see [*Giving non-root access*](/install/linux/linux-postinstall.md#manage-docker-as-a-non-root-user)
Here's an example of using data volumes to share the same data between
two CouchDB containers. This could be used for hot upgrades, testing
diff --git a/engine/examples/dotnetcore.md b/engine/examples/dotnetcore.md
index 444c2202f7e5..9e076d342834 100644
--- a/engine/examples/dotnetcore.md
+++ b/engine/examples/dotnetcore.md
@@ -35,8 +35,9 @@ tutorial](https://www.asp.net/get-started) to initialize a project or clone our
2. Add the text below to your `Dockerfile` for either Linux or [Windows
Containers](https://docs.microsoft.com/virtualization/windowscontainers/about/).
The tags below are multi-arch meaning they pull either Windows or
- Linux containers depending on what mode is set in [Docker Desktop for
-Windows](/docker-for-windows/). Read more on [switching containers](/docker-for-windows/#switch-between-windows-and-linux-containers).
+ Linux containers depending on what mode is set in
+ [Docker Desktop for Windows](/docker-for-windows/index.md). Read more on
+ [switching containers](/docker-for-windows/index.md#switch-between-windows-and-linux-containers).
3. The `Dockerfile` assumes that your application is called `aspnetapp`. Change
the `Dockerfile` to use the DLL file of your project.
@@ -81,11 +82,9 @@ $ docker run -d -p 8080:80 --name myapp aspnetapp
## View the web page running from a container
* Go to [localhost:8080](http://localhost:8080) to access your app in a web browser.
-* If you are using the Nano [Windows
- Container](/docker-for-windows/) and have not updated
- to the Windows Creator Update there is a bug affecting how [Windows 10
- talks to Containers via
- "NAT"](https://github.com/Microsoft/Virtualization-Documentation/issues/181#issuecomment-252671828)
+* If you are using the Nano [Windows Container](/docker-for-windows/index.md)
+ and have not updated to the Windows Creator Update there is a bug affecting how
+ [Windows 10 talks to Containers via "NAT"](https://github.com/Microsoft/Virtualization-Documentation/issues/181#issuecomment-252671828)
(Network Address Translation). You must hit the IP of the container
directly. You can get the IP address of your container with the following
steps:
diff --git a/engine/examples/postgresql_service.md b/engine/examples/postgresql_service.md
index 4ba3dc899145..86f6bf9c321a 100644
--- a/engine/examples/postgresql_service.md
+++ b/engine/examples/postgresql_service.md
@@ -79,9 +79,9 @@ Run the PostgreSQL server container (in the foreground):
$ docker run --rm -P --name pg_test eg_postgresql
```
-There are two ways to connect to the PostgreSQL server. We can use [*Link
-Containers*](../userguide/networking/default_network/dockerlinks.md), or we can access it from our host
-(or the network).
+There are two ways to connect to the PostgreSQL server. We can use
+[*Link Containers*](../userguide/networking/default_network/dockerlinks.md),
+or we can access it from our host (or the network).
> **Note**: The `--rm` removes the container and its image when
the container exits successfully.
diff --git a/engine/security/trust/trust_key_mng.md b/engine/security/trust/trust_key_mng.md
index 84574ff92328..3a4189070cd3 100644
--- a/engine/security/trust/trust_key_mng.md
+++ b/engine/security/trust/trust_key_mng.md
@@ -27,12 +27,12 @@ the image repository:
Delegation keys are optional, and not generated as part of the normal `docker`
workflow. They need to be
-[manually generated and added to the repository](trust_delegation.md#generating-delegation-keys).
+[manually generated and added to the repository](trust_delegation.md#creating-delegation-keys).
**Note**: Prior to Docker Engine 1.11, the snapshot key was also generated and stored
-locally client-side. [Use the Notary CLI to manage your snapshot key locally
-again](/notary/advanced_usage.md#rotate-keys) for
-repositories created with newer versions of Docker.
+locally client-side.
+Use the Notary CLI to [manage your snapshot key locally again](/notary/advanced_usage.md#rotate-keys)
+for repositories created with newer versions of Docker.
## Choose a passphrase
diff --git a/engine/security/trust/trust_sandbox.md b/engine/security/trust/trust_sandbox.md
index 08927899c80b..37d5ea4e84ae 100644
--- a/engine/security/trust/trust_sandbox.md
+++ b/engine/security/trust/trust_sandbox.md
@@ -10,8 +10,8 @@ This page explains how to set up and use a sandbox for experimenting with trust.
The sandbox allows you to configure and try trust operations locally without
impacting your production images.
-Before working through this sandbox, you should have read through the [trust
-overview](content_trust.md).
+Before working through this sandbox, you should have read through the
+[trust overview](content_trust.md).
### Prerequisites
diff --git a/engine/swarm/admin_guide.md b/engine/swarm/admin_guide.md
index 800064039dec..56d996ee7deb 100644
--- a/engine/swarm/admin_guide.md
+++ b/engine/swarm/admin_guide.md
@@ -385,7 +385,7 @@ In Docker 1.13 and higher, you can use the `--force` or `-f` flag with the
`docker service update` command to force the service to redistribute its tasks
across the available worker nodes. This causes the service tasks to restart.
Client applications may be disrupted. If you have configured it, your service
-uses a [rolling update](/engine/swarm/swarm-tutorial/rolling-update/).
+uses a [rolling update](/engine/swarm/swarm-tutorial/rolling-update.md).
If you use an earlier version and you want to achieve an even balance of load
across workers and don't mind disrupting running tasks, you can force your swarm
diff --git a/engine/swarm/configs.md b/engine/swarm/configs.md
index 79b635a951d4..10f5e457002f 100644
--- a/engine/swarm/configs.md
+++ b/engine/swarm/configs.md
@@ -47,8 +47,8 @@ examples below. Keep the following notable differences in mind:
- On Windows, create or update a service using `--credential-spec` with the
`config://` format. This passes the gMSA credentials file
directly to nodes before a container starts. No gMSA credentials are written
- to disk on worker nodes. For more information, refer to [Deploy services to a
- swarm](/engine/swarm/services/#gmsa-for-swarm).
+ to disk on worker nodes. For more information, refer to
+ [Deploy services to a swarm](services.md#gmsa-for-swarm).
## How Docker manages configs
@@ -110,7 +110,7 @@ those remaining after a `docker service update --config-rm`.
## Read more about `docker config` commands
Use these links to read about specific commands, or continue to the
-[example about using configs with a service](configs.md#example-use-configs-with-a-service).
+[example about using configs with a service](#advanced-example-use-configs-with-a-nginx-service).
- [`docker config create`](/engine/reference/commandline/config_create.md)
- [`docker config inspect`](/engine/reference/commandline/config_inspect.md)
@@ -130,7 +130,7 @@ Docker configs.
The `docker stack` command supports defining configs in a Compose file.
However, the `configs` key is not supported for `docker compose`. See
-[the Compose file reference](/compose/compose-file/#configs) for details.
+[the Compose file reference](/compose/compose-file/index.md#configs) for details.
### Simple example: Get started with configs
diff --git a/engine/swarm/index.md b/engine/swarm/index.md
index e0a93da22e01..368f3d8e7f79 100644
--- a/engine/swarm/index.md
+++ b/engine/swarm/index.md
@@ -5,7 +5,7 @@ title: Swarm mode overview
---
To use Docker in swarm mode, install Docker. See
-[installation instructions](/install/) for all operating systems and platforms.
+[installation instructions](/install/index.md) for all operating systems and platforms.
Current versions of Docker include *swarm mode* for natively managing a cluster
of Docker Engines called a *swarm*. Use the Docker CLI to create a swarm, deploy
diff --git a/engine/swarm/key-concepts.md b/engine/swarm/key-concepts.md
index f72939fa94b2..e5e9f779d8bd 100644
--- a/engine/swarm/key-concepts.md
+++ b/engine/swarm/key-concepts.md
@@ -16,7 +16,7 @@ directly within Docker.
A swarm consists of multiple Docker hosts which run in **swarm mode** and act as
managers (to manage membership and delegation) and workers (which run
-[swarm services](key-concepts.md#services-and-tasks)). A given Docker host can
+[swarm services](#services-and-tasks)). A given Docker host can
be a manager, a worker, or perform both roles. When you create a service, you
define its optimal state (number of replicas, network and storage resources
available to it, ports the service exposes to the outside world, and more).
@@ -38,7 +38,7 @@ that only swarm managers can manage a swarm, while standalone containers can be
started on any daemon. Docker daemons can participate in a swarm as managers,
workers, or both.
-In the same way that you can use [Docker Compose](/compose/) to define and run
+In the same way that you can use [Docker Compose](/compose/index.md) to define and run
containers, you can define and run [Swarm service](/engine/swarm/services.md) stacks.
Keep reading for details about concepts relating to Docker swarm services,
diff --git a/engine/swarm/manage-nodes.md b/engine/swarm/manage-nodes.md
index bc46690bd368..3b2d16dcb701 100644
--- a/engine/swarm/manage-nodes.md
+++ b/engine/swarm/manage-nodes.md
@@ -132,7 +132,7 @@ node-1
The labels you set for nodes using docker node update apply only to the node
entity within the swarm. Do not confuse them with the docker daemon labels for
-[dockerd](../userguide/labels-custom-metadata.md#daemon-labels).
+[dockerd](/config/labels-custom-metadata.md#daemon-labels).
Therefore, node labels can be used to limit critical tasks to nodes that meet
certain requirements. For example, schedule only on machines where special
diff --git a/engine/swarm/networking.md b/engine/swarm/networking.md
index 91fcb77f6b90..39ba63462d80 100644
--- a/engine/swarm/networking.md
+++ b/engine/swarm/networking.md
@@ -73,7 +73,7 @@ subnet and uses default options. You can see information about the network using
When no containers are connected to the overlay network, its configuration is
not very exciting:
-```json
+```bash
$ docker network inspect my-network
[
{
@@ -194,7 +194,7 @@ $ docker network create \
##### Using custom default address pools
-To customize subnet allocation for your Swarm networks, you can [optionally configure them](./swarm-mode.md) during `swarm init`.
+To customize subnet allocation for your Swarm networks, you can [optionally configure them](swarm-mode.md) during `swarm init`.
For example, the following command is used when initializing Swarm:
@@ -223,7 +223,7 @@ endpoint mode with an external load balancer, or use multiple smaller overlay ne
Management and control plane data related to a swarm is always encrypted.
For more details about the encryption mechanisms, see the
-[Docker swarm mode overlay network security model](/engine/userguide/networking/overlay-security-model.md).
+[Docker swarm mode overlay network security model](/network/overlay.md).
Application data among swarm nodes is not encrypted by default. To encrypt this
traffic on a given overlay network, use the `--opt encrypted` flag on `docker
diff --git a/engine/swarm/secrets.md b/engine/swarm/secrets.md
index 0c17032c6ed2..49a8d67f8c6d 100644
--- a/engine/swarm/secrets.md
+++ b/engine/swarm/secrets.md
@@ -147,7 +147,7 @@ a similar way, see
Both the `docker-compose` and `docker stack` commands support defining secrets
in a compose file. See
-[the Compose file reference](/compose/compose-file/#secrets) for details.
+[the Compose file reference](/compose/compose-file/index.md#secrets) for details.
### Simple example: Get started with secrets
diff --git a/engine/swarm/services.md b/engine/swarm/services.md
index 335f4059145a..a85c731cd959 100644
--- a/engine/swarm/services.md
+++ b/engine/swarm/services.md
@@ -72,7 +72,7 @@ $ docker service create --name helloworld alpine:3.6 ping docker.com
```
For more details about image tag resolution, see
-[Specify the image version the service should use](#specify-the-image-version-the-service-should-use).
+[Specify the image version the service should use](#specify-the-image-version-a-service-should-use).
### gMSA for Swarm
@@ -205,8 +205,8 @@ define a configuration at service creation, you can also update an existing
service's configuration in a similar way.
See the command-line references for
-[`docker service create`](/engine/reference/commandline/service_create/) and
-[`docker service update`](/engine/reference/commandline/service_update/), or run
+[`docker service create`](/engine/reference/commandline/service_create.md) and
+[`docker service update`](/engine/reference/commandline/service_update.md), or run
one of those commands with the `--help` flag.
### Configure the runtime environment
@@ -397,7 +397,7 @@ If the swarm manager cannot resolve the image to a digest, all is not lost:
When you create a swarm service, you can publish that service's ports to hosts
outside the swarm in two ways:
-- [You can rely on the routing mesh](#publish-a services-ports-using-the-routing-mesh).
+- [You can rely on the routing mesh](#publish-a-services-ports-using-the-routing-mesh).
When you publish a service port, the swarm makes the service accessible at the
target port on every node, regardless of whether there is a task for the
service running on that node or not. This is less complex and is the right
@@ -422,7 +422,7 @@ The external host does not need to know the IP addresses or internally-used
ports of the service tasks to interact with the service. When a user or process
connects to a service, any worker node running a service task may respond. For
more details about swarm service networking, see
-[Manage swarm service networks](/engine/swarm/networking/).
+[Manage swarm service networks](/engine/swarm/networking.md).
##### Example: Run a three-task Nginx service on 10-node swarm
@@ -544,7 +544,7 @@ $ docker service update --network-rm my-network my-web
For more information on overlay networking and service discovery, refer to
[Attach services to an overlay network](networking.md) and
-[Docker swarm mode overlay network security model](/engine/userguide/networking/overlay-security-model.md).
+[Docker swarm mode overlay network security model](/network/overlay.md).
### Grant a service access to secrets
@@ -670,7 +670,7 @@ you may experience an Out Of Memory Exception (OOME) and a container, or the
Docker daemon, might be killed by the kernel OOM killer. To prevent this from
happening, ensure that your application runs on hosts with adequate memory and
see
-[Understand the risks of running out of memory](/engine/admin/resource_constraints.md#understand-the-risks-of-running-out-of-memory).
+[Understand the risks of running out of memory](/config/containers/resource_constraints.md#understand-the-risks-of-running-out-of-memory).
Swarm services allow you to use resource constraints, placement preferences, and
labels to ensure that your service is deployed to the appropriate swarm nodes.
@@ -685,8 +685,7 @@ to `east`. If no appropriately-labelled nodes are available, tasks will wait in
operator (`==` or `!=`). For replicated services, it is possible that all
services run on the same node, or each node only runs one replica, or that some
nodes don't run any replicas. For global services, the service runs on every
-node that meets the placement constraint and any [resource
-requirements](#reserve-memory-or-cpus-for-a-service).
+node that meets the placement constraint and any [resource requirements](#reserve-memory-or-cpus-for-a-service).
```bash
$ docker service create \
@@ -938,7 +937,7 @@ $ docker service create \
```
For more information on how to create data volumes and the use of volume
-drivers, see [Use volumes](/storage/volumes/).
+drivers, see [Use volumes](/storage/volumes.md).
#### Bind mounts
diff --git a/engine/swarm/stack-deploy.md b/engine/swarm/stack-deploy.md
index 715aa95e1519..a3a62762903a 100644
--- a/engine/swarm/stack-deploy.md
+++ b/engine/swarm/stack-deploy.md
@@ -6,17 +6,15 @@ title: Deploy a stack to a swarm
When running Docker Engine in swarm mode, you can use `docker stack deploy` to
deploy a complete application stack to the swarm. The `deploy` command accepts
-a stack description in the form of a [Compose file](/compose/compose-file.md).
+a stack description in the form of a [Compose file](/compose/compose-file/index.md).
The `docker stack deploy` command supports any Compose file of version "3.0" or
-above. If you have an older version, see the [upgrade
-guide](/compose/compose-file.md#upgrading).
+above. If you have an older version, see the [upgrade guide](/compose/compose-file/compose-versioning.md#upgrading).
To run through this tutorial, you need:
-1. A Docker Engine of version 1.13.0 or later, running in [swarm
- mode](/engine/swarm/swarm-mode.md). If you're not familiar with swarm mode,
- you might want to read
+1. A Docker Engine of version 1.13.0 or later, running in [swarm mode](/engine/swarm/swarm-mode.md).
+ If you're not familiar with swarm mode, you might want to read
[Swarm mode key concepts](/engine/swarm/key-concepts.md)
and [How services work](/engine/swarm/how-swarm-mode-works/services.md).
diff --git a/engine/swarm/swarm-tutorial/create-swarm.md b/engine/swarm/swarm-tutorial/create-swarm.md
index 1fe91ab00bfe..b32d03e165c2 100644
--- a/engine/swarm/swarm-tutorial/create-swarm.md
+++ b/engine/swarm/swarm-tutorial/create-swarm.md
@@ -23,11 +23,12 @@ machines.
$ docker swarm init --advertise-addr
```
- >**Note**: If you are using Docker Desktop for Mac or Docker Desktop for Windows to test
-single-node swarm, simply run `docker swarm init` with no arguments. There is no
-need to specify `--advertise-addr` in this case. To learn more, see the topic
-on how to [Use Docker Desktop or Mac or Docker Desktop for
-Windows](/engine/swarm/swarm-tutorial/index.md#use-docker-for-mac-or-docker-for-windows) with Swarm.
+ > **Note**: If you are using Docker Desktop for Mac or Docker Desktop for Windows to test
+ > single-node swarm, simply run `docker swarm init` with no arguments. There is no
+ > need to specify `--advertise-addr` in this case. To learn more, see the topic
+ > on how to
+ > [Use Docker Desktop or Mac or Docker Desktop for Windows](/engine/swarm/swarm-tutorial/index.md#use-docker-desktop-for-mac-or-docker-desktop-for-windows)
+ > with Swarm.
In the tutorial, the following command creates a swarm on the `manager1`
machine:
diff --git a/engine/swarm/swarm-tutorial/drain-node.md b/engine/swarm/swarm-tutorial/drain-node.md
index 1c74d1482930..ddb5a016a485 100644
--- a/engine/swarm/swarm-tutorial/drain-node.md
+++ b/engine/swarm/swarm-tutorial/drain-node.md
@@ -35,8 +35,8 @@ node and launches replica tasks on a node with `ACTIVE` availability.
e216jshn25ckzbvmwlnh5jr3g * manager1 Ready Active Leader
```
-3. If you aren't still running the `redis` service from the [rolling
-update](rolling-update.md) tutorial, start it now:
+3. If you aren't still running the `redis` service from the
+ [rolling update](rolling-update.md) tutorial, start it now:
```bash
$ docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6
diff --git a/engine/swarm/swarm-tutorial/index.md b/engine/swarm/swarm-tutorial/index.md
index 6a8183e65601..5762b9095251 100644
--- a/engine/swarm/swarm-tutorial/index.md
+++ b/engine/swarm/swarm-tutorial/index.md
@@ -56,13 +56,12 @@ follows:
* [install Docker Engine on Linux machines](#install-docker-engine-on-linux-machines)
-* [use Docker Desktop for Mac or Docker Desktop for Windows](#use-docker-for-mac-or-docker-for-windows)
+* [use Docker Desktop for Mac or Docker Desktop for Windows](#use-docker-desktop-for-mac-or-docker-desktop-for-windows)
#### Install Docker Engine on Linux machines
If you are using Linux based physical computers or cloud-provided computers as
-hosts, simply follow the [Linux install
-instructions](../../installation/index.md) for your platform. Spin up the three
+hosts, simply follow the [Linux install instructions](/install/index.md) for your platform. Spin up the three
machines, and you are ready. You can test both
single-node and multi-node swarm scenarios on Linux machines.
@@ -81,8 +80,8 @@ serve as the single swarm node.
* Currently, you cannot use Docker Desktop for Mac or Docker Desktop for Windows alone to test a
-_multi-node_ swarm. However, you can use the included version of [Docker
-Machine](/machine/overview.md) to create the swarm nodes (see
+_multi-node_ swarm. However, you can use the included version of
+[Docker Machine](/machine/overview.md) to create the swarm nodes (see
[Get started with Docker Machine and a local VM](/machine/get-started.md)), then
follow the tutorial for all multi-node features. For this scenario, you run
commands from a Docker Desktop for Mac or Docker Desktop for Windows host, but that Docker host itself is
diff --git a/engine/swarm/swarm_manager_locking.md b/engine/swarm/swarm_manager_locking.md
index ef0e9e4165d9..f05247729d0c 100644
--- a/engine/swarm/swarm_manager_locking.md
+++ b/engine/swarm/swarm_manager_locking.md
@@ -7,8 +7,8 @@ title: Lock your swarm to protect its encryption key
In Docker 1.13 and higher, the Raft logs used by swarm managers are encrypted on
disk by default. This at-rest encryption protects your service's configuration
and data from attackers who gain access to the encrypted Raft logs. One of the
-reasons this feature was introduced was in support of the new [Docker
-secrets](secrets.md) feature.
+reasons this feature was introduced was in support of the [Docker secrets](secrets.md)
+feature.
When Docker restarts, both the TLS key used to encrypt communication among swarm
nodes, and the key used to encrypt and decrypt Raft logs on disk, are loaded
@@ -18,7 +18,7 @@ at rest, by allowing you to take ownership of these keys and to require manual
unlocking of your managers. This feature is called _autolock_.
When Docker restarts, you must
-[unlock the swarm](swarm_manager_locking.md#unlock-a-swarm) first, using a
+[unlock the swarm](#unlock-a-swarm) first, using a
_key encryption key_ generated by Docker when the swarm was locked. You can
rotate this key encryption key at any time.
@@ -51,9 +51,9 @@ command and provide the following key:
Store the key in a safe place, such as in a password manager.
-When Docker restarts, you need to
-[unlock the swarm](swarm_manager_locking.md#unlock-a-swarm). A locked swarm
-causes an error like the following when you try to start or restart a service:
+When Docker restarts, you need to [unlock the swarm](#unlock-a-swarm). A locked
+swarm causes an error like the following when you try to start or restart a
+service:
```bash
$ sudo service docker restart
diff --git a/kitematic/minecraft-server.md b/kitematic/minecraft-server.md
index 67580284fcc6..94dbb1f7c9cb 100644
--- a/kitematic/minecraft-server.md
+++ b/kitematic/minecraft-server.md
@@ -10,8 +10,8 @@ using Kitematic and Docker.
### Create Minecraft server container
-First, if you haven't yet done so, [download and start
-Kitematic](index.md). Once installed and running, the app should look like this:
+First, if you haven't yet done so, [download and start Kitematic](index.md).
+Once installed and running, the app should look like this:
Create a container from the recommended Minecraft image by clicking the "Create"
button.
@@ -68,5 +68,5 @@ Go back to your Minecraft client and join your server. The new map should load.
## Next steps
-For an example using Kitematic to run Nginx, take a look at the [Nginx web
-server](./nginx-web-server.md) page.
+For an example using Kitematic to run Nginx, take a look at the
+[Nginx web server](./nginx-web-server.md) page.
diff --git a/kitematic/nginx-web-server.md b/kitematic/nginx-web-server.md
index 08e49d49e0fe..ee22ba946e42 100644
--- a/kitematic/nginx-web-server.md
+++ b/kitematic/nginx-web-server.md
@@ -17,8 +17,8 @@ This example website serves the popular 2048 game. Let's get to it!
#### Run the Nginx web server container
-First, if you haven't yet done so, [download and start
-Kitematic](index.md). Once installed and running, the app should look like this:
+First, if you haven't yet done so, [download and start Kitematic](index.md).
+Once installed and running, the app should look like this:

diff --git a/kitematic/rethinkdb-dev-database.md b/kitematic/rethinkdb-dev-database.md
index f6912ec1c71d..e2ebe5fafe67 100644
--- a/kitematic/rethinkdb-dev-database.md
+++ b/kitematic/rethinkdb-dev-database.md
@@ -12,9 +12,8 @@ This tutorial guides you through these steps:
### Set up RethinkDB in Kitematic
-First, if you haven't yet done so, [download and start
-Kitematic](index.md). Once open, the app should look like
-this:
+First, if you haven't yet done so, [download and start Kitematic](index.md).
+Once open, the app should look like this:

diff --git a/kitematic/userguide.md b/kitematic/userguide.md
index ca0f34704370..b1e84e8b718f 100644
--- a/kitematic/userguide.md
+++ b/kitematic/userguide.md
@@ -47,8 +47,8 @@ The container list includes all containers, even those not started by Kitematic,
giving you a quick over-view of the state of your Docker daemon.
You can click on any container to view its logs (the output of the main container
-process), restart, stop or exec `sh` in that container. See [Working with a
-container](userguide.md#working-with-a-container) for more details.
+process), restart, stop or exec `sh` in that container. See
+[Working with a container](userguide.md#working-with-a-container) for more details.
## Creating a new container
diff --git a/machine/drivers/hyper-v.md b/machine/drivers/hyper-v.md
index ab6f557d3b69..8fa9c0081a90 100644
--- a/machine/drivers/hyper-v.md
+++ b/machine/drivers/hyper-v.md
@@ -90,10 +90,9 @@ Reboot your desktop system to clear out any routing table problems. Without a re
* Run the `docker-machine create` commands to create machines.
- For example, if you follow along with the [Swarm mode
-tutorial](/engine/swarm/swarm-tutorial/index.md) which asks you to create [three
-networked host machines](/engine/swarm/swarm-tutorial/index.md#three-networked-host-machines),
-you can create these swarm nodes: `manager1`, `worker1`, `worker2`.
+ For example, if you follow along with the [Swarm mode tutorial](/engine/swarm/swarm-tutorial/index.md)
+ which asks you to create [three networked host machines](/engine/swarm/swarm-tutorial/index.md#three-networked-host-machines),
+ you can create these swarm nodes: `manager1`, `worker1`, `worker2`.
* Use the Microsoft Hyper-V driver and reference the new virtual switch you created.
diff --git a/machine/get-started-cloud.md b/machine/get-started-cloud.md
index fb3b96b30c1c..f87b9c473507 100644
--- a/machine/get-started-cloud.md
+++ b/machine/get-started-cloud.md
@@ -86,8 +86,7 @@ Several Docker Machine driver plugins for use with other cloud platforms are
available from 3rd party contributors. These are use-at-your-own-risk plugins,
not maintained by or formally associated with Docker.
-See [Available driver
-plugins](https://github.com/docker/docker.github.io/blob/master/machine/AVAILABLE_DRIVER_PLUGINS.md){:
+See [Available driver plugins](https://github.com/docker/docker.github.io/blob/master/machine/AVAILABLE_DRIVER_PLUGINS.md){:
target="_blank" class="_"}.
## Add a host without a driver
diff --git a/machine/get-started.md b/machine/get-started.md
index 2c26dcaf1d6b..ddcc52e84a0b 100644
--- a/machine/get-started.md
+++ b/machine/get-started.md
@@ -10,13 +10,13 @@ Docker host inside of a local virtual machine.
## Prerequisite information
-With the advent of [Docker Desktop for Mac](/docker-for-mac/index.md) and [Docker Desktop for
-Windows](/docker-for-windows/index.md) as replacements for [Docker
-Toolbox](/toolbox/overview.md), we recommend that you use these for your primary
-Docker workflows. You can use these applications to run Docker natively on your
-local system without using Docker Machine at all. (See [Docker Desktop for Mac vs.
-Docker Toolbox](/docker-for-mac/docker-toolbox.md) for an explanation on the Mac
-side.)
+With the advent of [Docker Desktop for Mac](/docker-for-mac/index.md) and
+[Docker Desktop for Windows](/docker-for-windows/index.md) as replacements for
+[Docker Toolbox](/toolbox/overview.md), we recommend that you use these for your
+primary Docker workflows. You can use these applications to run Docker natively
+on your local system without using Docker Machine at all. (See
+[Docker Desktop for Mac vs. Docker Toolbox](/docker-for-mac/docker-toolbox.md)
+for an explanation on the Mac side.)
For now, however, if you want to create _multiple_ local machines, you still
need Docker Machine to create and manage machines for multi-node
@@ -56,10 +56,10 @@ lightweight macOS virtualization solution built on top of the
[Hypervisor.framework](https://developer.apple.com/reference/hypervisor).
Currently, there is no `docker-machine create` driver for HyperKit, so
-use the `virtualbox` driver to create local machines. (See the [Docker Machine
-driver for Oracle VirtualBox](drivers/virtualbox.md).) You can run
-both HyperKit and Oracle VirtualBox on the same system. To learn more, see
-[Docker Desktop for Mac vs. Docker Toolbox](/docker-for-mac/docker-toolbox/).
+use the `virtualbox` driver to create local machines. (See the
+[Docker Machine driver for Oracle VirtualBox](drivers/virtualbox.md).) You can
+run both HyperKit and Oracle VirtualBox on the same system. To learn more, see
+[Docker Desktop for Mac vs. Docker Toolbox](/docker-for-mac/docker-toolbox.md).
* Make sure you have [the latest VirtualBox](https://www.virtualbox.org/wiki/Downloads){: target="_blank" class="_"}
correctly installed on your system (either as part of an earlier Toolbox install,
@@ -71,14 +71,15 @@ Docker Desktop for Mac and Docker Desktop for Windows both require newer version
respective operating systems, so users with older OS versions must use Docker
Toolbox.
-* If you are using Docker Toolbox on either Mac or an older version Windows system (without Hyper-V), use the `virtualbox` driver to create a local
-machine based on Oracle [VirtualBox](https://www.virtualbox.org/){:
-target="_blank" class="_"}. (See the [Docker Machine driver for Oracle
-VirtualBox](drivers/virtualbox.md).)
+* If you are using Docker Toolbox on either Mac or an older version Windows
+ system (without Hyper-V), use the `virtualbox` driver to create a local machine
+ based on Oracle [VirtualBox](https://www.virtualbox.org/){:target="_blank" class="_"}.
+ (See the [Docker Machine driver for Oracle VirtualBox](drivers/virtualbox.md).)
-* If you are using Docker Toolbox on a Windows system that has Hyper-V but cannot run Docker Desktop for Windows (for example Windows 8 Pro), you must use the
-`hyperv` driver to create local machines. (See the [Docker Machine driver for
-Microsoft Hyper-V](drivers/hyper-v.md).)
+* If you are using Docker Toolbox on a Windows system that has Hyper-V but cannot
+ run Docker Desktop for Windows (for example Windows 8 Pro), you must use the
+ `hyperv` driver to create local machines. (See th
+ [Docker Machine driver for Microsoft Hyper-V](drivers/hyper-v.md).)
* Make sure you have [the latest VirtualBox](https://www.virtualbox.org/wiki/Downloads){: target="_blank" class="_"}
correctly installed on your system. If you used
@@ -291,9 +292,9 @@ For machines other than `default`, and commands other than those listed above, y
## Unset environment variables in the current shell
You might want to use the current shell to connect to a different Docker Engine.
-This would be the case if, for example, you are [running Docker Desktop for Mac
-concurrent with Docker Toolbox](/docker-for-mac/docker-toolbox.md) and want to
-talk to two different Docker Engines.
+This would be the case if, for example, you are
+[running Docker Desktop for Mac concurrent with Docker Toolbox](/docker-for-mac/docker-toolbox.md)
+and want to talk to two different Docker Engines.
In both scenarios, you have the option to switch the environment for the current
shell to talk to different Docker engines.
@@ -343,8 +344,7 @@ shell to talk to different Docker engines.
If you are running Docker Desktop for Mac, you can run Docker commands to talk
to the Docker Engine installed with that app.
- Since [Docker Desktop for Windows is incompatible with
- Toolbox](/docker-for-windows/install.md#what-to-know-before-you-install),
+ Since [Docker Desktop for Windows is incompatible with Toolbox](/docker-for-windows/install.md#what-to-know-before-you-install),
this scenario isn't applicable because Docker Desktop for Windows uses the Docker
Engine and Docker Machine that come with it.
diff --git a/machine/install-machine.md b/machine/install-machine.md
index 2a72874a6bfb..61c338ad477f 100644
--- a/machine/install-machine.md
+++ b/machine/install-machine.md
@@ -104,9 +104,10 @@ To uninstall Docker Machine:
-q)` (you might need to use `-force` on Windows).
Removing machines is an optional step because there are cases where
- you might want to save and migrate existing machines to a [Docker
- for Mac](/docker-for-mac/index.md) or [Docker Desktop for
- Windows](/docker-for-windows/index.md) environment, for example.
+ you might want to save and migrate existing machines to a
+ [Docker for Mac](/docker-for-mac/index.md) or
+ [Docker Desktop for Windows](/docker-for-windows/index.md) environment,
+ for example.
* Remove the executable: `rm $(which docker-machine)`
diff --git a/machine/overview.md b/machine/overview.md
index de8048e9dd8f..027404d0431a 100644
--- a/machine/overview.md
+++ b/machine/overview.md
@@ -28,14 +28,14 @@ point to a host called `default`, follow on-screen instructions to complete
`env` setup, and run `docker ps`, `docker run hello-world`, and so forth.
Machine _was_ the _only_ way to run Docker on Mac or Windows previous to Docker
-v1.12. Starting with the beta program and Docker v1.12, [Docker Desktop for
-Mac](/docker-for-mac/index.md) and [Docker Desktop for
-Windows](/docker-for-windows/index.md) are available as native apps and the
+v1.12. Starting with the beta program and Docker v1.12,
+[Docker Desktop for Mac](/docker-for-mac/index.md) and
+[Docker Desktop for Windows](/docker-for-windows/index.md) are available as native apps and the
better choice for this use case on newer desktops and laptops. We encourage you
to try out these new apps. The installers for Docker Desktop for Mac and Docker Desktop for
Windows include Docker Machine, along with Docker Compose.
-If you aren't sure where to begin, see [Get Started with Docker](/get-started/),
+If you aren't sure where to begin, see [Get Started with Docker](/get-started/index.md),
which guides you through a brief end-to-end tutorial on Docker.
## Why should I use it?
diff --git a/machine/reference/create.md b/machine/reference/create.md
index c98672029faf..d64342ee6f52 100644
--- a/machine/reference/create.md
+++ b/machine/reference/create.md
@@ -11,8 +11,7 @@ argument to indicate the name of the created machine.
> Looking for the full list of available drivers?
>
>For a full list of drivers that work with `docker-machine create` and
-information on how to use them, see [Machine
-drivers](/machine/drivers/index.md).
+information on how to use them, see [Machine drivers](/machine/drivers/index.md).
{: .important}
## Example
@@ -130,8 +129,7 @@ Docker Machine uses them for the default value of the flag.
As part of the process of creation, Docker Machine installs Docker and
configures it with some sensible defaults. For instance, it allows connection
from the outside world over TCP with TLS-based encryption and defaults to AUFS
-as the [storage
-driver](/engine/reference/commandline/dockerd.md#daemon-storage-driver-option)
+as the [storage driver](/engine/reference/commandline/dockerd.md#daemon-storage-driver-option)
when available.
There are several cases where the user might want to set options for the created
@@ -194,9 +192,8 @@ In addition to this subset of daemon flags which are directly supported, Docker
Machine also supports an additional flag, `--engine-opt`, which can be used to
specify arbitrary daemon options with the syntax `--engine-opt flagname=value`.
For example, to specify that the daemon should use `8.8.8.8` as the DNS server
-for all containers, and always use the `syslog` [log
-driver](/engine/reference/run.md#logging-drivers-log-driver) you
-could run the following create command:
+for all containers, and always use the `syslog` [log driver](/engine/reference/run.md#logging-drivers-log-driver)
+you could run the following create command:
```bash
$ docker-machine create -d virtualbox \
diff --git a/machine/reference/env.md b/machine/reference/env.md
index 4779d39797fa..ecc7d4c9d773 100644
--- a/machine/reference/env.md
+++ b/machine/reference/env.md
@@ -117,6 +117,6 @@ export NO_PROXY="192.168.99.104"
# eval "$(docker-machine env default)"
```
-You may also want to visit the [documentation on setting `HTTP_PROXY` for the
-created daemon using the `--engine-env` flag for `docker-machine
-create`](/machine/reference/create.md#specifying-configuration-options-for-the-created-docker-engine).
+You may also want to visit the documentation on setting `HTTP_PROXY` for the
+created daemon using the `--engine-env` flag for
+[`docker-machine create`](/machine/reference/create.md#specifying-configuration-options-for-the-created-docker-engine).
diff --git a/network/bridge.md b/network/bridge.md
index 3ac6b31fb2da..c75b57fea029 100644
--- a/network/bridge.md
+++ b/network/bridge.md
@@ -23,8 +23,8 @@ other.
Bridge networks apply to containers running on the **same** Docker daemon host.
For communication among containers running on different Docker daemon hosts, you
-can either manage routing at the OS level, or you can use an [overlay
-network](overlay.md).
+can either manage routing at the OS level, or you can use an
+[overlay network](overlay.md).
When you start Docker, a [default bridge network](#use-the-default-bridge-network) (also
called `bridge`) is created automatically, and newly-started containers connect
diff --git a/network/links.md b/network/links.md
index 9913a3c2f5de..5217bca59299 100644
--- a/network/links.md
+++ b/network/links.md
@@ -16,7 +16,7 @@ with `--link` is sharing environment variables between containers. However,
you can use other mechanisms such as volumes to share environment variables
between containers in a more controlled way.
>
-> See [Differences between user-defined bridges and the default bridge](bridge.md##differences-between-user-defined-bridges-and-the-default-bridge)
+> See [Differences between user-defined bridges and the default bridge](bridge.md#differences-between-user-defined-bridges-and-the-default-bridge)
> for some alternatives to using `--link`.
{:.warning}
@@ -24,12 +24,12 @@ The information in this section explains legacy container links within the
Docker default `bridge` network which is created automatically when you install
Docker.
-Before the [Docker networks feature](/engine/userguide/networking/index.md), you could use the
+Before the [Docker networks feature](/network/index.md), you could use the
Docker link feature to allow containers to discover each other and securely
transfer information about one container to another container. With the
introduction of the Docker networks feature, you can still create links but they
behave differently between default `bridge` network and
-[user defined networks](/engine/userguide/networking/work-with-networks.md#linking-containers-in-user-defined-networks).
+[user defined networks](/network/bridge.md#differences-between-user-defined-bridges-and-the-default-bridge).
This section briefly discusses connecting via a network port and then goes into
detail on container linking in default `bridge` network.
@@ -43,7 +43,7 @@ Let's say you used this command to run a simple Python Flask application:
> **Note**:
> Containers have an internal network and an IP address.
> Docker can have a variety of network configurations. You can see more
-> information on Docker networking [here](/engine/userguide/networking/index.md).
+> information on Docker networking [here](/network/index.md).
When that container was created, the `-P` flag was used to automatically map
any network port inside it to a random high port within an *ephemeral port
@@ -107,7 +107,7 @@ configurations. For example, if you've bound the container port to the
> **Note**:
> This section covers the legacy link feature in the default `bridge` network.
-> Refer to [linking containers in user-defined networks](/engine/userguide/networking/work-with-networks.md#linking-containers-in-user-defined-networks)
+> Refer to [differences between user-defined bridges and the default bridge](/network/bridge.md#differences-between-user-defined-bridges-and-the-default-bridge)
> for more information on links in user-defined networks.
Network port mappings are not the only way Docker containers can connect to one
diff --git a/notary/advanced_usage.md b/notary/advanced_usage.md
index b9543e8e2b37..5906f44d38ee 100644
--- a/notary/advanced_usage.md
+++ b/notary/advanced_usage.md
@@ -11,11 +11,11 @@ their own Notary service. Make sure you have first read and understood how to
## An important note about the examples
This document's command examples omit the `-s` and `-d` flags. If you do not
-know what these options do, read the [Getting
-Started](getting_started.md) docs or run `notary --help` before continuing. Once
-you understand what these flags do, you must provide your own values for these
-options while following this document. You can also configure these options, see
-[advanced configuration options](reference/index.md) for more information.
+know what these options do, read the [Getting Started](getting_started.md) docs
+or run `notary --help` before continuing. Once you understand what these flags do,
+you must provide your own values for these options while following this document.
+You can also configure these options, see [advanced configuration options](reference/index.md)
+for more information.
## Initialize a Trusted Collection
diff --git a/notary/service_architecture.md b/notary/service_architecture.md
index 042eb72e6163..ef9eb4b951f1 100644
--- a/notary/service_architecture.md
+++ b/notary/service_architecture.md
@@ -52,8 +52,8 @@ but here is a brief recap of the TUF roles and corresponding key hierarchy:
which lists filenames in the collection, and their sizes and respective
[hashes](https://en.wikipedia.org/wiki/Cryptographic_hash_function){:target="_blank" class="_"}.
These files are used to verify the integrity of some or all of the actual contents of the repository.
- They are also used to [delegate trust to other collaborators via lower level
- [delegation roles](advanced_usage.md#working-with-delegation-roles).
+ They are also used to
+ [delegate trust to other collaborators via lower level [delegation roles](advanced_usage.md#work-with-delegation-roles).
Delegation keys are held by anyone from the collection owner or administrator to
collection collaborators.
diff --git a/opensource/index.md b/opensource/index.md
index edbc34958653..bdc073eb8e87 100644
--- a/opensource/index.md
+++ b/opensource/index.md
@@ -96,9 +96,8 @@ formats, and gives us a way to test and demo them.
## Looking for meetups and Docker Community?
-Go to the [Docker Community GitHub
-repository](https://github.com/docker/community/blob/master/README.md){:
-target="_blank" class="_"} for resources and information on the community.
+Go to the [Docker Community GitHub repository](https://github.com/docker/community/blob/master/README.md){:target="_blank" class="_"}
+for resources and information on the community.
The topics in this guide on [Other ways to contribute](/opensource/ways/)
provide some additional information, but the community
diff --git a/opensource/ways.md b/opensource/ways.md
index 03d82a143981..fe381a8862e5 100644
--- a/opensource/ways.md
+++ b/opensource/ways.md
@@ -84,10 +84,8 @@ and how long it lasts. Usual meetups tend to last 2 hours, and start between
## Learn about the Docker Community
-Go to the **[Docker Community GitHub
-repository](https://github.com/docker/community/blob/master/README.md){:
-target="_blank" class="_"}** for
-resources and information on the community. Those pages are the most
+Go to the **[Docker Community GitHub repository](https://github.com/docker/community/blob/master/README.md){:target="_blank" class="_"}**
+for resources and information on the community. Those pages are the most
up-to-date for finding out about the community and making connections.
The topics below provide some additional links, but it's likely that everything
diff --git a/registry/deploying.md b/registry/deploying.md
index ac66eae24bf7..35f7468c02a4 100644
--- a/registry/deploying.md
+++ b/registry/deploying.md
@@ -144,14 +144,13 @@ $ docker run -d \
### Customize the storage location
-By default, your registry data is persisted as a [docker
-volume](/engine/tutorials/dockervolumes.md) on the host filesystem. If you want
-to store your registry contents at a specific location on your host filesystem,
-such as if you have an SSD or SAN mounted into a particular directory, you might
-decide to use a bind mount instead. A bind mount is more dependent on the
-filesystem layout of the Docker host, but more performant in many situations.
-The following example bind-mounts the host directory `/mnt/registry` into the
-registry container at `/var/lib/registry/`.
+By default, your registry data is persisted as a [docker volume](/storage/volumes.md)
+on the host filesystem. If you want to store your registry contents at a specific
+location on your host filesystem, such as if you have an SSD or SAN mounted into
+a particular directory, you might decide to use a bind mount instead. A bind mount
+is more dependent on the filesystem layout of the Docker host, but more performant
+in many situations. The following example bind-mounts the host directory
+`/mnt/registry` into the registry container at `/var/lib/registry/`.
```bash
$ docker run -d \
@@ -166,9 +165,9 @@ $ docker run -d \
By default, the registry stores its data on the local filesystem, whether you
use a bind mount or a volume. You can store the registry data in an Amazon S3
-bucket, Google Cloud Platform, or on another storage back-end by using [storage
-drivers](./storage-drivers/index.md). For more information, see [storage
-configuration options](./configuration.md#storage).
+bucket, Google Cloud Platform, or on another storage back-end by using
+[storage drivers](./storage-drivers/index.md). For more information, see
+[storage configuration options](./configuration.md#storage).
## Run an externally-accessible registry
@@ -259,8 +258,7 @@ and the relevant section of the
It is possible to use a self-signed certificate, or to use our registry
insecurely. Unless you have set up verification for your self-signed
-certificate, this is for testing only. See [run an insecure
-registry](insecure.md).
+certificate, this is for testing only. See [run an insecure registry](insecure.md).
## Run the registry as a service
diff --git a/registry/index.md b/registry/index.md
index 8d489909542f..4d6f094225ab 100644
--- a/registry/index.md
+++ b/registry/index.md
@@ -72,6 +72,5 @@ Now stop your registry and remove all data
## Next
-You should now read the [detailed introduction about the
-registry](introduction.md), or jump directly to [deployment
-instructions](deploying.md).
+You should now read the [detailed introduction about the registry](introduction.md),
+or jump directly to [deployment instructions](deploying.md).
diff --git a/registry/introduction.md b/registry/introduction.md
index 63f78c02a42f..fb1932819dd3 100644
--- a/registry/introduction.md
+++ b/registry/introduction.md
@@ -17,8 +17,8 @@ Storage itself is delegated to drivers. The default storage driver is the local
posix filesystem, which is suitable for development or small deployments.
Additional cloud-based storage drivers like S3, Microsoft Azure, OpenStack Swift,
and Aliyun OSS are also supported. People looking into using other storage
-backends may do so by writing their own driver implementing the [Storage
-API](storage-drivers/index.md).
+backends may do so by writing their own driver implementing the
+[Storage API](storage-drivers/index.md).
Since securing access to your hosted images is paramount, the Registry natively
supports TLS and basic authentication.
@@ -27,10 +27,9 @@ The Registry GitHub repository includes additional information about advanced
authentication and authorization methods. Only very large or public deployments
are expected to extend the Registry in this way.
-Finally, the Registry ships with a robust [notification
-system](notifications.md), calling webhooks in response to activity, and both
-extensive logging and reporting, mostly useful for large installations that want
-to collect metrics.
+Finally, the Registry ships with a robust [notification system](notifications.md),
+calling webhooks in response to activity, and both extensive logging and reporting,
+mostly useful for large installations that want to collect metrics.
## Understanding image naming
@@ -40,8 +39,7 @@ Image names as used in typical docker commands reflect their origin:
* `docker pull myregistrydomain:port/foo/bar` instructs docker to contact the registry located at `myregistrydomain:port` to find the image `foo/bar`
You can find out more about the various Docker commands dealing with images in
-the [official Docker engine
-documentation](/engine/reference/commandline/cli.md).
+the [official Docker engine documentation](/engine/reference/commandline/cli.md).
## Use cases
diff --git a/storage/bind-mounts.md b/storage/bind-mounts.md
index d20ca5f742b8..4c52f93d3ae2 100644
--- a/storage/bind-mounts.md
+++ b/storage/bind-mounts.md
@@ -17,8 +17,8 @@ directory's contents.
The file or directory does not need to exist on the Docker host already. It is
created on demand if it does not yet exist. Bind mounts are very performant, but
they rely on the host machine's filesystem having a specific directory structure
-available. If you are developing new Docker applications, consider using [named
-volumes](volumes.md) instead. You can't use Docker CLI commands to directly
+available. If you are developing new Docker applications, consider using
+[named volumes](volumes.md) instead. You can't use Docker CLI commands to directly
manage bind mounts.

diff --git a/swarm/install-w-machine.md b/swarm/install-w-machine.md
index ff29f1fd15e4..1c115d331dc1 100644
--- a/swarm/install-w-machine.md
+++ b/swarm/install-w-machine.md
@@ -263,6 +263,7 @@ your swarm, and start an image on your swarm.
At this point, you've installed Docker Swarm by pulling the latest image of
it from Docker Hub. Then, you built and ran a swarm on your local machine
-using VirtualBox. If you want, you can onto read an [overview of Docker Swarm
-features](index.md). Alternatively, you can develop a more in-depth view of Swarm by
-[manually installing Swarm](install-manual.md) on a network.
+using VirtualBox. If you want, you can onto read an
+[overview of Docker Swarm features](index.md). Alternatively, you can develop a
+more in-depth view of Swarm by [manually installing Swarm](install-manual.md) on
+a network.
diff --git a/swarm/networking.md b/swarm/networking.md
index c61d297f3a53..415bdd567d6d 100644
--- a/swarm/networking.md
+++ b/swarm/networking.md
@@ -11,10 +11,9 @@ includes the multi-host networking feature which allows creation of custom
container networks that span multiple Docker hosts.
Before using Swarm with a custom network, read through the conceptual
-information in [Docker container
-networking](/engine/userguide/networking/).
-You should also have walked through the [Get started with multi-host
-networking](/engine/userguide/networking/get-started-overlay/)
+information in [Docker container networking](/network/index.md).
+You should also have walked through the
+[Get started with multi-host networking](/network/network-tutorial-overlay.md)
example.
## Create a custom network in a Swarm cluster
diff --git a/swarm/swarm-api.md b/swarm/swarm-api.md
index 08f75fc49b7e..a41c7992fadc 100644
--- a/swarm/swarm-api.md
+++ b/swarm/swarm-api.md
@@ -106,8 +106,8 @@ The following two examples demonstrate how to utilize this using the existing Do
### Authenticate using registry tokens
> **Note**: This example requires Docker Engine 1.10 with auth token support.
-> For older Engine versions, refer to [authenticate using username and
-> password](swarm-api.md#authenticate-using-username-and-password).
+> For older Engine versions, refer to
+> [authenticate using username and password](swarm-api.md#authenticate-using-username-and-password).
This example uses the [`jq` command-line utility](https://stedolan.github.io/jq/).
To run this example, install `jq` using your package manager (`apt-get install jq` or `yum install jq`).
diff --git a/swarm/swarm_at_scale/deploy-app.md b/swarm/swarm_at_scale/deploy-app.md
index 779fbf0541a0..d54cc08a47f8 100644
--- a/swarm/swarm_at_scale/deploy-app.md
+++ b/swarm/swarm_at_scale/deploy-app.md
@@ -418,5 +418,5 @@ the containers at once. This extra credit
Congratulations. You have successfully walked through manually deploying a
microservice-based application to a swarm cluster. Of course, not every
deployment goes smoothly. Now that you've learned how to successfully deploy an
-application at scale, you should learn [what to consider when troubleshooting
-large applications running on a swarm cluster](troubleshoot.md).
+application at scale, you should learn what to consider when
+[troubleshooting large applications running on a swarm cluster](troubleshoot.md).
diff --git a/swarm/swarm_at_scale/deploy-infra.md b/swarm/swarm_at_scale/deploy-infra.md
index e2bd33b89017..caf5a877001b 100644
--- a/swarm/swarm_at_scale/deploy-infra.md
+++ b/swarm/swarm_at_scale/deploy-infra.md
@@ -10,8 +10,8 @@ title: Deploy application infrastructure
---
In this step, you create several Docker hosts to run your application stack on.
-Before you continue, make sure you have taken the time to [learn the application
-architecture](about.md).
+Before you continue, make sure you have taken the time to
+[learn the application architecture](about.md).
## About these instructions
diff --git a/toolbox/toolbox_install_windows.md b/toolbox/toolbox_install_windows.md
index 2d47f8605ff6..9e25ddd0cbdd 100644
--- a/toolbox/toolbox_install_windows.md
+++ b/toolbox/toolbox_install_windows.md
@@ -5,10 +5,9 @@ keywords: docker, documentation, install, toolbox, win
title: Install Docker Toolbox on Windows
---
-Docker Toolbox provides a way to use Docker on
-Windows systems that do not
-meet minimal system requirements for the [Docker Desktop for
-Windows](/docker-for-windows/index.md) app.
+Docker Toolbox provides a way to use Docker on Windows systems that do not meet
+minimal system requirements for the [Docker Desktop for Windows](/docker-for-windows/index.md)
+app.
## What you get and how it works
@@ -29,8 +28,7 @@ small Linux VM on your machine. This VM hosts Docker Engine
for you on your Windows system.
>**Tip**: One of the advantages of the newer
-[Docker Desktop for
-Windows](/docker-for-windows/index.md) solution is that
+[Docker Desktop for Windows](/docker-for-windows/index.md) solution is that
it uses native virtualization and does not require
VirtualBox to run Docker.
@@ -251,12 +249,9 @@ To uninstall Toolbox on Windows, do the following:
Successfully removed my-docker-machine
```
- This step is optional because if you plan
- to re-install Docker Machine as a part
- of [Docker Desktop for
- Windows](/docker-for-windows/index.md), you can import and
- continue to manage those machines
- through Docker.
+ This step is optional because if you plan to re-install Docker Machine as a
+ part of [Docker Desktop for Windows](/docker-for-windows/index.md), you can
+ import and continue to manage those machines through Docker.
3. Uninstall Docker Toolbox using Window's standard process for uninstalling programs through the control panel (programs and features).