diff --git a/docs/Dockerfile b/docs/Dockerfile
index c6d2450ced..4bda0271e7 100644
--- a/docs/Dockerfile
+++ b/docs/Dockerfile
@@ -1,10 +1,10 @@
-FROM docs/base:latest
+FROM docs/base:hugo-github-linking
 MAINTAINER Mary Anthony <mary@docker.com> (@moxiegirl)
 
 # To get the git info for this repo
 COPY . /src
 
-COPY . /docs/content/
+COPY . /docs/content/engine
 
 RUN svn checkout https://github.com/docker/compose/trunk/docs /docs/content/compose
 RUN svn checkout https://github.com/docker/swarm/trunk/docs /docs/content/swarm
@@ -14,16 +14,3 @@ RUN svn checkout https://github.com/kitematic/kitematic/trunk/docs /docs/content
 RUN svn checkout https://github.com/docker/tutorials/trunk/docs /docs/content/
 RUN svn checkout https://github.com/docker/opensource/trunk/docs /docs/content/opensource
 
-
-
-
-# Sed to process GitHub Markdown
-# 1-2 Remove comment code from metadata block
-# 3 Change ](/word to ](/project/ in links
-# 4 Change ](word.md) to ](/project/word)
-# 5 Remove .md extension from link text
-# 6 Change ](../ to ](/project/word) 
-# 7 Change ](../../ to ](/project/ --> not implemented
-# 
-# 
-RUN /src/pre-process.sh /docs
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
index ccf306dbde..96ded0c51a 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -41,7 +41,7 @@ on other branches by special arrangement with the Docker maintainers.
 
 If you are a new or beginner contributor, we encourage you to read through the
 [our detailed contributors
-guide](https://docs.docker.com/project/who-written-for/). The guide explains in
+guide](who-written-for.md). The guide explains in
 detail, with examples, how to contribute. If you are an experienced contributor
 this quickstart should be enough to get you started.
 
@@ -89,7 +89,7 @@ own.
 6.  Check your writing for style and mechanical errors.
 
 	Use our [documentation style
-	guide](https://docs.docker.com/project/doc-style/) to check style. There are
+	guide](doc-style.md) to check style. There are
 	several [good grammar and spelling online
 	checkers](http://www.hemingwayapp.com/) that can check your writing
 	mechanics.
@@ -109,7 +109,7 @@ links that are referenced in the documentation&mdash;there should be none.
 ## Style guide
 
 If you have questions about how to write for Docker's documentation, please see
-the [style guide](project/doc-style.md). The style guide provides
+the [style guide](doc-style.md). The style guide provides
 guidance about grammar, syntax, formatting, styling, language, or tone. If
 something isn't clear in the guide, please submit an issue to let us know or
 submit a pull request to help us improve it.
diff --git a/docs/articles/baseimages.md b/docs/articles/baseimages.md
index 8777b9c204..99cfc94744 100644
--- a/docs/articles/baseimages.md
+++ b/docs/articles/baseimages.md
@@ -10,8 +10,7 @@ parent = "smn_images"
 
 # Create a base image
 
-So you want to create your own [*Base Image*](
-/reference/glossary/#base-image)? Great!
+So you want to create your own [*Base Image*](../reference/glossary.md#base-image)? Great!
 
 The specific process will depend heavily on the Linux distribution you
 want to package. We have some examples below, and you are encouraged to
@@ -65,7 +64,7 @@ If you want to test it out, you can clone [the image repo](https://github.com/do
 
 There are lots more resources available to help you write your 'Dockerfile`.
 
-* There's a [complete guide to all the instructions](/reference/builder/) available for use in a `Dockerfile` in the reference section.
+* There's a [complete guide to all the instructions](../reference/builder.md) available for use in a `Dockerfile` in the reference section.
 * To help you write a clear, readable, maintainable `Dockerfile`, we've also
-written a [`Dockerfile` Best Practices guide](/articles/dockerfile_best-practices).
-* If your goal is to create a new Official Repository, be sure to read up on Docker's [Official Repositories](/docker-hub/official_repos/).
+written a [`Dockerfile` Best Practices guide](dockerfile_best-practices.md).
+* If your goal is to create a new Official Repository, be sure to read up on Docker's [Official Repositories](https://docs.docker.com/docker-hub/official_repos/).
diff --git a/docs/articles/basics.md b/docs/articles/basics.md
index 92f791cc36..aa38600646 100644
--- a/docs/articles/basics.md
+++ b/docs/articles/basics.md
@@ -29,7 +29,7 @@ to preface each `docker` command with `sudo`. One way to avoid having to use
 add users that will be entering `docker` commands to the 'docker' group.
 
 For more information about installing Docker or `sudo` configuration, refer to
-the [installation](/installation) instructions for your operating system.
+the [installation](../installation) instructions for your operating system.
 
 
 ## Download a pre-built image
@@ -38,7 +38,7 @@ the [installation](/installation) instructions for your operating system.
     $ docker pull ubuntu
 
 This will find the `ubuntu` image by name on
-[*Docker Hub*](/userguide/dockerrepos/#searching-for-images)
+[*Docker Hub*](../userguide/dockerrepos.md#searching-for-images)
 and download it from [Docker Hub](https://hub.docker.com) to a local
 image cache.
 
@@ -190,6 +190,6 @@ you already have, use the `docker images` command.
 You now have an image state from which you can create new instances.
 
 Read more about [*Share Images via
-Repositories*](/userguide/dockerrepos) or
+Repositories*](../userguide/dockerrepos.md) or
 continue to the complete [*Command
-Line*](/reference/commandline/cli)
+Line*](../reference/commandline/cli.md)
diff --git a/docs/articles/certificates.md b/docs/articles/certificates.md
index 1f9bb2c1f9..84235f109c 100644
--- a/docs/articles/certificates.md
+++ b/docs/articles/certificates.md
@@ -13,5 +13,5 @@ weight = 7
 
 The original content was deprecated. For information about configuring
 certificates, see  [deploying a registry
-server](http://docs.docker.com/registry/deploying/). To reach an older version
+server](http://docs.docker.com/registry/deploying). To reach an older version
 of this content, refer to an older version of the documentation. 
diff --git a/docs/articles/chef.md b/docs/articles/chef.md
index 6a30ccb781..3a23753258 100644
--- a/docs/articles/chef.md
+++ b/docs/articles/chef.md
@@ -13,7 +13,7 @@ parent = "smn_third_party"
 > **Note**:
 > Please note this is a community contributed installation path. The only
 > `official` installation is using the
-> [*Ubuntu*](/installation/ubuntulinux) installation
+> [*Ubuntu*](../installation/ubuntulinux.md) installation
 > path. This version may sometimes be out of date.
 
 ## Requirements
diff --git a/docs/articles/configuring.md b/docs/articles/configuring.md
index 77e395fbde..0c18a4fa32 100644
--- a/docs/articles/configuring.md
+++ b/docs/articles/configuring.md
@@ -57,7 +57,7 @@ These options :
 - Set `tls` to true with the server certificate and key specified using `--tlscert` and `--tlskey` respectively
 - Listen for connections on `tcp://192.168.59.3:2376`
 
-The command line reference has the [complete list of daemon flags](/reference/commandline/daemon)
+The command line reference has the [complete list of daemon flags](../reference/commandline/daemon.md)
 with explanations.
 
 ## Ubuntu
@@ -65,7 +65,7 @@ with explanations.
 As of `14.04`, Ubuntu uses Upstart as a process manager. By default, Upstart jobs
 are located in  `/etc/init` and the `docker` Upstart job can be found at `/etc/init/docker.conf`.
 
-After successfully [installing Docker for Ubuntu](/installation/ubuntulinux/),
+After successfully [installing Docker for Ubuntu](../installation/ubuntulinux.md),
 you can check the running status using Upstart in this way:
 
     $ sudo status docker
@@ -114,7 +114,7 @@ These options :
 - Set `tls` to true with the server certificate and key specified using `--tlscert` and `--tlskey` respectively
 - Listen for connections on `tcp://192.168.59.3:2376`
 
-The command line reference has the [complete list of daemon flags](/reference/commandline/daemon)
+The command line reference has the [complete list of daemon flags](../reference/commandline/daemon.md)
 with explanations.
 
 
@@ -150,8 +150,7 @@ can be located at `/var/log/upstart/docker.log`
 As of `7.x`, CentOS and RHEL use `systemd` as the process manager. As of `21`, Fedora uses
 `systemd` as its process manager.
 
-After successfully installing Docker for [CentOS](/installation/centos/)/[Red Hat Enterprise Linux]
-(/installation/rhel/)/[Fedora](/installation/fedora), you can check the running status in this way:
+After successfully installing Docker for [CentOS](../installation/centos.md)/[Red Hat Enterprise Linux](../installation/rhel.md)/[Fedora](../installation/fedora.md), you can check the running status in this way:
 
     $ sudo systemctl status docker
 
@@ -207,7 +206,7 @@ These options :
 - Set `tls` to true with the server certificate and key specified using `--tlscert` and `--tlskey` respectively
 - Listen for connections on `tcp://192.168.59.3:2376`
 
-The command line reference has the [complete list of daemon flags](/reference/commandline/daemon)
+The command line reference has the [complete list of daemon flags](../reference/commandline/daemon.md)
 with explanations.
 
 5. Save and close the file.
diff --git a/docs/articles/dockerfile_best-practices.md b/docs/articles/dockerfile_best-practices.md
index febbeb49cb..72328d0d54 100644
--- a/docs/articles/dockerfile_best-practices.md
+++ b/docs/articles/dockerfile_best-practices.md
@@ -16,7 +16,7 @@ Docker can build images automatically by reading the instructions from a
 `Dockerfile`, a text file that contains all the commands, in order, needed to
 build a given image. `Dockerfile`s adhere to a specific format and use a
 specific set of instructions. You can learn the basics on the
-[Dockerfile Reference](https://docs.docker.com/reference/builder/) page. If
+[Dockerfile Reference](../reference/builder.md) page. If
 you’re new to writing `Dockerfile`s, you should start there.
 
 This document covers the best practices and methods recommended by Docker,
@@ -27,7 +27,7 @@ if you’re creating an Official Image, you *must* adhere to these practices).
 You can see many of these practices and recommendations in action in the [buildpack-deps `Dockerfile`](https://github.com/docker-library/buildpack-deps/blob/master/jessie/Dockerfile).
 
 > Note: for more detailed explanations of any of the Dockerfile commands
->mentioned here, visit the [Dockerfile Reference](https://docs.docker.com/reference/builder/) page.
+>mentioned here, visit the [Dockerfile Reference](../reference/builder.md) page.
 
 ## General guidelines and recommendations
 
@@ -45,7 +45,7 @@ add to that directory only the files needed for building the Dockerfile. To
 increase the build's performance, you can exclude files and directories by
 adding a `.dockerignore` file to that directory as well. This file supports
 exclusion patterns similar to `.gitignore` files. For information on creating one,
-see the [.dockerignore file](../../reference/builder/#dockerignore-file).
+see the [.dockerignore file](../reference/builder.md#dockerignore-file).
 
 ### Avoid installing unnecessary packages
 
@@ -59,7 +59,7 @@ in a database image.
 In almost all cases, you should only run a single process in a single
 container. Decoupling applications into multiple containers makes it much
 easier to scale horizontally and reuse containers. If that service depends on
-another service, make use of [container linking](https://docs.docker.com/userguide/dockerlinks/).
+another service, make use of [container linking](../userguide/dockerlinks.md).
 
 ### Minimize the number of layers
 
@@ -128,7 +128,7 @@ various instructions available for use in a `Dockerfile`.
 
 ### FROM
 
-[Dockerfile reference for the FROM instruction](https://docs.docker.com/reference/builder/#from)
+[Dockerfile reference for the FROM instruction](../reference/builder.md#from)
 
 Whenever possible, use current Official Repositories as the basis for your
 image. We recommend the [Debian image](https://registry.hub.docker.com/_/debian/)
@@ -137,7 +137,7 @@ since it’s very tightly controlled and kept extremely minimal (currently under
 
 ### RUN
 
-[Dockerfile reference for the RUN instruction](https://docs.docker.com/reference/builder/#run)
+[Dockerfile reference for the RUN instruction](../reference/builder.md#run)
 
 As always, to make your `Dockerfile` more readable, understandable, and
 maintainable, split long or complex `RUN` statements on multiple lines separated
@@ -233,7 +233,7 @@ keep the image size down. Since the `RUN` statement starts with
 
 ### CMD
 
-[Dockerfile reference for the CMD instruction](https://docs.docker.com/reference/builder/#cmd)
+[Dockerfile reference for the CMD instruction](../reference/builder.md#cmd)
 
 The `CMD` instruction should be used to run the software contained by your
 image, along with any arguments. `CMD` should almost always be used in the
@@ -247,13 +247,13 @@ perl, etc), for example, `CMD ["perl", "-de0"]`, `CMD ["python"]`, or
 `CMD [“php”, “-a”]`. Using this form means that when you execute something like
 `docker run -it python`, you’ll get dropped into a usable shell, ready to go.
 `CMD` should rarely be used in the manner of `CMD [“param”, “param”]` in
-conjunction with [`ENTRYPOINT`](https://docs.docker.com/reference/builder/#entrypoint), unless
+conjunction with [`ENTRYPOINT`](../reference/builder.md#entrypoint), unless
 you and your expected users are already quite familiar with how `ENTRYPOINT`
 works.
 
 ### EXPOSE
 
-[Dockerfile reference for the EXPOSE instruction](https://docs.docker.com/reference/builder/#expose)
+[Dockerfile reference for the EXPOSE instruction](../reference/builder.md#expose)
 
 The `EXPOSE` instruction indicates the ports on which a container will listen
 for connections. Consequently, you should use the common, traditional port for
@@ -268,7 +268,7 @@ the recipient container back to the source (ie, `MYSQL_PORT_3306_TCP`).
 
 ### ENV
 
-[Dockerfile reference for the ENV instruction](https://docs.docker.com/reference/builder/#env)
+[Dockerfile reference for the ENV instruction](../reference/builder.md#env)
 
 In order to make new software easier to run, you can use `ENV` to update the
 `PATH` environment variable for the software your container installs. For
@@ -293,8 +293,8 @@ auto-magically bump the version of the software in your container.
 
 ### ADD or COPY
 
-[Dockerfile reference for the ADD instruction](https://docs.docker.com/reference/builder/#add)<br/>
-[Dockerfile reference for the COPY instruction](https://docs.docker.com/reference/builder/#copy)
+[Dockerfile reference for the ADD instruction](../reference/builder.md#add)<br/>
+[Dockerfile reference for the COPY instruction](../reference/builder.md#copy)
 
 Although `ADD` and `COPY` are functionally similar, generally speaking, `COPY`
 is preferred. That’s because it’s more transparent than `ADD`. `COPY` only
@@ -339,7 +339,7 @@ auto-extraction capability, you should always use `COPY`.
 
 ### ENTRYPOINT
 
-[Dockerfile reference for the ENTRYPOINT instruction](https://docs.docker.com/reference/builder/#entrypoint)
+[Dockerfile reference for the ENTRYPOINT instruction](../reference/builder.md#entrypoint)
 
 The best use for `ENTRYPOINT` is to set the image's main command, allowing that
 image to be run as though it was that command (and then use `CMD` as the
@@ -389,7 +389,7 @@ exec "$@"
 > This script uses [the `exec` Bash command](http://wiki.bash-hackers.org/commands/builtin/exec)
 > so that the final running application becomes the container's PID 1. This allows
 > the application to receive any Unix signals sent to the container.
-> See the [`ENTRYPOINT`](https://docs.docker.com/reference/builder/#entrypoint)
+> See the [`ENTRYPOINT`](../reference/builder.md#entrypoint)
 > help for more details.
 
 
@@ -415,7 +415,7 @@ Lastly, it could also be used to start a totally different tool, such as Bash:
 
 ### VOLUME
 
-[Dockerfile reference for the VOLUME instruction](https://docs.docker.com/reference/builder/#volume)
+[Dockerfile reference for the VOLUME instruction](../reference/builder.md#volume)
 
 The `VOLUME` instruction should be used to expose any database storage area,
 configuration storage, or files/folders created by your docker container. You
@@ -424,7 +424,7 @@ parts of your image.
 
 ### USER
 
-[Dockerfile reference for the USER instruction](https://docs.docker.com/reference/builder/#user)
+[Dockerfile reference for the USER instruction](../reference/builder.md#user)
 
 If a service can run without privileges, use `USER` to change to a non-root
 user. Start by creating the user and group in the `Dockerfile` with something
@@ -445,7 +445,7 @@ and forth frequently.
 
 ### WORKDIR
 
-[Dockerfile reference for the WORKDIR instruction](https://docs.docker.com/reference/builder/#workdir)
+[Dockerfile reference for the WORKDIR instruction](../reference/builder.md#workdir)
 
 For clarity and reliability, you should always use absolute paths for your
 `WORKDIR`. Also, you should use `WORKDIR` instead of  proliferating
@@ -454,7 +454,7 @@ troubleshoot, and maintain.
 
 ### ONBUILD
 
-[Dockerfile reference for the ONBUILD instruction](https://docs.docker.com/reference/builder/#onbuild)
+[Dockerfile reference for the ONBUILD instruction](../reference/builder.md#onbuild)
 
 An `ONBUILD` command executes after the current `Dockerfile` build completes.
 `ONBUILD` executes in any child image derived `FROM` the current image.  Think
@@ -488,8 +488,8 @@ These Official Repositories have exemplary `Dockerfile`s:
 
 ## Additional resources:
 
-* [Dockerfile Reference](https://docs.docker.com/reference/builder/)
-* [More about Base Images](https://docs.docker.com/articles/baseimages/)
+* [Dockerfile Reference](../reference/builder.md)
+* [More about Base Images](baseimages.md)
 * [More about Automated Builds](https://docs.docker.com/docker-hub/builds/)
 * [Guidelines for Creating Official
 Repositories](https://docs.docker.com/docker-hub/official_repos/)
diff --git a/docs/articles/host_integration.md b/docs/articles/host_integration.md
index 1039a8def4..b1c145af24 100644
--- a/docs/articles/host_integration.md
+++ b/docs/articles/host_integration.md
@@ -12,7 +12,7 @@ weight = 99
 # Automatically start containers
 
 As of Docker 1.2,
-[restart policies](/reference/run/#restart-policies-restart) are the
+[restart policies](../reference/run.md#restart-policies-restart) are the
 built-in Docker mechanism for restarting containers when they exit. If set,
 restart policies will be used when the Docker daemon starts up, as typically
 happens after a system boot. Restart policies will ensure that linked containers
diff --git a/docs/articles/networking.md b/docs/articles/networking.md
index 6d9fcf79b4..e1f7047cb1 100644
--- a/docs/articles/networking.md
+++ b/docs/articles/networking.md
@@ -30,7 +30,7 @@ range from `02:42:ac:11:00:00` to `02:42:ac:11:ff:ff`.
 > and options for Docker. In most cases you won't need this information.
 > If you're looking to get started with a simpler explanation of Docker
 > networking and an introduction to the concept of container linking see
-> the [Docker User Guide](/userguide/dockerlinks/).
+> the [Docker User Guide](../userguide/dockerlinks.md).
 
 But `docker0` is no ordinary interface.  It is a virtual *Ethernet
 bridge* that automatically forwards packets between any other network
@@ -357,7 +357,7 @@ services.  If the Docker daemon is running with both `--icc=false` and
 `ACCEPT` rules so that the new container can connect to the ports
 exposed by the other container — the ports that it mentioned in the
 `EXPOSE` lines of its `Dockerfile`.  Docker has more documentation on
-this subject — see the [linking Docker containers](/userguide/dockerlinks)
+this subject — see the [linking Docker containers](../userguide/dockerlinks.md)
 page for further details.
 
 > **Note**:
@@ -425,7 +425,7 @@ machine that the Docker server creates when it starts:
 
 But if you want containers to accept incoming connections, you will need
 to provide special options when invoking `docker run`.  These options
-are covered in more detail in the [Docker User Guide](/userguide/dockerlinks)
+are covered in more detail in the [Docker User Guide](../userguide/dockerlinks.md)
 page.  There are two approaches.
 
 First, you can supply `-P` or `--publish-all=true|false` to `docker run` which
@@ -489,7 +489,7 @@ connect to a local container exposed port through the commonly used loopback
 address: this alternative is preferred for performance reasons.
 
 Again, this topic is covered without all of these low-level networking
-details in the [Docker User Guide](/userguide/dockerlinks/) document if you
+details in the [Docker User Guide](../userguide/dockerlinks.md) document if you
 would like to use that as your port redirection reference instead.
 
 ## IPv6
@@ -538,7 +538,7 @@ want to configure `eth0` via Router Advertisements you should set:
 
     $ sysctl net.ipv6.conf.eth0.accept_ra=2
 
-![](/article-img/ipv6_basic_host_config.svg)
+![](../article-img/ipv6_basic_host_config.svg)
 
 Every new container will get an IPv6 address from the defined subnet. Further
 a default route will be added on `eth0` in the container via the address
@@ -568,7 +568,7 @@ Often servers or virtual machines get a `/64` IPv6 subnet assigned (e.g.
 Docker a `/80` subnet while using a separate `/80` subnet for other
 applications on the host:
 
-![](/article-img/ipv6_slash64_subnet_config.svg)
+![](../article-img/ipv6_slash64_subnet_config.svg)
 
 In this setup the subnet `2001:db8:23:42::/80` with a range from `2001:db8:23:42:0:0:0:0`
 to `2001:db8:23:42:0:ffff:ffff:ffff` is attached to `eth0`, with the host listening
@@ -606,7 +606,7 @@ is connected to `eth0`. This means all devices (containers) with the addresses
 from the Docker subnet are expected to be found within the router subnet.
 Therefore the router thinks it can talk to these containers directly.
 
-![](/article-img/ipv6_ndp_proxying.svg)
+![](../article-img/ipv6_ndp_proxying.svg)
 
 As soon as the router wants to send an IPv6 packet to the first container it
 will transmit a neighbor solicitation request, asking, who has
@@ -645,7 +645,7 @@ Using routable IPv6 addresses allows you to realize communication between
 containers on different hosts. Let's have a look at a simple Docker IPv6 cluster
 example:
 
-![](/article-img/ipv6_switched_network_example.svg)
+![](../article-img/ipv6_switched_network_example.svg)
 
 The Docker hosts are in the `2001:db8:0::/64` subnet. Host1 is configured
 to provide addresses from the `2001:db8:1::/64` subnet to its containers. It
@@ -695,7 +695,7 @@ routing information about the Docker subnets. When you add or remove a host to
 this environment you just have to update the routing table in the router - not
 on every host.
 
-![](/article-img/ipv6_routed_network_example.svg)
+![](../article-img/ipv6_routed_network_example.svg)
 
 In this scenario containers of the same host can communicate directly with each
 other. The traffic between containers on different hosts will be routed via
diff --git a/docs/articles/puppet.md b/docs/articles/puppet.md
index 34f3712ddc..21fa86fc71 100644
--- a/docs/articles/puppet.md
+++ b/docs/articles/puppet.md
@@ -12,7 +12,7 @@ parent = "smn_third_party"
 
 > *Note:* Please note this is a community contributed installation path. The
 > only `official` installation is using the
-> [*Ubuntu*](/installation/ubuntulinux) installation
+> [*Ubuntu*](../installation/ubuntulinux.md) installation
 > path. This version may sometimes be out of date.
 
 ## Requirements
diff --git a/docs/articles/runmetrics.md b/docs/articles/runmetrics.md
index 13fa77b177..4b2cc5a775 100644
--- a/docs/articles/runmetrics.md
+++ b/docs/articles/runmetrics.md
@@ -26,7 +26,7 @@ The following is a sample output from the `docker stats` command
     redis2              0.07%               2.746 MB / 64 MB      4.29%               1.266 KB / 648 B    12.4 MB / 0 B
 
 
-The [docker stats](/reference/commandline/stats/) reference page has
+The [docker stats](../reference/commandline/stats.md) reference page has
 more details about the `docker stats` command.
 
 ## Control groups
@@ -335,7 +335,7 @@ layer; you will also have to add traffic going through the userland
 proxy.
 
 Then, you will need to check those counters on a regular basis. If you
-happen to use `collectd`, there is a [nice plugin](https://collectd.org/wiki/index.php/Plugin:IPTables)
+happen to use `collectd`, there is a [nice plugin](https://collectd.org/wiki/index.php/Table_of_Plugins)
 to automate iptables counters collection.
 
 ### Interface-level counters
diff --git a/docs/articles/security.md b/docs/articles/security.md
index a0900c8970..536770a783 100644
--- a/docs/articles/security.md
+++ b/docs/articles/security.md
@@ -39,7 +39,7 @@ of another container. Of course, if the host system is setup
 accordingly, containers can interact with each other through their
 respective network interfaces — just like they can interact with
 external hosts. When you specify public ports for your containers or use
-[*links*](/userguide/dockerlinks)
+[*links*](../userguide/dockerlinks.md)
 then IP traffic is allowed between containers. They can ping each other,
 send/receive UDP packets, and establish TCP connections, but that can be
 restricted if necessary. From a network architecture point of view, all
@@ -115,7 +115,7 @@ However, if you do that, being aware of the above mentioned security
 implication, you should ensure that it will be reachable only from a
 trusted network or VPN; or protected with e.g., `stunnel` and client SSL
 certificates. You can also secure them with [HTTPS and
-certificates](/articles/https/).
+certificates](../articles/https/).
 
 The daemon is also potentially vulnerable to other inputs, such as image
 loading from either disk with 'docker load', or from the network with
diff --git a/docs/articles/using_supervisord.md b/docs/articles/using_supervisord.md
index dffe35448d..93c288b0b3 100644
--- a/docs/articles/using_supervisord.md
+++ b/docs/articles/using_supervisord.md
@@ -10,8 +10,9 @@ parent = "smn_third_party"
 
 # Using Supervisor with Docker
 
-> **Note**: **If you don't like sudo** then see [*Giving non-root
-> access*](/installation/binaries/#giving-non-root-access)
+> **Note**:
+> - **If you don't like sudo** then see [*Giving non-root
+>   access*](../installation/binaries.md#giving-non-root-access)
 
 Traditionally a Docker container runs a single process when it is
 launched, for example an Apache daemon or a SSH server daemon. Often
diff --git a/docs/examples/apt-cacher-ng.md b/docs/examples/apt-cacher-ng.md
index e0465ceb1a..a8e2957c5f 100644
--- a/docs/examples/apt-cacher-ng.md
+++ b/docs/examples/apt-cacher-ng.md
@@ -10,10 +10,11 @@ parent = "smn_applied"
 
 # Dockerizing an apt-cacher-ng service
 
-> **Note**: **If you don't like sudo** then see [*Giving non-root
-> access*](/installation/binaries/#giving-non-root-access).
-> **If you're using OS X or Docker via TCP** then you shouldn't use
-> sudo.
+> **Note**: 
+> - **If you don't like sudo** then see [*Giving non-root
+>   access*](../installation/binaries.md#giving-non-root-access).
+> - **If you're using OS X 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/docs/examples/couchdb_data_volumes.md b/docs/examples/couchdb_data_volumes.md
index f0d1a3764d..5493af839d 100644
--- a/docs/examples/couchdb_data_volumes.md
+++ b/docs/examples/couchdb_data_volumes.md
@@ -10,8 +10,9 @@ parent = "smn_applied"
 
 # Dockerizing a CouchDB service
 
-> **Note**: **If you don't like sudo** then see [*Giving non-root
-> access*](/installation/binaries/#giving-non-root-access)
+> **Note**: 
+> - **If you don't like sudo** then see [*Giving non-root
+>   access*](../installation/binaries.md#giving-non-root-access)
 
 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/docs/examples/index.md b/docs/examples/index.md
index c2ab8ac41a..907d5aaede 100644
--- a/docs/examples/index.md
+++ b/docs/examples/index.md
@@ -14,10 +14,10 @@ weight = 8
 
 This section contains the following:
 
-* [Dockerizing MongoDB](/examples/mongodb/)
-* [Dockerizing PostgreSQL](/examples/postgresql_service/)    
-* [Dockerizing a CouchDB service](/examples/couchdb_data_volumes/)         
-* [Dockerizing a Node.js web app](/examples/nodejs_web_app/)
-* [Dockerizing a Redis service](/examples/running_redis_service/)
-* [Dockerizing an apt-cacher-ng service](/examples/apt-cacher-ng/)
-* [Dockerizing applications: A 'Hello world'](/userguide/dockerizing)
+* [Dockerizing MongoDB](mongodb.md)
+* [Dockerizing PostgreSQL](postgresql_service.md)    
+* [Dockerizing a CouchDB service](couchdb_data_volumes.md)         
+* [Dockerizing a Node.js web app](nodejs_web_app.md)
+* [Dockerizing a Redis service](running_redis_service.md)
+* [Dockerizing an apt-cacher-ng service](apt-cacher-ng.md)
+* [Dockerizing applications: A 'Hello world'](../userguide/dockerizing.md)
diff --git a/docs/examples/mongodb.md b/docs/examples/mongodb.md
index 7bbba741e3..c1ba682c71 100644
--- a/docs/examples/mongodb.md
+++ b/docs/examples/mongodb.md
@@ -29,7 +29,7 @@ instances will bring several benefits, such as:
 > **Note:**
 >
 > If you do **_not_** like `sudo`, you might want to check out:
-> [*Giving non-root access*](/installation/binaries/#giving-non-root-access).
+> [*Giving non-root access*](../installation/binaries.md#giving-non-root-access).
 
 ## Creating a Dockerfile for MongoDB
 
@@ -172,6 +172,6 @@ the exposed port to two different ports on the host
     $ mongo --port 28001
     $ mongo --port 28002
 
- - [Linking containers](/userguide/dockerlinks)
- - [Cross-host linking containers](/articles/ambassador_pattern_linking/)
- - [Creating an Automated Build](/docker-io/builds/#automated-builds)
+ - [Linking containers](../userguide/dockerlinks.md)
+ - [Cross-host linking containers](../articles/ambassador_pattern_linking.md)
+ - [Creating an Automated Build](https://docs.docker.com/docker-hub/builds/)
diff --git a/docs/examples/nodejs_web_app.md b/docs/examples/nodejs_web_app.md
index 84cdf4ccd5..a1aa004189 100644
--- a/docs/examples/nodejs_web_app.md
+++ b/docs/examples/nodejs_web_app.md
@@ -10,12 +10,14 @@ parent = "smn_applied"
 
 # Dockerizing a Node.js web app
 
-> **Note**: **If you don't like sudo** then see [*Giving non-root
-> access*](/installation/binaries/#giving-non-root-access)
+> **Note**: 
+> - **If you don't like sudo** then see [*Giving non-root
+>   access*](../installation/binaries.md#giving-non-root-access)
 
-In this example, we are going to learn how to build a Docker image to run a
-simple Node.js "hello world" web application on CentOS. You can get the full source code at
-[https://github.com/enokd/docker-node-hello/](https://github.com/enokd/docker-node-hello/).
+The goal of this example is to show you how you can build your own
+Docker images from a parent image using a `Dockerfile`
+. We will do that by making a simple Node.js hello world web
+application running on CentOS. You can get the full source code at[https://github.com/enokd/docker-node-hello/](https://github.com/enokd/docker-node-hello/).
 
 ## Create Node.js app
 
diff --git a/docs/examples/postgresql_service.md b/docs/examples/postgresql_service.md
index b0d35a5c85..d5092e30ac 100644
--- a/docs/examples/postgresql_service.md
+++ b/docs/examples/postgresql_service.md
@@ -10,8 +10,9 @@ parent = "smn_applied"
 
 # Dockerizing PostgreSQL
 
-> **Note**: **If you don't like sudo** then see [*Giving non-root
-> access*](/installation/binaries/#giving-non-root-access)
+> **Note**: 
+> - **If you don't like sudo** then see [*Giving non-root
+>   access*](../installation/binaries.md#giving-non-root-access)
 
 ## Installing PostgreSQL on Docker
 
@@ -84,7 +85,7 @@ And run the PostgreSQL server container (in the foreground):
     $ docker run --rm -P --name pg_test eg_postgresql
 
 There are 2 ways to connect to the PostgreSQL server. We can use [*Link
-Containers*](/userguide/dockerlinks), or we can access it from our host
+Containers*](../userguide/dockerlinks.md), or we can access it from our host
 (or the network).
 
 > **Note**:
diff --git a/docs/extend/index.md b/docs/extend/index.md
index fd847dd912..61afb720ca 100644
--- a/docs/extend/index.md
+++ b/docs/extend/index.md
@@ -15,7 +15,7 @@ weight = 6
 
 Currently, you can extend Docker by adding a plugin. This section contains the following topics:
 
-* [Understand Docker plugins](/extend/plugins.md)
-* [Write a volume plugin](/extend/plugins_volume.md)
-* [Write a network plugin](/extend/plugins_network.md)
-* [Docker plugin API](/extend/plugin_api.md)
+* [Understand Docker plugins](plugins.md)
+* [Write a volume plugin](plugins_volume.md)
+* [Write a network plugin](plugins_network.md)
+* [Docker plugin API](plugin_api.md)
diff --git a/docs/extend/plugin_api.md b/docs/extend/plugin_api.md
index 7109aa7def..8e2862f6cb 100644
--- a/docs/extend/plugin_api.md
+++ b/docs/extend/plugin_api.md
@@ -16,7 +16,7 @@ Docker Engine.
 
 This page is intended for people who want to develop their own Docker plugin.
 If you just want to learn about or use Docker plugins, look
-[here](/extend/plugins).
+[here](plugins.md).
 
 ## What plugins are
 
diff --git a/docs/extend/plugins.md b/docs/extend/plugins.md
index c526773958..e04de760d3 100644
--- a/docs/extend/plugins.md
+++ b/docs/extend/plugins.md
@@ -17,9 +17,9 @@ plugins.
 ## Types of plugins
 
 Plugins extend Docker's functionality.  They come in specific types.  For
-example, a [volume plugin](/extend/plugins_volume.md) might enable Docker
+example, a [volume plugin](plugins_volume.md) might enable Docker
 volumes to persist across multiple Docker hosts and a 
-[network plugin](/extend/plugins_network.md) might provide network plumbing
+[network plugin](plugins_network.md) might provide network plumbing
 using a favorite networking technology, such as vxlan overlay, ipvlan, EVPN, etc.
 
 Currently Docker supports volume and network driver plugins. In the future it
@@ -73,4 +73,4 @@ of the plugin for help. The Docker team may not be able to assist you.
 ## Writing a plugin
 
 If you are interested in writing a plugin for Docker, or seeing how they work
-under the hood, see the [docker plugins reference](/extend/plugin_api).
+under the hood, see the [docker plugins reference](plugin_api.md).
diff --git a/docs/extend/plugins_network.md b/docs/extend/plugins_network.md
index c2175d2c4f..335ee9d04a 100644
--- a/docs/extend/plugins_network.md
+++ b/docs/extend/plugins_network.md
@@ -1,10 +1,21 @@
+<!--[metadata]>
++++
+title = "Docker network driver plugins"
+description = "Network drive plugins."
+keywords = ["Examples, Usage, plugins, docker, documentation, user guide"]
+[menu.main]
+parent = "mn_extend"
+weight=-1
++++
+<![end-metadata]-->
+
 # Docker network driver plugins
 
-Docker supports network driver plugins via 
-[LibNetwork](https://github.com/docker/libnetwork). Network driver plugins are 
-implemented as "remote drivers" for LibNetwork, which shares plugin 
-infrastructure with Docker. In effect this means that network driver plugins 
-are activated in the same way as other plugins, and use the same kind of 
+Docker supports network driver plugins via
+[LibNetwork](https://github.com/docker/libnetwork). Network driver plugins are
+implemented as "remote drivers" for LibNetwork, which shares plugin
+infrastructure with Docker. In effect this means that network driver plugins
+are activated in the same way as other plugins, and use the same kind of
 protocol.
 
 ## Using network driver plugins
@@ -18,7 +29,7 @@ commands. For example,
 
     docker network create -d weave mynet
 
-Some network driver plugins are listed in [plugins.md](/docs/extend/plugins.md)
+Some network driver plugins are listed in [plugins](plugins.md)
 
 The network thus created is owned by the plugin, so subsequent commands
 referring to that network will also be run through the plugin such as,
diff --git a/docs/extend/plugins_volume.md b/docs/extend/plugins_volume.md
index 41c4dd2194..6ab4bfbd7f 100644
--- a/docs/extend/plugins_volume.md
+++ b/docs/extend/plugins_volume.md
@@ -12,7 +12,7 @@ parent = "mn_extend"
 
 Docker volume plugins enable Docker deployments to be integrated with external
 storage systems, such as Amazon EBS, and enable data volumes to persist beyond
-the lifetime of a single Docker host. See the [plugin documentation](/extend/plugins)
+the lifetime of a single Docker host. See the [plugin documentation](plugins.md)
 for more information.
 
 # Command-line changes
diff --git a/docs/installation/SUSE.md b/docs/installation/SUSE.md
index 397d02c6ad..bacf166cf6 100644
--- a/docs/installation/SUSE.md
+++ b/docs/installation/SUSE.md
@@ -91,7 +91,7 @@ flag is set to `yes` like so:
 
 If you need to add an HTTP Proxy, set a different directory or partition for the
 Docker runtime files, or make other customizations, read the systemd article to
-learn how to [customize your systemd Docker daemon options](/articles/systemd/).
+learn how to [customize your systemd Docker daemon options](../articles/systemd.md).
 
 ## Uninstallation
 
@@ -113,4 +113,4 @@ You can find more details about Docker on openSUSE or SUSE Linux Enterprise in
 the [Docker quick start guide](https://www.suse.com/documentation/sles-12/dockerquick/data/dockerquick.
 html) on the SUSE website. The document targets SUSE Linux Enterprise, but its contents apply also to openSUSE.
 
-Continue to the [User Guide](/userguide/).
+Continue to the [User Guide](../userguide/).
diff --git a/docs/installation/archlinux.md b/docs/installation/archlinux.md
index c619c730dd..509742a5d4 100644
--- a/docs/installation/archlinux.md
+++ b/docs/installation/archlinux.md
@@ -64,7 +64,7 @@ To start on system boot:
 
 If you need to add an HTTP Proxy, set a different directory or partition for the
 Docker runtime files, or make other customizations, read our systemd article to
-learn how to [customize your systemd Docker daemon options](/articles/systemd/).
+learn how to [customize your systemd Docker daemon options](../articles/systemd.md).
 
 ## Running Docker with a manually-defined network
 
diff --git a/docs/installation/azure.md b/docs/installation/azure.md
index 75c5726feb..865e63d1f8 100644
--- a/docs/installation/azure.md
+++ b/docs/installation/azure.md
@@ -24,7 +24,7 @@ machines on Azure:
 
 ## What next?
 
-Continue with the [User Guide](/userguide/).
+Continue with the [User Guide](../userguide/).
 
 [0]: http://azure.microsoft.com/
 [1]: http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-docker-vm-extension/
diff --git a/docs/installation/binaries.md b/docs/installation/binaries.md
index ed02fb8a46..f9b2d2084e 100644
--- a/docs/installation/binaries.md
+++ b/docs/installation/binaries.md
@@ -37,7 +37,7 @@ runtime:
 ## Check kernel dependencies
 
 Docker in daemon mode has specific kernel requirements. For details,
-check your distribution in [*Installation*](../#installation-list).
+check your distribution in [*Installation*](../installation#installation-list).
 
 A 3.10 Linux kernel is the minimum requirement for Docker.
 Kernels older than 3.10 lack some of the features required to run Docker
@@ -192,8 +192,7 @@ need to add `sudo` to all the client commands.
 
 > **Warning**: 
 > The *docker* group (or the group specified with `-G`) is root-equivalent;
-> see [*Docker Daemon Attack Surface*](
-> /articles/security/#docker-daemon-attack-surface) details.
+> see [*Docker Daemon Attack Surface*](../articles/security.md#docker-daemon-attack-surface) details.
 
 ## Upgrades
 
@@ -212,4 +211,4 @@ Then follow the regular installation steps.
     # run a container and open an interactive shell in the container
     $ sudo ./docker run -i -t ubuntu /bin/bash
 
-Continue with the [User Guide](/userguide/).
+Continue with the [User Guide](../userguide).
diff --git a/docs/installation/centos.md b/docs/installation/centos.md
index 99b653d4a4..83e58777e3 100644
--- a/docs/installation/centos.md
+++ b/docs/installation/centos.md
@@ -134,7 +134,7 @@ makes the ownership of the Unix socket read/writable by the `docker` group.
 
 >**Warning**: The `docker` group is equivalent to the `root` user; For details
 >on how this impacts security in your system, see [*Docker Daemon Attack
->Surface*](/articles/security/#docker-daemon-attack-surface) for details.
+>Surface*](../articles/security.md#docker-daemon-attack-surface) for details.
 
 To create the `docker` group and add your user:
 
@@ -160,7 +160,7 @@ To ensure Docker starts when you boot your system, do the following:
 
 If you need to add an HTTP Proxy, set a different directory or partition for the
 Docker runtime files, or make other customizations, read our Systemd article to
-learn how to [customize your Systemd Docker daemon options](/articles/systemd/).
+learn how to [customize your Systemd Docker daemon options](../articles/systemd.md).
 
 
 ## Uninstall
diff --git a/docs/installation/debian.md b/docs/installation/debian.md
index a94232859e..1c9267f00d 100644
--- a/docs/installation/debian.md
+++ b/docs/installation/debian.md
@@ -123,8 +123,7 @@ use the `-G` flag to specify an alternative group.
 
 > **Warning**:
 > The `docker` group (or the group specified with the `-G` flag) is
-> `root`-equivalent; see [*Docker Daemon Attack Surface*](
-> /articles/security/#docker-daemon-attack-surface) details.
+> `root`-equivalent; see [*Docker Daemon Attack Surface*](../articles/security.md#docker-daemon-attack-surface) details.
 
 **Example:**
 
@@ -166,4 +165,4 @@ You must delete the user created configuration files manually.
 
 ## What next?
 
-Continue with the [User Guide](/userguide/).
+Continue with the [User Guide](../userguide/).
diff --git a/docs/installation/fedora.md b/docs/installation/fedora.md
index b0f74dd06d..ed62b4f3eb 100644
--- a/docs/installation/fedora.md
+++ b/docs/installation/fedora.md
@@ -141,7 +141,7 @@ makes the ownership of the Unix socket read/writable by the `docker` group.
 
 >**Warning**: The `docker` group is equivalent to the `root` user; For details
 >on how this impacts security in your system, see [*Docker Daemon Attack
->Surface*](/articles/security/#docker-daemon-attack-surface) for details.
+>Surface*](../articles/security.md#docker-daemon-attack-surface) for details.
 
 To create the `docker` group and add your user:
 
@@ -167,7 +167,7 @@ To ensure Docker starts when you boot your system, do the following:
 
 If you need to add an HTTP Proxy, set a different directory or partition for the
 Docker runtime files, or make other customizations, read our Systemd article to
-learn how to [customize your Systemd Docker daemon options](/articles/systemd/).
+learn how to [customize your Systemd Docker daemon options](../articles/systemd.md).
 
 ## Running Docker with a manually-defined network
 
diff --git a/docs/installation/frugalware.md b/docs/installation/frugalware.md
index d8c3ac6dc5..090fca5a79 100644
--- a/docs/installation/frugalware.md
+++ b/docs/installation/frugalware.md
@@ -53,7 +53,7 @@ To start on system boot:
 
 If you need to add an HTTP Proxy, set a different directory or partition for the
 Docker runtime files, or make other customizations, read our systemd article to
-learn how to [customize your systemd Docker daemon options](/articles/systemd/).
+learn how to [customize your systemd Docker daemon options](../articles/systemd.md).
 
 ## Uninstallation
 
diff --git a/docs/installation/gentoolinux.md b/docs/installation/gentoolinux.md
index f954e60ed5..6e2ef3f70e 100644
--- a/docs/installation/gentoolinux.md
+++ b/docs/installation/gentoolinux.md
@@ -100,7 +100,7 @@ To start on system boot:
    
 If you need to add an HTTP Proxy, set a different directory or partition for the
 Docker runtime files, or make other customizations, read our systemd article to
-learn how to [customize your systemd Docker daemon options](/articles/systemd/).
+learn how to [customize your systemd Docker daemon options](../articles/systemd.md).
 
 ## Uninstallation
 
diff --git a/docs/installation/index.md b/docs/installation/index.md
index 6a090b1e5d..d1b25836b5 100644
--- a/docs/installation/index.md
+++ b/docs/installation/index.md
@@ -11,31 +11,31 @@ keywords = ["Docker install "]
 Docker Engine is supported on Linux, Cloud, Windows, and OS X. Installation instructions are available for the following: 
 
 ## On Linux
-* [Arch Linux](archlinux)
-* [CentOS](centos)
-* [CRUX Linux](cruxlinux)
-* [Debian](debian)
-* [Fedora](fedora)
-* [FrugalWare](frugalware)
-* [Gentoo](gentoolinux)
-* [Oracle Linux](oracle)
-* [Red Hat Enterprise Linux](rhel)
-* [openSUSE and SUSE Linux Enterprise](SUSE)
-* [Ubuntu](ubuntulinux)
+* [Arch Linux](archlinux.md)
+* [CentOS](centos.md)
+* [CRUX Linux](cruxlinux.md)
+* [Debian](debian.md)
+* [Fedora](fedora.md)
+* [FrugalWare](frugalware.md)
+* [Gentoo](gentoolinux.md)
+* [Oracle Linux](oracle.md)
+* [Red Hat Enterprise Linux](rhel.md)
+* [openSUSE and SUSE Linux Enterprise](SUSE.md)
+* [Ubuntu](ubuntulinux.md)
 
-If your linux distribution is not listed above, don't give up yet. To try out Docker on a distribution that is not listed above, go here: [Installation from binaries](binaries).
+If your linux distribution is not listed above, don't give up yet. To try out Docker on a distribution that is not listed above, go here: [Installation from binaries](binaries.md).
 
 ## On Cloud
-* [Amazon EC2 Installation](amazon)
-* [Install on Joyent Public Cloud](joyent)
-* [Google Cloud Platform](google)
-* [IBM SoftLayer](softlayer)
-* [Microsoft Azure platform](azure)
-* [Rackspace Cloud](rackspace)
+* [Amazon EC2 Installation](amazon.md)
+* [Install on Joyent Public Cloud](joyent.md)
+* [Google Cloud Platform](google.md)
+* [IBM SoftLayer](softlayer.md)
+* [Microsoft Azure platform](azure.md)
+* [Rackspace Cloud](rackspace.md)
 
 ## On OSX and Windows
-* [Mac OS X](mac)
-* [Windows](windows)
+* [Mac OS X](mac.md)
+* [Windows](windows.md)
 
 ## The Docker Archives 
 Instructions for installing prior releases of Docker can be found in the following docker archives:
diff --git a/docs/installation/joyent.md b/docs/installation/joyent.md
index 181a4fd4ad..a94a50b236 100644
--- a/docs/installation/joyent.md
+++ b/docs/installation/joyent.md
@@ -20,4 +20,4 @@ Joyent provides a `sdc-docker-setup.sh` script that makes it easy to use Docker
 with Joyent. The [Docker API guide for
 Triton](https://apidocs.joyent.com/docker) has details on using this script.
 
-Once you are up and running with Joyent, continue with the [Docker user guide](/userguide/). 
\ No newline at end of file
+Once you are up and running with Joyent, continue with the [Docker user guide](../userguide/). 
\ No newline at end of file
diff --git a/docs/installation/mac.md b/docs/installation/mac.md
index ced46d76c1..de9d01b970 100644
--- a/docs/installation/mac.md
+++ b/docs/installation/mac.md
@@ -44,14 +44,14 @@ containers run directly on your localhost. This means you can address ports on a
 Docker container using standard localhost addressing such as `localhost:8000` or
 `0.0.0.0:8376`.
 
-![Linux Architecture Diagram](/installation/images/linux_docker_host.svg)
+![Linux Architecture Diagram](images/linux_docker_host.svg)
 
 In an OS X installation, the `docker` daemon is running inside a Linux VM called
 `default`. The `default` is a lightweight Linux VM made specifically to run
 the Docker daemon on Mac OS X. The VM runs completely from RAM, is a small ~24MB
 download, and boots in approximately 5s.
 
-![OSX Architecture Diagram](/installation/images/mac_docker_host.svg)
+![OSX Architecture Diagram](images/mac_docker_host.svg)
 
 In OS X, the Docker host address is the address of the Linux VM. When you start
 the VM with `docker-machine` it is assigned an IP address. When you start a
@@ -73,14 +73,14 @@ and choosing "Open" from the pop-up menu.
 
     The installer launches the "Install Docker Toolbox" dialog.
 
-    ![Install Docker Toolbox](/installation/images/mac-welcome-page.png)
+    ![Install Docker Toolbox](images/mac-welcome-page.png)
 
 4. Press "Continue" to install the toolbox.
 
     The installer presents you with options to customize the standard
     installation.
 
-    ![Standard install](/installation/images/mac-page-two.png)
+    ![Standard install](images/mac-page-two.png)
 
     By default, the standard Docker Toolbox installation:
 
@@ -95,14 +95,14 @@ and choosing "Open" from the pop-up menu.
 
      The system prompts you for your password.
 
-     ![Password prompt](/installation/images/mac-password-prompt.png)
+     ![Password prompt](images/mac-password-prompt.png)
 
 6. Provide your password to continue with the installation.
 
      When it completes, the installer provides you with some information you can
      use to complete some common tasks.
 
-     ![All finished](/installation/images/mac-page-finished.png)
+     ![All finished](images/mac-page-finished.png)
 
 7. Press "Close" to exit.
 
@@ -135,7 +135,7 @@ There are two ways to use the installed tools, from the Docker Quickstart Termin
 
     Once the launch completes, the Docker Quickstart Terminal reports:
 
-     ![All finished](/installation/images/mac-success.png)
+     ![All finished](images/mac-success.png)
 
     Now, you can run `docker` commands.
 
@@ -187,8 +187,6 @@ different shell such as C Shell but the commands are the same.
 
     This creates a new `default` VM in VirtualBox.
 
-    ![default](/installation/images/default.png)
-
     The command also creates a machine configuration in the
     `~/.docker/machine/machines/default` directory. You only need to run the
     `create` command once. Then, you can use `docker-machine` to start, stop,
@@ -313,7 +311,7 @@ The `ACTIVE` machine, in this case `default`, is the one your environment is poi
 
 4. Enter the `http://localhost:49157` address (`localhost` is `0.0.0.0`) in your browser:
 
-    ![Bad Address](/installation/images/bad_host.png)
+    ![Bad Address](images/bad_host.png)
 
     This didn't work. The reason it doesn't work is your `DOCKER_HOST` address is
     not the localhost address (0.0.0.0) but is instead the address of the
@@ -326,7 +324,7 @@ The `ACTIVE` machine, in this case `default`, is the one your environment is poi
 
 6. Enter the `http://192.168.59.103:49157` address in your browser:
 
-    ![Correct Addressing](/installation/images/good_host.png)
+    ![Correct Addressing](images/good_host.png)
 
     Success!
 
@@ -370,7 +368,7 @@ The next exercise demonstrates how to do this.
 
 7. Open the site in a browser:
 
-    ![My site page](/installation/images/newsite_view.png)
+    ![My site page](images/newsite_view.png)
 
 8. Try adding a page to your `$HOME/site` in real time.
 
@@ -378,7 +376,7 @@ The next exercise demonstrates how to do this.
 
 9. Open the new page in the browser.
 
-    ![Cool page](/installation/images/cool_view.png)
+    ![Cool page](images/cool_view.png)
 
 10. Stop and then remove your running `mysite` container.
 
@@ -427,6 +425,6 @@ Use `docker-machine help` to list the full command line reference for Docker Mac
 information about using SSH or SCP to access a VM, see [the Docker Machine
 documentation](https://docs.docker.com/machine/).
 
-You can continue with the [Docker User Guide](/userguide). If you are
+You can continue with the [Docker User Guide](../userguide). If you are
 interested in using the Kitematic GUI, see the [Kitematic user
-guide](/kitematic/userguide/).
+guide](https://docs.docker.com/kitematic/userguide/).
diff --git a/docs/installation/oracle.md b/docs/installation/oracle.md
index d9a17b9804..a575a3d1d8 100644
--- a/docs/installation/oracle.md
+++ b/docs/installation/oracle.md
@@ -99,7 +99,7 @@ makes the ownership of the Unix socket read/writable by the `docker` group.
 
 >**Warning**: The `docker` group is equivalent to the `root` user; For details
 >on how this impacts security in your system, see [*Docker Daemon Attack
->Surface*](/articles/security/#docker-daemon-attack-surface) for details.
+>Surface*](../articles/security.md#docker-daemon-attack-surface) for details.
 
 To create the `docker` group and add your user:
 
@@ -142,7 +142,7 @@ $ sudo systemctl enable docker.service
 
 If you need to add an HTTP Proxy, set a different directory or partition for the
 Docker runtime files, or make other customizations, read our systemd article to
-learn how to [customize your systemd Docker daemon options](/articles/systemd/).
+learn how to [customize your systemd Docker daemon options](../articles/systemd.md).
 
 ### Use the btrfs storage engine
 
diff --git a/docs/installation/rackspace.md b/docs/installation/rackspace.md
index 07c04e877d..8eac4b2c33 100644
--- a/docs/installation/rackspace.md
+++ b/docs/installation/rackspace.md
@@ -12,7 +12,7 @@ parent = "smn_cloud"
 
 Installing Docker on Ubuntu provided by Rackspace is pretty
 straightforward, and you should mostly be able to follow the
-[*Ubuntu*](../ubuntulinux/#ubuntu-linux) installation guide.
+[*Ubuntu*](ubuntulinux.md#ubuntu-linux) installation guide.
 
 **However, there is one caveat:**
 
@@ -83,5 +83,5 @@ Verify the kernel was updated
 
     # nice! 3.8.
 
-Now you can finish with the [*Ubuntu*](../ubuntulinux/#ubuntu-linux)
+Now you can finish with the [*Ubuntu*](ubuntulinux.md#ubuntu-linux)
 instructions.
diff --git a/docs/installation/rhel.md b/docs/installation/rhel.md
index f121a5bd09..efad29b9b1 100644
--- a/docs/installation/rhel.md
+++ b/docs/installation/rhel.md
@@ -126,7 +126,7 @@ makes the ownership of the Unix socket read/writable by the `docker` group.
 
 >**Warning**: The `docker` group is equivalent to the `root` user; For details
 >on how this impacts security in your system, see [*Docker Daemon Attack
->Surface*](/articles/security/#docker-daemon-attack-surface) for details.
+>Surface*](../articles/security.md#docker-daemon-attack-surface) for details.
 
 To create the `docker` group and add your user:
 
@@ -152,7 +152,7 @@ To ensure Docker starts when you boot your system, do the following:
 
 If you need to add an HTTP Proxy, set a different directory or partition for the
 Docker runtime files, or make other customizations, read our Systemd article to
-learn how to [customize your Systemd Docker daemon options](/articles/systemd/).
+learn how to [customize your Systemd Docker daemon options](../articles/systemd.md).
 
 
 ## Uninstall
diff --git a/docs/installation/softlayer.md b/docs/installation/softlayer.md
index 622d0b1773..f86a1619df 100644
--- a/docs/installation/softlayer.md
+++ b/docs/installation/softlayer.md
@@ -27,10 +27,10 @@ parent = "smn_cloud"
 7. Click the *Continue Your Order* button at the bottom right.
 8. Fill out VSI *hostname* and *domain*.
 9. Insert the required *User Metadata* and place the order.
-10. Then continue with the [*Ubuntu*](../ubuntulinux/#ubuntu-linux)
+10. Then continue with the [*Ubuntu*](ubuntulinux.md#ubuntu-linux)
    instructions.
 
 ## What next?
 
-Continue with the [User Guide](/userguide/).
+Continue with the [User Guide](../userguide/).
 
diff --git a/docs/installation/ubuntulinux.md b/docs/installation/ubuntulinux.md
index b8aad8eeb4..af13434201 100644
--- a/docs/installation/ubuntulinux.md
+++ b/docs/installation/ubuntulinux.md
@@ -197,7 +197,7 @@ makes the ownership of the Unix socket read/writable by the `docker` group.
 
 >**Warning**: The `docker` group is equivalent to the `root` user; For details
 >on how this impacts security in your system, see [*Docker Daemon Attack
->Surface*](/articles/security/#docker-daemon-attack-surface) for details.
+>Surface*](../articles/security.md#docker-daemon-attack-surface) for details.
 
 To create the `docker` group and add your user:
 
diff --git a/docs/installation/windows.md b/docs/installation/windows.md
index 2370f0fac5..48788abac3 100644
--- a/docs/installation/windows.md
+++ b/docs/installation/windows.md
@@ -35,7 +35,7 @@ Your machine must be running Windows 7, 8/8.1 or newer to run Docker. Windows 10
 
 1. Right click the Windows Start Menu and choose **System**.
 
-    ![Which version](/installation/images/win_ver.png)
+    ![Which version](images/win_ver.png)
 
     If you are using an unsupported version of Windows, you should consider
     upgrading your operating system in order to try out Docker.
@@ -48,7 +48,7 @@ and virtualization support is enabled in BIOS and recognized by Windows.
 	  Choose **Start > Task Manager** and navigate to the **Performance** tab.
 	  Under **CPU** you should see the following:
 
-      ![Release page](/installation/images/virtualization.png)
+      ![Release page](images/virtualization.png)
 
     If virtualization is not enabled on your system, follow the manufacturer's instructions for enabling it.
 
@@ -76,13 +76,13 @@ containers run directly on your localhost. This means you can address ports on a
 Docker container using standard localhost addressing such as `localhost:8000` or
 `0.0.0.0:8376`.
 
-![Linux Architecture Diagram](/installation/images/linux_docker_host.svg)
+![Linux Architecture Diagram](images/linux_docker_host.svg)
 
 In an Windows installation, the `docker` daemon is running inside a Linux virtual
 machine. You use the Windows Docker client to talk to the Docker host VM. Your
 Docker containers run inside this host.
 
-![Windows Architecture Diagram](/installation/images/win_docker_host.svg)
+![Windows Architecture Diagram](images/win_docker_host.svg)
 
 In Windows, the Docker host address is the address of the Linux VM. When you
 start the VM with `docker-machine` it is assigned an IP address. When you start
@@ -103,7 +103,7 @@ installer.
 
     The installer launches the "Setup - Docker Toolbox" dialog.
 
-    ![Install Docker Toolbox](/installation/images/win-welcome.png)
+    ![Install Docker Toolbox](images/win-welcome.png)
 
 4. Press "Next" to install the toolbox.
 
@@ -122,14 +122,14 @@ installer.
 
      The system prompts you for your password.
 
-     ![Install](/installation/images/win-page-6.png)
+     ![Install](images/win-page-6.png)
 
 6. Press "Install"  to continue with the installation.
 
      When it completes, the installer provides you with some information you can
      use to complete some common tasks.
 
-     ![All finished](/installation/images/windows-finish.png)
+     ![All finished](images/windows-finish.png)
 
 7. Press "Finish" to exit.
 
@@ -362,6 +362,6 @@ delete that file yourself.
 
 ## Learn more
 
-You can continue with the [Docker User Guide](/userguide). If you are
+You can continue with the [Docker User Guide](../userguide). If you are
 interested in using the Kitematic GUI, see the [Kitematic user
-guide](/kitematic/userguide/).
+guide](https://docs.docker.com/kitematic/userguide/).
diff --git a/docs/introduction/understanding-docker.md b/docs/introduction/understanding-docker.md
index 13943b03cd..90330c4907 100644
--- a/docs/introduction/understanding-docker.md
+++ b/docs/introduction/understanding-docker.md
@@ -88,7 +88,7 @@ run on the same system, or you can connect a Docker client to a remote Docker
 daemon. The Docker client and daemon communicate via sockets or through a
 RESTful API.
 
-![Docker Architecture Diagram](/article-img/architecture.svg)
+![Docker Architecture Diagram](../article-img/architecture.svg)
 
 ### The Docker daemon
 As shown in the diagram above, the Docker daemon runs on a host machine. The
@@ -285,9 +285,9 @@ BSD Jails or Solaris Zones.
 
 ## Next steps
 ### Installing Docker
-Visit the [installation section](/installation/#installation).
+Visit the [installation section](../installation/#installation).
 
 ### The Docker user guide
-[Learn Docker in depth](/userguide/).
+[Learn Docker in depth](../userguide/).
 
 
diff --git a/docs/misc/deprecated.md b/docs/misc/deprecated.md
index 6df323fb11..394e28685f 100644
--- a/docs/misc/deprecated.md
+++ b/docs/misc/deprecated.md
@@ -42,7 +42,7 @@ The built-in LXC execution driver is deprecated for an external implementation.
 The lxc-conf flag and API fields will also be removed.
 
 ### Old Command Line Options
-**Deprecated In Release: [v1.8.0](/release-notes/#docker-engine-1-8-0)**
+**Deprecated In Release: [v1.8.0](../release-notes.md#docker-engine-1-8-0)**
 
 **Target For Removal In Release: v1.10**
 
diff --git a/docs/misc/faq.md b/docs/misc/faq.md
index e02d3cfc51..417d4590d1 100644
--- a/docs/misc/faq.md
+++ b/docs/misc/faq.md
@@ -31,8 +31,8 @@ https://github.com/docker/docker/blob/master/LICENSE)
 
 Docker currently runs only on Linux, but you can use VirtualBox to run Docker in
 a virtual machine on your box, and get the best of both worlds. Check out the
-[*Mac OS X*](/installation/mac/) and [*Microsoft
-Windows*](/installation/windows/) installation guides. The small Linux
+[*Mac OS X*](../installation/mac.md) and [*Microsoft
+Windows*](../installation/windows.md) installation guides. The small Linux
 distribution Docker Machine can be run inside virtual machines on these two
 operating systems.
 
@@ -77,7 +77,7 @@ with several powerful functionalities:
 
  - *Automatic build.* Docker includes [*a tool for developers to automatically
  assemble a container from their source
- code*](/reference/builder/), with full control over application
+ code*](../reference/builder.md), with full control over application
  dependencies, build tools, packaging etc. They are free to use `make`, `maven`,
  `chef`, `puppet`, `salt,` Debian packages, RPMs, source tarballs, or any
  combination of the above, regardless of the configuration of the machines.
@@ -90,8 +90,7 @@ with several powerful functionalities:
  uploads and downloads, similar to `git pull`, so new versions of a container
  can be transferred by only sending diffs.
 
- - *Component re-use.* Any container can be used as a [*"base image"*](
- /reference/glossary/#image) to create more specialized components. This can
+ - *Component re-use.* Any container can be used as a [*"base image"*](../reference/glossary.md#image) to create more specialized components. This can
  be done manually or as part of an automated build. For example you can prepare
  the ideal Python environment, and use it as a base for 10 different
  applications. Your ideal PostgreSQL setup can be re-used for all your future
@@ -101,7 +100,7 @@ with several powerful functionalities:
  where thousands of people have uploaded useful images: anything from Redis,
  CouchDB, PostgreSQL to IRC bouncers to Rails app servers to Hadoop to base 
  images for various Linux distros. The
- [*registry*](/registry/) also
+ [*registry*](https://docs.docker.com/registry/) also
  includes an official "standard library" of useful containers maintained by the
  Docker team. The registry itself is open-source, so anyone can deploy their own
  registry to store and transfer private containers, for internal server
@@ -137,10 +136,10 @@ thousands or even millions of containers running in parallel.
 ### How do I connect Docker containers?
 
 Currently the recommended way to link containers is via the link primitive. You
-can see details of how to [work with links here](/userguide/dockerlinks).
+can see details of how to [work with links here](../userguide/dockerlinks.md).
 
 Also useful for more flexible service portability is the [Ambassador linking
-pattern](/articles/ambassador_pattern_linking/).
+pattern](../articles/ambassador_pattern_linking.md).
 
 ### How do I run more than one process in a Docker container?
 
@@ -149,7 +148,7 @@ http://supervisord.org/), runit, s6, or daemontools can do the trick. Docker
 will start up the process management daemon which will then fork to run
 additional processes. As long as the processor manager daemon continues to run,
 the container will continue to as well. You can see a more substantial example
-[that uses supervisord here](/articles/using_supervisord/).
+[that uses supervisord here](../articles/using_supervisord.md).
 
 ### What platforms does Docker run on?
 
@@ -271,4 +270,4 @@ You can find more answers on:
 - [Ask questions on Stackoverflow](http://stackoverflow.com/search?q=docker) 
 - [Join the conversation on Twitter](http://twitter.com/docker)
 
-Looking for something else to read? Checkout the [User Guide](/userguide/).
+Looking for something else to read? Checkout the [User Guide](../userguide/).
diff --git a/docs/misc/index.md b/docs/misc/index.md
index 1d1fdf6171..6edf7a974b 100644
--- a/docs/misc/index.md
+++ b/docs/misc/index.md
@@ -73,7 +73,7 @@ Docker consists of:
 
 ## About this guide
 
-The [Understanding Docker section](/introduction/understanding-docker) will help you:
+The [Understanding Docker section](../introduction/understanding-docker.md) will help you:
 
  - See how Docker works at a high level
  - Understand the architecture of Docker
@@ -83,19 +83,19 @@ The [Understanding Docker section](/introduction/understanding-docker) will help
 
 ### Installation guides
 
-The [installation section](/installation/#installation) will show you how to
-install Docker on a variety of platforms.
+The [installation section](../installation) will show you how to install Docker
+on a variety of platforms.
 
 
 ### Docker user guide
 
 To learn about Docker in more detail and to answer questions about usage and
-implementation, check out the [Docker User Guide](/userguide/).
+implementation, check out the [Docker User Guide](../userguide/).
 
 ## Release notes
 
 A summary of the changes in each release in the current series can now be found
-on the separate [Release Notes page](/release-notes/)
+on the separate [Release Notes page](https://docs.docker.com/release-notes)
 
 ## Feature Deprecation Policy
 
@@ -110,7 +110,7 @@ release and plan their migration away from those features, and (if applicable)
 towards the replacement features as soon as possible.
 
 The complete list of deprecated features can be found on the
-[Deprecated Features page](deprecated).
+[Deprecated Features page](deprecated.md).
 
 ## Licensing
 
diff --git a/docs/misc/release-notes.md b/docs/misc/release-notes.md
index 29e33e55f4..b4d1dc1050 100644
--- a/docs/misc/release-notes.md
+++ b/docs/misc/release-notes.md
@@ -12,7 +12,7 @@ parent = "smn_release_notes"
 # Deprecated Features
 
 To see the complete list of deprecated features please see the
-[Deprecated Features](deprecated) page.
+[Deprecated Features](deprecated.md) page.
 
 # Removed Features
 
@@ -47,13 +47,13 @@ repository](https://github.com/docker/docker/blob/master/CHANGELOG.md).
 
 | Feature                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
 |------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Container and Image Labels   | Labels allow you to attach user-defined metadata to containers and images that can be used by your tools. For additional information on using labels, see [Apply custom metadata](https://docs.docker.com/userguide/labels-custom-metadata/#add-labels-to-images-the-label-instruction) in the documentation.                                                                                                                                                    |
+| Container and Image Labels   | Labels allow you to attach user-defined metadata to containers and images that can be used by your tools. For additional information on using labels, see [Apply custom metadata](https://docs.docker.com/userguide/labels-custom-metadata.md#add-labels-to-images-the-label-instruction) in the documentation.                                                                                                                                                    |
 | Windows Client preview       | The Windows Client can be used just like the Mac OS X client is today with a remote host. Our testing infrastructure was scaled out to accommodate Windows Client testing on every PR to the Engine. See the Azure blog for [details on using this new client](http://azure.microsoft.com/blog/2015/04/16/docker-client-for-windows-is-now-available).                                                                                                           |
-| Logging drivers              | The new logging driver follows the exec driver and storage driver concepts already available in Engine today. There is a new option `--log-driver` to `docker run` command. See the `run` reference for a [description on how to use this option](https://docs.docker.com/reference/run/#logging-drivers-log-driver).                                                                                                                                            |
-| Image digests                | When you pull, build, or run images, you specify them in the form `namespace/repository:tag`, or even just `repository`. In this release, you are now able to pull, run, build and refer to images by a new content addressable identifier called a “digest” with the syntax `namespace/repo@digest`. See the the command line reference for [examples of using the digest](https://docs.docker.com/reference/commandline/cli/#listing-image-digests).           |
-| Custom cgroups               | Containers are made from a combination of namespaces, capabilities, and cgroups. Docker already supports custom namespaces and capabilities. Additionally, in this release we’ve added support for custom cgroups. Using the `--cgroup-parent` flag, you can pass a specific `cgroup` to run a container in. See [the command line reference for more information](https://docs.docker.com/reference/commandline/cli/#create).                                   |
-| Ulimits                      | You can now specify the default `ulimit` settings for all containers when configuring the daemon. For example:`docker daemon --default-ulimit nproc=1024:2048` See [Default Ulimits](https://docs.docker.com/reference/commandline/cli/#default-ulimits) in this documentation.                                                                                                                                                                                   |
-| Commit and import Dockerfile | You can now make changes to images on the fly without having to re-build the entire image. The feature `commit --change` and `import --change` allows you to apply standard changes to a new image. These are expressed in the Dockerfile syntax and used to modify the image. For details on how to use these, see the [commit](https://docs.docker.com/reference/commandline/cli/#commit) and [import](https://docs.docker.com/reference/commandline/cli/#import). |
+| Logging drivers              | The new logging driver follows the exec driver and storage driver concepts already available in Engine today. There is a new option `--log-driver` to `docker run` command. See the `run` reference for a [description on how to use this option](../reference/run.md#logging-drivers-log-driver).                                                                                                                                            |
+| Image digests                | When you pull, build, or run images, you specify them in the form `namespace/repository:tag`, or even just `repository`. In this release, you are now able to pull, run, build and refer to images by a new content addressable identifier called a “digest” with the syntax `namespace/repo@digest`. See the the command line reference for [examples of using the digest](../reference/commandline/cli.md#listing-image-digests).           |
+| Custom cgroups               | Containers are made from a combination of namespaces, capabilities, and cgroups. Docker already supports custom namespaces and capabilities. Additionally, in this release we’ve added support for custom cgroups. Using the `--cgroup-parent` flag, you can pass a specific `cgroup` to run a container in. See [the command line reference for more information](../reference/commandline/cli.md#create).                                   |
+| Ulimits                      | You can now specify the default `ulimit` settings for all containers when configuring the daemon. For example:`docker daemon --default-ulimit nproc=1024:2048` See [Default Ulimits](../reference/commandline/cli.md#default-ulimits) in this documentation.                                                                                                                                                                                   |
+| Commit and import Dockerfile | You can now make changes to images on the fly without having to re-build the entire image. The feature `commit --change` and `import --change` allows you to apply standard changes to a new image. These are expressed in the Dockerfile syntax and used to modify the image. For details on how to use these, see the [commit](../reference/commandline/cli.md#commit) and [import](../reference/commandline/cli.md#import). |
 
 ### Known issues in Engine
 
@@ -158,4 +158,4 @@ address changes.
 
 ## Docker Hub Enterprise & Commercially Supported Docker Engine
 
-See the [DHE and CS Docker Engine release notes](docker-hub-enterprise/release-notes.md).
+See the [DHE and CS Docker Engine release notes](https://docs.docker.com/docker-hub-enterprise/release-notes.md).
diff --git a/docs/pre-process.sh b/docs/pre-process.sh
deleted file mode 100755
index 7f646def14..0000000000
--- a/docs/pre-process.sh
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/bin/bash -ex
-
-# Populate an array with just docker dirs and one with content dirs
-content_dir=(`ls -d /docs/content/*`)
-
-# Loop content not of docker/
-#
-# Sed to process GitHub Markdown
-# 1-2 Remove comment code from metadata block
-# 3 Remove .md extension from link text
-# 4 Change ](/ to ](/project/ in links
-# 5 Change ](word) to ](/project/word)
-# 6 Change ](../../ to ](/project/
-# 7 Change ](../ to ](/project/word)
-# 
-for i in "${content_dir[@]}"
-do
-   :
-   case $i in
-      "/docs/content/docker-trusted-registry")
-      ;;
-      "/docs/content/docker-hub")
-      ;;
-      "/docs/content/windows")
-      ;;
-      "/docs/content/mac")
-      ;;
-      "/docs/content/linux")
-      ;;
-      "/docs/content/registry")
-      y=${i##*/}
-      find $i -type f -name "*.md" -not -name "*.compare.md" -exec sed -i.old \
-        -e '/^<!\(--\)\{0,1\}\[\(end-\)\{0,1\}metadata\]\(--\)\{0,1\}>/g' \
-        -e 's/\(\][(]\)\(\.*\/\)*/\1/g' \
-        -e 's/\(\][(]\)\([A-Za-z0-9_/-]\{1,\}\)\(\.md\)\{0,1\}\(#\{0,1\}\(#[A-Za-z0-9_-]*\)\{0,1\}\)[)]/\1\/'$y'\/\2\4)/g' \
-        {} \;
-      ;;
-      "/docs/content/compose")
-         y=${i##*/}
-        find $i -type f -name "*.md" -exec sed -i.old \
-        -e '/^<!.*metadata]>/g' \
-        -e '/^<!.*end-metadata.*>/g' \
-        -e 's/\(\]\)\([(]\)\(\/\)/\1\2\/'$y'\//g' \
-        -e 's/\(\][(]\)\([A-z].*\)\(\.md\)/\1\/'$y'\/\2/g' \
-        -e 's/\([(]\)\(.*\)\(\.md\)/\1\2/g'  \
-        -e 's/\(\][(]\)\(\.\/\)/\1\/'$y'\//g' \
-        -e 's/\(\][(]\)\(\.\.\/\.\.\/\)/\1\/'$y'\//g' \
-        -e 's/\(\][(]\)\(\.\.\/\)/\1\/'$y'\//g' {} \;      
-      ;;
-      "/docs/content/swarm")
-         y=${i##*/}
-         find $i -type f -name "*.md" -exec sed -i.old \
-        -e '/^<!.*metadata]>/g' \
-        -e '/^<!.*end-metadata.*>/g' \
-        -e 's/\(\]\)\([(]\)\(\/\)/\1\2\/'$y'\//g' \
-        -e 's/\(\][(]\)\([A-z].*\)\(\.md\)/\1\/'$y'\/\2/g' \
-        -e 's/\([(]\)\(.*\)\(\.md\)/\1\2/g'  \
-        -e 's/\(\][(]\)\(\.\/\)/\1\/'$y'\//g' \
-        -e 's/\(\][(]\)\(\.\.\/\.\.\/\)/\1\/'$y'\//g' \
-        -e 's/\(\][(]\)\(\.\.\/\)/\1\/'$y'\//g' {} \;     
-      ;;
-      "/docs/content/machine")
-         y=${i##*/}
-        find $i -type f -name "*.md" -exec sed -i.old \
-        -e '/^<!.*metadata]>/g' \
-        -e '/^<!.*end-metadata.*>/g' \
-        -e 's/\(\]\)\([(]\)\(\/\)/\1\2\/'$y'\//g' \
-        -e 's/\(\][(]\)\([A-z].*\)\(\.md\)/\1\/'$y'\/\2/g' \
-        -e 's/\([(]\)\(.*\)\(\.md\)/\1\2/g'  \
-        -e 's/\(\][(]\)\(\.\/\)/\1\/'$y'\//g' \
-        -e 's/\(\][(]\)\(\.\.\/\.\.\/\)/\1\/'$y'\//g' \
-        -e 's/\(\][(]\)\(\.\.\/\)/\1\/'$y'\//g' {} \;         
-      ;;
-      "/docs/content/kitematic")
-         y=${i##*/}
-        find $i -type f -name "*.md" -exec sed -i.old \
-        -e '/^<!.*metadata]>/g' \
-        -e '/^<!.*end-metadata.*>/g' \
-        -e 's/\(\]\)\([(]\)\(\/\)/\1\2\/'$y'\//g' \
-        -e 's/\(\][(]\)\([A-z].*\)\(\.md\)/\1\/'$y'\/\2/g' \
-        -e 's/\([(]\)\(.*\)\(\.md\)/\1\2/g'  \
-        -e 's/\(\][(]\)\(\.\/\)/\1\/'$y'\//g' \
-        -e 's/\(\][(]\)\(\.\.\/\.\.\/\)/\1\/'$y'\//g' \
-        -e 's/\(\][(]\)\(\.\.\/\)/\1\/'$y'\//g' {} \;         
-      ;;
-      "/docs/content/opensource")
-         y=${i##*/}
-        find $i -type f -name "*.md" -exec sed -i.old \
-        -e '/^<!.*metadata]>/g' \
-        -e '/^<!.*end-metadata.*>/g' \
-        -e 's/\(\]\)\([(]\)\(\/\)/\1\2\/'$y'\//g' \
-        -e 's/\(\][(]\)\([A-z].*\)\(\.md\)/\1\/'$y'\/\2/g' \
-        -e 's/\([(]\)\(.*\)\(\.md\)/\1\2/g'  \
-        -e 's/\(\][(]\)\(\.\/\)/\1\/'$y'\//g' \
-        -e 's/\(\][(]\)\(\.\.\/\.\.\/\)/\1\/'$y'\//g' \
-        -e 's/\(\][(]\)\(\.\.\/\)/\1\/'$y'\//g' {} \;         
-      ;;
-      *)
-         y=${i##*/}
-        find $i -type f -name "*.md" -exec sed -i.old \
-        -e '/^<!.*metadata]>/g' \
-        -e '/^<!.*end-metadata.*>/g' {} \;        
-      ;;
-      esac
-done
-
-
diff --git a/docs/project/advanced-contributing.md b/docs/project/advanced-contributing.md
index 04d5086297..79a8c68635 100644
--- a/docs/project/advanced-contributing.md
+++ b/docs/project/advanced-contributing.md
@@ -54,7 +54,7 @@ A design proposal solves a problem or adds a feature to the Docker software.
 The process for submitting design proposals requires two pull requests, one
 for the design and one for the implementation.
 
-![Simple process](/project/images/proposal.png)
+![Simple process](images/proposal.png)
 
 The important thing to notice is that both the design pull request and the
 implementation pull request go through a review. In other words, there is
diff --git a/docs/project/coding-style.md b/docs/project/coding-style.md
index 65a48612fc..082ac755e1 100644
--- a/docs/project/coding-style.md
+++ b/docs/project/coding-style.md
@@ -12,8 +12,8 @@ weight=7
 # Coding style checklist
 
 This checklist summarizes the material you experienced working through [make a
-code contribution](/project/make-a-contribution) and [advanced
-contributing](/project/advanced-contributing). The checklist applies to both 
+code contribution](make-a-contribution.md) and [advanced
+contributing](advanced-contributing.md). The checklist applies to both 
 program code and documentation code.
 
 ## Change and commit code
diff --git a/docs/project/create-pr.md b/docs/project/create-pr.md
index dacb39b07c..fc5f626e91 100644
--- a/docs/project/create-pr.md
+++ b/docs/project/create-pr.md
@@ -98,14 +98,14 @@ You create and manage PRs on GitHub:
 
     You should see the latest activity from your branch.
 
-    ![Latest commits](/project/images/latest_commits.png)
+    ![Latest commits](images/latest_commits.png)
 
 
 2. Click "Compare & pull request."
 
     The system displays the pull request dialog. 
 
-    ![PR dialog](/project/images/to_from_pr.png)
+    ![PR dialog](images/to_from_pr.png)
 
     The pull request compares your changes to the `master` branch on the
     `docker/docker` repository.
@@ -114,25 +114,25 @@ You create and manage PRs on GitHub:
 
     GitHub helps you out by searching for the issue as you type.
 
-    ![Fixes issue](/project/images/fixes_num.png)
+    ![Fixes issue](images/fixes_num.png)
 
 4. Scroll down and verify the PR contains the commits and changes you expect.
 
     For example, is the file count correct? Are the changes in the files what
     you expect?
 
-    ![Commits](/project/images/commits_expected.png)
+    ![Commits](images/commits_expected.png)
 
 5. Press "Create pull request".
 
     The system creates the request and opens it for you in the `docker/docker`
     repository.
 
-    ![Pull request made](/project/images/pull_request_made.png)
+    ![Pull request made](images/pull_request_made.png)
 
 
 ## Where to go next
 
 Congratulations, you've created your first pull request to Docker. The next
 step is for you learn how to [participate in your PR's
-review](/project/review-pr/).
+review](review-pr.md).
diff --git a/docs/project/doc-style.md b/docs/project/doc-style.md
index 1f2ebe1c80..e6efe9c7fa 100644
--- a/docs/project/doc-style.md
+++ b/docs/project/doc-style.md
@@ -22,7 +22,7 @@ If a question about syntactical, grammatical, or lexical practice comes up,
 refer to the AP guide first. If you don’t have a copy of (or online subscription
 to) the AP guide, you can almost always find an answer to a specific question by
 searching the web. If you can’t find an answer, please ask a
-[maintainer](https://github.com/docker/docker/blob/master/docs/MAINTAINERS) and
+[maintainer](https://github.com/docker/docker/blob/master/MAINTAINERS) and
 we will find the answer.
 
 That said, please don't get too hung up on using correct style. We'd rather have
diff --git a/docs/project/find-an-issue.md b/docs/project/find-an-issue.md
index 9ed60bf647..140f0f88df 100644
--- a/docs/project/find-an-issue.md
+++ b/docs/project/find-an-issue.md
@@ -101,7 +101,7 @@ To claim an issue:
 
     A list of the open issues appears. 
 
-    ![Open issues](/project/images/issue_list.png)
+    ![Open issues](images/issue_list.png)
 
 3. From the "Labels" drop-down, select <strong class="gh-label beginner">exp/beginner</strong>.
 
@@ -122,7 +122,7 @@ To claim an issue:
 7. Your issue # will be different depending on what you claimed. After a moment, Gordon the Docker 
 bot, changes the issue status to claimed. The following example shows issue #11038.
 
-    ![Easy issue](/project/images/easy_issue.png)
+    ![Easy issue](images/easy_issue.png)
 
 8. Make a note of the issue number; you will need it for later. 
 
@@ -234,4 +234,4 @@ To sync your repository:
 
 At this point, you know what you want to work on and you have a branch to do
 your work in.  Go onto the next section to learn [how to work on your
-changes](/project/work-issue/).
+changes](work-issue.md).
diff --git a/docs/project/get-help.md b/docs/project/get-help.md
index b368adddd9..dabf462625 100644
--- a/docs/project/get-help.md
+++ b/docs/project/get-help.md
@@ -81,7 +81,7 @@ register:
 
 1. In your browser open <a href="https://webchat.freenode.net" target="_blank">https://webchat.freenode.net</a>
 
-    ![Login to webchat screen](/project/images/irc_connect.png)
+    ![Login to webchat screen](images/irc_connect.png)
 
 2. Fill out the form.
 
@@ -106,14 +106,14 @@ register:
     the Webchat web page is a command line bar. Just above the command line bar
     a message is shown asking you to register.
 
-    ![Registration needed screen](/project/images/irc_after_login.png)
+    ![Registration needed screen](images/irc_after_login.png)
 
 4. Register your nickname by entering the following command in the
 command line bar:
 
         /msg NickServ REGISTER yourpassword youremail@example.com
 
-    ![Registering screen](/project/images/register_nic.png)
+    ![Registering screen](images/register_nic.png)
 
     This command line bar is also the entry field that you will use for entering 
     chat messages into IRC chat channels after you have registered and joined a
@@ -125,7 +125,7 @@ command line bar:
 
 5. Open your email client and look for the email.
 
-    ![Login screen](/project/images/register_email.png)
+    ![Login screen](images/register_email.png)
 
 6. Back in the browser, complete the registration according to the email
 by entering the following command into the webchat command line bar:
@@ -147,7 +147,7 @@ features. To use IRCCloud:
 
     The following web page is displayed in your browser:
 
-    ![IRCCloud Register screen](/project/images/irccloud-join.png)
+    ![IRCCloud Register screen](images/irccloud-join.png)
   
 2. If this is your first time using IRCCloud enter a valid email address in the
 form. People who have already registered with IRCCloud can select the "sign in
@@ -162,7 +162,7 @@ from IRCCloud and follow the instructions provided in the email.
 4. After following the instructions in your email you should have an IRCCloud
 Client web page in your browser:
 
-    ![IRCCloud](/project/images/irccloud-register-nick.png)
+    ![IRCCloud](images/irccloud-register-nick.png)
 
     The message shown above may appear indicating that you need to register your
     nickname. 
@@ -176,7 +176,7 @@ at the bottom of the IRCCloud Client:
 
 6. Check your email for an invite to freenode.net:
 
-    ![Login screen](/project/images/register_email.png)
+    ![Login screen](images/register_email.png)
 
 7. Back in the browser, complete the registration according to the email.
 
@@ -212,7 +212,7 @@ You can also join the `#docker-dev` group:
 
 To ask questions to the group just type messages in the command line bar:
 
-  ![Web Chat Screen](/project/images/irc_chat.png)
+  ![Web Chat Screen](images/irc_chat.png)
 
 ## Learning more about IRC
 
diff --git a/docs/project/make-a-contribution.md b/docs/project/make-a-contribution.md
index a6d7fcafd6..188a737957 100644
--- a/docs/project/make-a-contribution.md
+++ b/docs/project/make-a-contribution.md
@@ -25,7 +25,7 @@ In this guide, you work through Docker's basic contribution workflow by fixing a
 single *beginner* issue in the `docker/docker` repository. The workflow
 for fixing simple issues looks like this:
 
-![Simple process](/project/images/existing_issue.png)
+![Simple process](images/existing_issue.png)
 
 All Docker repositories have code and documentation. You use this same workflow
 for either content type. For example, you can find and fix doc or code issues.
@@ -38,4 +38,4 @@ contributions. When you reach that point in the flow, we make sure to tell you.
 ## Where to go next
 
 Now that you know a little about the contribution process, go to the next section
-to [find an issue you want to work on](/project/find-an-issue/).
+to [find an issue you want to work on](find-an-issue.md).
diff --git a/docs/project/review-pr.md b/docs/project/review-pr.md
index 841431b42a..680a62ddd4 100644
--- a/docs/project/review-pr.md
+++ b/docs/project/review-pr.md
@@ -27,7 +27,7 @@ First to review your pull request is Gordon. Gordon is fast. He checks your
 pull request (PR) for common problems like a missing signature. If Gordon finds a
 problem, he'll send an email through your GitHub user account:
 
-![Gordon](/project/images/gordon.jpeg)
+![Gordon](images/gordon.jpeg)
 
 Our build bot system starts building your changes while Gordon sends any emails. 
 
@@ -138,4 +138,4 @@ If you enjoyed contributing, let us know by completing another beginner
 issue or two. We really appreciate the help. 
 
 If you are very experienced and want to make a major change, go on to 
-[learn about advanced contributing](/project/advanced-contributing).
+[learn about advanced contributing](advanced-contributing.md).
diff --git a/docs/project/set-up-dev-env.md b/docs/project/set-up-dev-env.md
index ce6bca1c21..c1fac8cf6d 100644
--- a/docs/project/set-up-dev-env.md
+++ b/docs/project/set-up-dev-env.md
@@ -22,7 +22,7 @@ You use the `docker` repository and its `Dockerfile` to create a Docker image,
 run a Docker container, and develop code in the container. Docker itself builds,
 tests, and releases new Docker versions using this container.
 
-If you followed the procedures that <a href="/project/set-up-git" target="_blank">
+If you followed the procedures that <a href="/engine/project/set-up-git" target="_blank">
 set up Git for contributing</a>, you should have a fork of the `docker/docker`
 repository. You also created a branch called `dry-run-test`. In this section,
 you continue working with your fork on this branch.
@@ -105,7 +105,7 @@ environment.
         $ cd ~/repos/docker-fork 
         
 	If you are following along with this guide, you created a `dry-run-test`
-	branch when you <a href="/project/set-up-git" target="_blank"> set up Git for
+	branch when you <a href="/engine/project/set-up-git" target="_blank"> set up Git for
 	contributing</a>.
 
 4. Ensure you are on your `dry-run-test` branch.
@@ -205,7 +205,7 @@ build and run a `docker` binary in your container.
 
     At this point, you'll have about three terminals open.
 
-    ![Multiple terminals](/project/images/three_terms.png)
+    ![Multiple terminals](images/three_terms.png)
 
     Mac OS X users, make sure you run `eval "$(docker-machine env your_vm_name)"` in
     any new terminals.
@@ -226,7 +226,7 @@ build and run a `docker` binary in your container.
     `/go/src/github.com/docker/docker` directory. Try listing the contents to
     verify they are the same as that of your `docker-fork` repo.
 
-    ![List example](/project/images/list_example.png)
+    ![List example](images/list_example.png)
 
 
 3. Investigate your container bit. 
@@ -336,7 +336,7 @@ with the `make.sh` script.
     You should see the image load and return. Meanwhile, you
     can see the calls made via the debug session in your other terminal.
 
-    ![List example](/project/images/three_running.png)
+    ![List example](images/three_running.png)
 
 
 ## Restart a container with your source
@@ -423,4 +423,4 @@ Congratulations, you have successfully achieved Docker inception. At this point,
 you've set up your development environment and verified almost all the essential
 processes you need to contribute. Of course, before you start contributing, 
 [you'll need to learn one more piece of the development environment, the test
-framework](/project/test-and-docs/).
+framework](test-and-docs.md).
diff --git a/docs/project/set-up-git.md b/docs/project/set-up-git.md
index 5d3ac8563c..0202751129 100644
--- a/docs/project/set-up-git.md
+++ b/docs/project/set-up-git.md
@@ -35,7 +35,7 @@ target="_blank">docker/docker repository</a>.
 
 3. Click the "Fork" button in the upper right corner of the GitHub interface.
 
-    ![Branch Signature](/project/images/fork_docker.png)
+    ![Branch Signature](images/fork_docker.png)
 
     GitHub forks the repository to your GitHub account. The original
     `docker/docker` repository becomes a new fork `YOUR_ACCOUNT/docker` under
@@ -46,7 +46,7 @@ target="_blank">docker/docker repository</a>.
     GitHub allows you to use HTTPS or SSH protocols for clones. You can use the
     `git` command line or clients like Subversion to clone a repository. 
 
-    ![Copy clone URL](/project/images/copy_url.png)
+    ![Copy clone URL](images/copy_url.png)
 
     This guide assume you are using the HTTPS protocol and the `git` command
     line. If you are comfortable with SSH and some other tool, feel free to use
@@ -177,7 +177,7 @@ the branch to your fork on GitHub:
 	
 5. Edit the file and add your email and location.
 
-    ![Add your information](/project/images/contributor-edit.png)
+    ![Add your information](images/contributor-edit.png)
 
     You can use any text editor you are comfortable with.
 
@@ -239,10 +239,10 @@ the branch to your fork on GitHub:
 11. Make sure the `dry-run-test` branch exists, that it has your commit, and the
 commit is signed.
 
-    ![Branch Signature](/project/images/branch-sig.png)
+    ![Branch Signature](images/branch-sig.png)
 
 ## Where to go next
 
 Congratulations, you have finished configuring both your local host environment
 and Git for contributing. In the next section you'll [learn how to set up and
-work in a Docker development container](/project/set-up-dev-env/).
+work in a Docker development container](set-up-dev-env.md).
diff --git a/docs/project/software-req-win.md b/docs/project/software-req-win.md
index ef72200560..1eae96c9aa 100644
--- a/docs/project/software-req-win.md
+++ b/docs/project/software-req-win.md
@@ -115,7 +115,7 @@ you use the manager to install the `tar` and `xz` tools from the collection.
 
 	The system displays the **Schedule of Pending Actions Dialog**.
 
-    ![windows-mingw](/project/images/windows-mingw.png)
+    ![windows-mingw](images/windows-mingw.png)
     
 11. Press **Apply**
 
@@ -145,7 +145,7 @@ You'll need to add the compiler to your `Path` environment variable.
 5. Locate the **System variables** area and scroll to the **Path**
    variable.
 
-    ![windows-mingw](/project/images/path_variable.png)
+    ![windows-mingw](images/path_variable.png)
 
 6. Click **Edit** to edit the variable (you can also double-click it).
 
@@ -153,7 +153,7 @@ You'll need to add the compiler to your `Path` environment variable.
 
 7. Make sure the `Path` includes `C:\TDM-GCC64\bin` 
 
-	 ![include gcc](/project/images/include_gcc.png)
+	 ![include gcc](images/include_gcc.png)
 	 
 	 If you don't see `C:\TDM-GCC64\bin`, add it.
 		
@@ -206,7 +206,7 @@ from GitHub.
 	Recall that **Git Bash** came with the Git for Windows installation.  **Git
 	Bash** just as it sounds allows you to run a Bash terminal on Windows.
 	
-	![Git Bash](/project/images/git_bash.png)
+	![Git Bash](images/git_bash.png)
 
 2. Change to the root directory.
 
@@ -262,4 +262,4 @@ from GitHub.
 ## Where to go next
 
 In the next section, you'll [learn how to set up and configure Git for
-contributing to Docker](/project/set-up-git/).
\ No newline at end of file
+contributing to Docker](set-up-git.md).
\ No newline at end of file
diff --git a/docs/project/software-required.md b/docs/project/software-required.md
index 4f37c40896..c82ae13de3 100644
--- a/docs/project/software-required.md
+++ b/docs/project/software-required.md
@@ -56,7 +56,7 @@ depending on your OS.
 ### Install or upgrade Docker 
 
 If you haven't already, install the Docker software using the 
-<a href="/installation" target="_blank">instructions for your operating system</a>.
+<a href="/engine/installation" target="_blank">instructions for your operating system</a>.
 If you have an existing installation, check your version and make sure you have
 the latest Docker. 
 
@@ -95,4 +95,4 @@ You must log out and log back in for this modification to take effect.
 ## Where to go next
 
 In the next section, you'll [learn how to set up and configure Git for
-contributing to Docker](/project/set-up-git/).
+contributing to Docker](set-up-git.md).
diff --git a/docs/project/test-and-docs.md b/docs/project/test-and-docs.md
index ec8cd08c25..3bfccea2eb 100644
--- a/docs/project/test-and-docs.md
+++ b/docs/project/test-and-docs.md
@@ -229,7 +229,7 @@ run a Bash terminal on Windows.
 
 1.  If you don't have one open already, start a Git Bash terminal.
 
-	 ![Git Bash](/project/images/git_bash.png)
+	 ![Git Bash](images/git_bash.png)
 
 2. Change to the `docker` source directory.
 
@@ -314,7 +314,7 @@ can browse the docs.
 
 5. Once in the documentation, look for the red notice to verify you are seeing the correct build.
 
-    ![Beta documentation](/project/images/red_notice.png)
+    ![Beta documentation](images/red_notice.png)
 
 6. Navigate to your new or changed document.
 
@@ -328,4 +328,4 @@ can browse the docs.
 Congratulations, you have successfully completed the basics you need to
 understand the Docker test framework. In the next steps, you use what you have
 learned so far to [contribute to Docker by working on an
-issue](/project/make-a-contribution/).
+issue](make-a-contribution.md).
diff --git a/docs/project/who-written-for.md b/docs/project/who-written-for.md
index 956769385d..5ab409d266 100644
--- a/docs/project/who-written-for.md
+++ b/docs/project/who-written-for.md
@@ -40,7 +40,7 @@ Right now we don't have a lot written about this yet, so just email
 
 ## A turtle is involved
 
-![Gordon](/project/images/gordon.jpeg)
+![Gordon](images/gordon.jpeg)
 
 Enough said.
 
@@ -60,4 +60,4 @@ Please feel free to skim past information you find obvious or boring.
 
 ## How to get started
 
-Start by [getting the software you need to contribute](/project/software-required/).
+Start by [getting the software you need to contribute](software-required.md).
diff --git a/docs/project/work-issue.md b/docs/project/work-issue.md
index 6f13c2c179..3f737fef11 100644
--- a/docs/project/work-issue.md
+++ b/docs/project/work-issue.md
@@ -137,7 +137,7 @@ After you push a new branch, you should verify it on GitHub:
 
 3. Select your branch from the dropdown.
 
-	![Find branch](/project/images/locate_branch.png)
+	![Find branch](images/locate_branch.png)
 	
 4. Use the "Compare" button to compare the differences between your branch and master.
 
@@ -197,4 +197,4 @@ You should pull and rebase frequently as you work.
 ## Where to go next
 
 At this point, you should understand how to work on an issue. In the next
-section, you [learn how to make a pull request](/project/create-pr/).
+section, you [learn how to make a pull request](create-pr.md).
diff --git a/docs/reference/api/docker-io_api.md b/docs/reference/api/docker-io_api.md
index 1a49b52c92..85b2a99f3f 100644
--- a/docs/reference/api/docker-io_api.md
+++ b/docs/reference/api/docker-io_api.md
@@ -11,5 +11,5 @@ weight = 99
 
 # Docker Hub API
 
-This API is deprecated as of 1.7. To view the old version, see the [Docker Hub API](https://docs.docker.com/v1.7/reference/api/docker-io_api/) in the 1.7 documentation. 
+This API is deprecated as of 1.7. To view the old version, see the [Docker Hub API](docker-io_api.md) in the 1.7 documentation. 
 
diff --git a/docs/reference/api/docker_remote_api.md b/docs/reference/api/docker_remote_api.md
index e7888bcb99..938b61175a 100644
--- a/docs/reference/api/docker_remote_api.md
+++ b/docs/reference/api/docker_remote_api.md
@@ -56,7 +56,7 @@ wget --no-check-certificate --certificate=$DOCKER_CERT_PATH/cert.pem --private-k
 
 The following diagram depicts the container states accessible through the API.
 
-![States](../images/event_state.png)
+![States](images/event_state.png)
 
 Some container-related events are not affected by container state, so they are not included in this diagram. These events are:
 
@@ -74,7 +74,7 @@ This section lists each version from latest to oldest.  Each listing includes a
 
 ### v1.21 API changes
 
-[Docker Remote API v1.21](/reference/api/docker_remote_api_v1.21/) documentation
+[Docker Remote API v1.21](docker_remote_api_v1.21.md) documentation
 
 * `GET /volumes` lists volumes from all volume drivers.
 * `POST /volumes` to create a volume.
@@ -95,7 +95,7 @@ list of DNS options to be used in the container.
 
 ### v1.20 API changes
 
-[Docker Remote API v1.20](/reference/api/docker_remote_api_v1.20/) documentation
+[Docker Remote API v1.20](docker_remote_api_v1.20/) documentation
 
 * `GET /containers/(id)/archive` get an archive of filesystem content from a container.
 * `PUT /containers/(id)/archive` upload an archive of content to be extracted to
@@ -107,7 +107,7 @@ list of additional groups that the container process will run as.
 
 ### v1.19 API changes
 
-[Docker Remote API v1.19](/reference/api/docker_remote_api_v1.19/) documentation
+[Docker Remote API v1.19](docker_remote_api_v1.19.md) documentation
 
 * When the daemon detects a version mismatch with the client, usually when
 the client is newer than the daemon, an HTTP 400 is now returned instead
@@ -121,7 +121,7 @@ end point now returns the new boolean fields `CpuCfsPeriod`, `CpuCfsQuota`, and
 
 ### v1.18 API changes
 
-[Docker Remote API v1.18](/reference/api/docker_remote_api_v1.18/) documentation
+[Docker Remote API v1.18](docker_remote_api_v1.18.md) documentation
 
 * `GET /version` now returns `Os`, `Arch` and `KernelVersion`.
 * `POST /containers/create` and `POST /containers/(id)/start`allow you to  set ulimit settings for use in the container.
@@ -134,7 +134,7 @@ end point now returns the new boolean fields `CpuCfsPeriod`, `CpuCfsQuota`, and
 
 ### v1.17 API changes
 
-[Docker Remote API v1.17](/reference/api/docker_remote_api_v1.17/) documentation
+[Docker Remote API v1.17](docker_remote_api_v1.17.md) documentation
 
 * The build supports `LABEL` command. Use this to add metadata to an image. For
 example you could add data describing the content of an image. `LABEL
@@ -156,7 +156,7 @@ read only.
 
 ### v1.16 API changes
 
-[Docker Remote API v1.16](/reference/api/docker_remote_api_v1.16/)
+[Docker Remote API v1.16](docker_remote_api_v1.16.md)
 
 * `GET /info` returns the number of CPUs available on the machine (`NCPU`),
 total memory available (`MemTotal`), a user-friendly name describing the running Docker daemon (`Name`), a unique ID identifying the daemon (`ID`), and
@@ -167,14 +167,14 @@ a list of daemon labels (`Labels`).
 
 ### v1.15 API changes
 
-[Docker Remote API v1.15](/reference/api/docker_remote_api_v1.15/) documentation
+[Docker Remote API v1.15](docker_remote_api_v1.15.md) documentation
 
 `POST /containers/create` you can set a container's `HostConfig` when creating a
 container. Previously this was only available when starting a container.
 
 ### v1.14 API changes
 
-[Docker Remote API v1.14](/reference/api/docker_remote_api_v1.14/) documentation
+[Docker Remote API v1.14](docker_remote_api_v1.14.md) documentation
 
 * `DELETE /containers/(id)` when using `force`, the container will be immediately killed with SIGKILL.
 * `POST /containers/(id)/start` the `hostConfig` option accepts the field `CapAdd`, which specifies a list of capabilities
diff --git a/docs/reference/api/docker_remote_api_v1.10.md b/docs/reference/api/docker_remote_api_v1.10.md
index bf617fe3cb..0119a51d25 100644
--- a/docs/reference/api/docker_remote_api_v1.10.md
+++ b/docs/reference/api/docker_remote_api_v1.10.md
@@ -506,7 +506,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+](docker_remote_api_v1.9.md#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
@@ -1040,7 +1040,7 @@ Build an image from Dockerfile via stdin
     The archive must include a file called `Dockerfile`
  at its root. It may include any number of other files,
     which will be accessible in the build context (See the [*ADD build
-    command*](/reference/builder/#add)).
+    command*](../../reference/builder.md#add)).
 
 Query Parameters:
 
diff --git a/docs/reference/api/docker_remote_api_v1.11.md b/docs/reference/api/docker_remote_api_v1.11.md
index 3a1c9532bd..903bf5d067 100644
--- a/docs/reference/api/docker_remote_api_v1.11.md
+++ b/docs/reference/api/docker_remote_api_v1.11.md
@@ -541,7 +541,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    ](docker_remote_api_v1.9.md#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
@@ -1046,7 +1046,7 @@ Build an image from Dockerfile via stdin
     The archive must include a file called `Dockerfile`
     at its root. It may include any number of other files,
     which will be accessible in the build context (See the [*ADD build
-    command*](/reference/builder/#dockerbuilder)).
+    command*](../../reference/builder.md#dockerbuilder)).
 
 Query Parameters:
 
diff --git a/docs/reference/api/docker_remote_api_v1.12.md b/docs/reference/api/docker_remote_api_v1.12.md
index ca05839465..9272346b13 100644
--- a/docs/reference/api/docker_remote_api_v1.12.md
+++ b/docs/reference/api/docker_remote_api_v1.12.md
@@ -15,8 +15,7 @@ parent = "smn_remoteapi"
 
  - The Remote API has replaced `rcli`.
  - The daemon listens on `unix:///var/run/docker.sock` but you can
-   [Bind Docker to another host/port or a Unix socket](
-   /articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket).
+   [Bind Docker to another host/port or a Unix socket](../../articles/basics.md#bind-docker-to-another-hostport-or-a-unix-socket).
  - The API tends to be REST, but for some complex commands, like `attach`
    or `pull`, the HTTP connection is hijacked to transport `STDOUT`,
    `STDIN` and `STDERR`.
@@ -589,7 +588,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    ](docker_remote_api_v1.9.md#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
@@ -1108,7 +1107,7 @@ Build an image from Dockerfile via stdin
     The archive must include a file called `Dockerfile`
     at its root. It may include any number of other files,
     which will be accessible in the build context (See the [*ADD build
-    command*](/reference/builder/#dockerbuilder)).
+    command*](../../reference/builder.md#dockerbuilder)).
 
 Query Parameters:
 
diff --git a/docs/reference/api/docker_remote_api_v1.13.md b/docs/reference/api/docker_remote_api_v1.13.md
index 53661140ed..a9b519d189 100644
--- a/docs/reference/api/docker_remote_api_v1.13.md
+++ b/docs/reference/api/docker_remote_api_v1.13.md
@@ -15,8 +15,7 @@ parent = "smn_remoteapi"
 
  - The Remote API has replaced `rcli`.
  - The daemon listens on `unix:///var/run/docker.sock` but you can
-   [Bind Docker to another host/port or a Unix socket](
-   /articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket).
+   [Bind Docker to another host/port or a Unix socket](../../articles/basics.md#bind-docker-to-another-hostport-or-a-unix-socket).
  - The API tends to be REST, but for some complex commands, like `attach`
    or `pull`, the HTTP connection is hijacked to transport `STDOUT`,
    `STDIN` and `STDERR`.
@@ -582,7 +581,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    ](docker_remote_api_v1.9.md#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
@@ -1097,7 +1096,7 @@ Build an image from Dockerfile via stdin
     The archive must include a file called `Dockerfile`
     at its root. It may include any number of other files,
     which will be accessible in the build context (See the [*ADD build
-    command*](/reference/builder/#dockerbuilder)).
+    command*](../../reference/builder.md#dockerbuilder)).
 
 Query Parameters:
 
diff --git a/docs/reference/api/docker_remote_api_v1.14.md b/docs/reference/api/docker_remote_api_v1.14.md
index 51e03d83f4..fcf9bc297f 100644
--- a/docs/reference/api/docker_remote_api_v1.14.md
+++ b/docs/reference/api/docker_remote_api_v1.14.md
@@ -15,8 +15,7 @@ weight = 7
 
  - The Remote API has replaced `rcli`.
  - The daemon listens on `unix:///var/run/docker.sock` but you can
-   [Bind Docker to another host/port or a Unix socket](
-   /articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket).
+   [Bind Docker to another host/port or a Unix socket](../../articles/basics.md#bind-docker-to-another-hostport-or-a-unix-socket).
  - The API tends to be REST, but for some complex commands, like `attach`
    or `pull`, the HTTP connection is hijacked to transport `STDOUT`,
    `STDIN` and `STDERR`.
@@ -591,8 +590,7 @@ Status Codes:
     **Stream details**:
 
     When using the TTY setting is enabled in
-    [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    [`POST /containers/create`](#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
@@ -1107,7 +1105,7 @@ Build an image from Dockerfile via stdin
     The archive must include a file called `Dockerfile`
     at its root. It may include any number of other files,
     which will be accessible in the build context (See the [*ADD build
-    command*](/reference/builder/#dockerbuilder)).
+    command*](../../reference/builder.md#dockerbuilder)).
 
 Query Parameters:
 
diff --git a/docs/reference/api/docker_remote_api_v1.15.md b/docs/reference/api/docker_remote_api_v1.15.md
index 89deb61d01..62bd264a6a 100644
--- a/docs/reference/api/docker_remote_api_v1.15.md
+++ b/docs/reference/api/docker_remote_api_v1.15.md
@@ -15,8 +15,7 @@ weight = 6
 
  - The Remote API has replaced `rcli`.
  - The daemon listens on `unix:///var/run/docker.sock` but you can
-   [Bind Docker to another host/port or a Unix socket](
-   /articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket).
+   [Bind Docker to another host/port or a Unix socket](../../articles/basics.md#bind-docker-to-another-hostport-or-a-unix-socket).
  - The API tends to be REST, but for some complex commands, like `attach`
    or `pull`, the HTTP connection is hijacked to transport `STDOUT`,
    `STDIN` and `STDERR`.
@@ -740,8 +739,7 @@ Status Codes:
     **Stream details**:
 
     When using the TTY setting is enabled in
-    [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    [`POST /containers/create`](#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
@@ -1258,7 +1256,7 @@ Build an image from Dockerfile via stdin
     The archive must include a file called `Dockerfile`
     at its root. It may include any number of other files,
     which will be accessible in the build context (See the [*ADD build
-    command*](/reference/builder/#dockerbuilder)).
+    command*](../../reference/builder.md#dockerbuilder)).
 
 Query Parameters:
 
diff --git a/docs/reference/api/docker_remote_api_v1.16.md b/docs/reference/api/docker_remote_api_v1.16.md
index 3a1faa4100..a592114984 100644
--- a/docs/reference/api/docker_remote_api_v1.16.md
+++ b/docs/reference/api/docker_remote_api_v1.16.md
@@ -15,8 +15,7 @@ weight = 5
 
  - The Remote API has replaced `rcli`.
  - The daemon listens on `unix:///var/run/docker.sock` but you can
-   [Bind Docker to another host/port or a Unix socket](
-   /articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket).
+   [Bind Docker to another host/port or a Unix socket](../../articles/basics.md#bind-docker-to-another-hostport-or-a-unix-socket).
  - The API tends to be REST, but for some complex commands, like `attach`
    or `pull`, the HTTP connection is hijacked to transport `STDOUT`,
    `STDIN` and `STDERR`.
@@ -688,7 +687,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    ](#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
@@ -1205,7 +1204,7 @@ Build an image from Dockerfile via stdin
     The archive must include a file called `Dockerfile`
     at its root. It may include any number of other files,
     which will be accessible in the build context (See the [*ADD build
-    command*](/reference/builder/#dockerbuilder)).
+    command*](../../reference/builder.md#dockerbuilder)).
 
 Query Parameters:
 
diff --git a/docs/reference/api/docker_remote_api_v1.17.md b/docs/reference/api/docker_remote_api_v1.17.md
index 6c7df5068f..13c42276b3 100644
--- a/docs/reference/api/docker_remote_api_v1.17.md
+++ b/docs/reference/api/docker_remote_api_v1.17.md
@@ -15,8 +15,7 @@ weight = 4
 
  - The Remote API has replaced `rcli`.
  - The daemon listens on `unix:///var/run/docker.sock` but you can
-   [Bind Docker to another host/port or a Unix socket](
-   /articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket).
+   [Bind Docker to another host/port or a Unix socket](../../articles/basics.md#bind-docker-to-another-hostport-or-a-unix-socket).
  - The API tends to be REST, but for some complex commands, like `attach`
    or `pull`, the HTTP connection is hijacked to transport `STDOUT`,
    `STDIN` and `STDERR`.
@@ -846,7 +845,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    ](#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
@@ -1079,7 +1078,7 @@ the path to the alternate build instructions file to use.
 
 The archive may include any number of other files,
 which will be accessible in the build context (See the [*ADD build
-command*](/reference/builder/#dockerbuilder)).
+command*](../../reference/builder.md#dockerbuilder)).
 
 Query Parameters:
 
diff --git a/docs/reference/api/docker_remote_api_v1.18.md b/docs/reference/api/docker_remote_api_v1.18.md
index e3886f8718..dac318e6f2 100644
--- a/docs/reference/api/docker_remote_api_v1.18.md
+++ b/docs/reference/api/docker_remote_api_v1.18.md
@@ -15,8 +15,7 @@ weight = 3
 
  - The Remote API has replaced `rcli`.
  - The daemon listens on `unix:///var/run/docker.sock` but you can
-   [Bind Docker to another host/port or a Unix socket](
-   /articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket).
+   [Bind Docker to another host/port or a Unix socket](../../articles/basics.md#bind-docker-to-another-hostport-or-a-unix-socket).
  - The API tends to be REST, but for some complex commands, like `attach`
    or `pull`, the HTTP connection is hijacked to transport `STDOUT`,
    `STDIN` and `STDERR`.
@@ -895,7 +894,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    ](#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
@@ -1168,7 +1167,7 @@ the path to the alternate build instructions file to use.
 
 The archive may include any number of other files,
 which will be accessible in the build context (See the [*ADD build
-command*](/reference/builder/#dockerbuilder)).
+command*](../../reference/builder.md#dockerbuilder)).
 
 The build will also be canceled if the client drops the connection by quitting
 or being killed.
diff --git a/docs/reference/api/docker_remote_api_v1.19.md b/docs/reference/api/docker_remote_api_v1.19.md
index 7b258fdf32..e96c8a34c5 100644
--- a/docs/reference/api/docker_remote_api_v1.19.md
+++ b/docs/reference/api/docker_remote_api_v1.19.md
@@ -15,8 +15,7 @@ weight = 2
 
  - The Remote API has replaced `rcli`.
  - The daemon listens on `unix:///var/run/docker.sock` but you can
-   [Bind Docker to another host/port or a Unix socket](
-   /articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket).
+   [Bind Docker to another host/port or a Unix socket](../../articles/basics.md#bind-docker-to-another-hostport-or-a-unix-socket).
  - The API tends to be REST. However, for some complex commands, like `attach`
    or `pull`, the HTTP connection is hijacked to transport `stdout`,
    `stdin` and `stderr`.
@@ -914,7 +913,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    ](#create-a-container),
     the stream is the raw data from the process PTY and client's `stdin`.
     When the TTY is disabled, then the stream is multiplexed to separate
     `stdout` and `stderr`.
@@ -1192,7 +1191,7 @@ the path to the alternate build instructions file to use.
 
 The archive may include any number of other files,
 which are accessible in the build context (See the [*ADD build
-command*](/reference/builder/#dockerbuilder)).
+command*](../../reference/builder.md#dockerbuilder)).
 
 The build is canceled if the client drops the connection by quitting
 or being killed.
diff --git a/docs/reference/api/docker_remote_api_v1.20.md b/docs/reference/api/docker_remote_api_v1.20.md
index 4a5b3f0457..cbd0809bd3 100644
--- a/docs/reference/api/docker_remote_api_v1.20.md
+++ b/docs/reference/api/docker_remote_api_v1.20.md
@@ -15,8 +15,7 @@ weight = 1
 
  - The Remote API has replaced `rcli`.
  - The daemon listens on `unix:///var/run/docker.sock` but you can
-   [Bind Docker to another host/port or a Unix socket](
-   /articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket).
+   [Bind Docker to another host/port or a Unix socket](../../articles/basics.md#bind-docker-to-another-hostport-or-a-unix-socket).
  - The API tends to be REST. However, for some complex commands, like `attach`
    or `pull`, the HTTP connection is hijacked to transport `stdout`,
    `stdin` and `stderr`.
@@ -925,7 +924,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    ](#create-a-container),
     the stream is the raw data from the process PTY and client's `stdin`.
     When the TTY is disabled, then the stream is multiplexed to separate
     `stdout` and `stderr`.
@@ -1319,7 +1318,7 @@ the path to the alternate build instructions file to use.
 
 The archive may include any number of other files,
 which are accessible in the build context (See the [*ADD build
-command*](/reference/builder/#dockerbuilder)).
+command*](../../reference/builder.md#dockerbuilder)).
 
 The build is canceled if the client drops the connection by quitting
 or being killed.
diff --git a/docs/reference/api/docker_remote_api_v1.21.md b/docs/reference/api/docker_remote_api_v1.21.md
index e549d87372..a7b6884435 100644
--- a/docs/reference/api/docker_remote_api_v1.21.md
+++ b/docs/reference/api/docker_remote_api_v1.21.md
@@ -15,8 +15,7 @@ weight = 0
 
  - The Remote API has replaced `rcli`.
  - The daemon listens on `unix:///var/run/docker.sock` but you can
-   [Bind Docker to another host/port or a Unix socket](
-   /articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket).
+   [Bind Docker to another host/port or a Unix socket](../../articles/basics.md#bind-docker-to-another-hostport-or-a-unix-socket).
  - The API tends to be REST. However, for some complex commands, like `attach`
    or `pull`, the HTTP connection is hijacked to transport `stdout`,
    `stdin` and `stderr`.
@@ -962,7 +961,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    ](#create-a-container),
     the stream is the raw data from the process PTY and client's `stdin`.
     When the TTY is disabled, then the stream is multiplexed to separate
     `stdout` and `stderr`.
@@ -1356,7 +1355,7 @@ the path to the alternate build instructions file to use.
 
 The archive may include any number of other files,
 which are accessible in the build context (See the [*ADD build
-command*](/reference/builder/#dockerbuilder)).
+command*](../../reference/builder.md#dockerbuilder)).
 
 The build is canceled if the client drops the connection by quitting
 or being killed.
@@ -1383,7 +1382,7 @@ Query Parameters:
         these values at build-time. Docker uses the `buildargs` as the environment
         context for command(s) run via the Dockerfile's `RUN` instruction or for
         variable expansion in other Dockerfile instructions. This is not meant for
-        passing secret values. [Read more about the buildargs instruction](/reference/builder/#arg)
+        passing secret values. [Read more about the buildargs instruction](../../reference/builder.md#arg)
 
     Request Headers:
 
diff --git a/docs/reference/api/docker_remote_api_v1.6.md b/docs/reference/api/docker_remote_api_v1.6.md
index 41976816a6..dd9c6ded9e 100644
--- a/docs/reference/api/docker_remote_api_v1.6.md
+++ b/docs/reference/api/docker_remote_api_v1.6.md
@@ -531,7 +531,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    ](docker_remote_api_v1.9.md#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
diff --git a/docs/reference/api/docker_remote_api_v1.7.md b/docs/reference/api/docker_remote_api_v1.7.md
index e3206e8598..8a73342667 100644
--- a/docs/reference/api/docker_remote_api_v1.7.md
+++ b/docs/reference/api/docker_remote_api_v1.7.md
@@ -476,7 +476,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.7/#create-a-container),
+    ](docker_remote_api_v1.7.md#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
@@ -992,7 +992,7 @@ Build an image from Dockerfile via stdin
     The archive must include a file called `Dockerfile`
     at its root. It may include any number of other files,
     which will be accessible in the build context (See the [*ADD build
-    command*](/builder/#dockerbuilder)).
+    command*](../../reference/builder.md#dockerbuilder)).
 
 Query Parameters:
 
diff --git a/docs/reference/api/docker_remote_api_v1.8.md b/docs/reference/api/docker_remote_api_v1.8.md
index a1a231d54e..62324df8e1 100644
--- a/docs/reference/api/docker_remote_api_v1.8.md
+++ b/docs/reference/api/docker_remote_api_v1.8.md
@@ -524,7 +524,7 @@ Status Codes:
 
     When using the TTY setting is enabled in
     [`POST /containers/create`
-    ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
+    ](docker_remote_api_v1.9.md#create-a-container),
     the stream is the raw data from the process PTY and client's stdin.
     When the TTY is disabled, then the stream is multiplexed to separate
     stdout and stderr.
@@ -1042,7 +1042,7 @@ Build an image from Dockerfile via stdin
     The archive must include a file called `Dockerfile`
     at its root. It may include any number of other files,
     which will be accessible in the build context (See the [*ADD build
-    command*](/reference/builder/#dockerbuilder)).
+    command*](../../reference/builder.md#dockerbuilder)).
 
 Query Parameters:
 
diff --git a/docs/reference/api/docker_remote_api_v1.9.md b/docs/reference/api/docker_remote_api_v1.9.md
index 56dbfaae62..ae18deb4c6 100644
--- a/docs/reference/api/docker_remote_api_v1.9.md
+++ b/docs/reference/api/docker_remote_api_v1.9.md
@@ -1045,7 +1045,7 @@ Build an image from Dockerfile using a POST body.
     The archive must include a file called `Dockerfile`
  at its root. It may include any number of other files,
     which will be accessible in the build context (See the [*ADD build
-    command*](/reference/builder/#add)).
+    command*](../../reference/builder.md#add)).
 
 Query Parameters:
 
diff --git a/docs/reference/api/hub_registry_spec.md b/docs/reference/api/hub_registry_spec.md
index df2904a3f6..581a01457d 100644
--- a/docs/reference/api/hub_registry_spec.md
+++ b/docs/reference/api/hub_registry_spec.md
@@ -11,7 +11,7 @@ parent="smn_hub_ref"
 # The Docker Hub and the Registry v1
 
 This API is deprecated as of 1.7. To view the old version, see the [go
-here](http://docs.docker.com/v1.7/reference/api/hub_registry_spec/) in
+here](hub_registry_spec.md) in
 the 1.7 documentation. If you want an overview of the current features in
 Docker Hub or other image management features see the [image management
-overview](/userguide/image_management/) in the current documentation set.
\ No newline at end of file
+overview](../../userguide/image_management.md) in the current documentation set.
\ No newline at end of file
diff --git a/docs/reference/builder.md b/docs/reference/builder.md
index 34a4fef0ef..f022d51d1f 100644
--- a/docs/reference/builder.md
+++ b/docs/reference/builder.md
@@ -18,11 +18,11 @@ instructions in succession.
 
 This page describes the commands you can use in a `Dockerfile`. When you are
 done reading this page, refer to the [`Dockerfile` Best
-Practices](/articles/dockerfile_best-practices) for a tip-oriented guide.
+Practices](../articles/dockerfile_best-practices.md) for a tip-oriented guide.
 
 ## Usage
 
-The [`docker build`](/reference/commandline/build/) command builds an image from
+The [`docker build`](commandline/build.md) command builds an image from
 a `Dockerfile` and a *context*. The build's context is the files at a specified
 location `PATH` or `URL`. The `PATH` is a directory on your local filesystem.
 The `URL` is a the location of a Git repository.
@@ -75,7 +75,7 @@ instructions.
 Whenever possible, Docker will re-use the intermediate images (cache),
 to accelerate the `docker build` process significantly. This is indicated by
 the `Using cache` message in the console output.
-(For more information, see the [Build cache section](/articles/dockerfile_best-practices/#build-cache)) in the
+(For more information, see the [Build cache section](../articles/dockerfile_best-practices.md#build-cache)) in the
 `Dockerfile` best practices guide:
 
     $ docker build -t SvenDowideit/ambassador .
@@ -92,7 +92,7 @@ the `Using cache` message in the console output.
     Successfully built 1a5ffc17324d
 
 When you're done with your build, you're ready to look into [*Pushing a
-repository to its registry*]( /userguide/dockerrepos/#contributing-to-docker-hub).
+repository to its registry*](../userguide/dockerrepos.md#contributing-to-docker-hub).
 
 ## Format
 
@@ -106,7 +106,7 @@ be UPPERCASE in order to distinguish them from arguments more easily.
 
 Docker runs the instructions in a `Dockerfile` in order. **The
 first instruction must be \`FROM\`** in order to specify the [*Base
-Image*](/reference/glossary/#base-image) from which you are building.
+Image*](glossary.md#base-image) from which you are building.
 
 Docker will treat lines that *begin* with `#` as a
 comment. A `#` marker anywhere else in the line will
@@ -283,11 +283,10 @@ Or
 
     FROM <image>@<digest>
 
-The `FROM` instruction sets the [*Base Image*](/reference/glossary/#base-image)
+The `FROM` instruction sets the [*Base Image*](glossary.md#base-image)
 for subsequent instructions. As such, a valid `Dockerfile` must have `FROM` as
 its first instruction. The image can be any valid image – it is especially easy
-to start by **pulling an image** from the [*Public Repositories*](
-/userguide/dockerrepos).
+to start by **pulling an image** from the [*Public Repositories*](../userguide/dockerrepos.md).
 
 - `FROM` must be the first non-comment instruction in the `Dockerfile`.
 
@@ -358,7 +357,7 @@ cache for `RUN` instructions can be invalidated by using the `--no-cache`
 flag, for example `docker build --no-cache`.
 
 See the [`Dockerfile` Best Practices
-guide](/articles/dockerfile_best-practices/#build-cache) for more information.
+guide](../articles/dockerfile_best-practices.md#build-cache) for more information.
 
 The cache for `RUN` instructions can be invalidated by `ADD` instructions. See
 [below](#add) for details.
@@ -488,14 +487,14 @@ To view an image's labels, use the `docker inspect` command.
 The `EXPOSE` instructions informs Docker that the container will listen on the
 specified network ports at runtime. Docker uses this information to interconnect
 containers using links (see the [Docker User
-Guide](/userguide/dockerlinks)) and to determine which ports to expose to the
-host when [using the -P flag](/reference/run/#expose-incoming-ports).
+Guide](../userguide/dockerlinks.md) and to determine which ports to expose to the
+host when [using the -P flag](run.md#expose-incoming-ports).
 
 > **Note**:
 > `EXPOSE` doesn't define which ports can be exposed to the host or make ports
 > accessible from the host by default. To expose ports to the host, at runtime,
-> [use the `-p` flag](/userguide/dockerlinks) or
-> [the -P flag](/reference/run/#expose-incoming-ports).
+> [use the `-p` flag](../userguide/dockerlinks.md) or
+> [the -P flag](run.md#expose-incoming-ports).
 
 ## ENV
 
@@ -595,7 +594,7 @@ of whether or not the file has changed and the cache should be updated.
 > following instructions from the Dockerfile if the contents of `<src>` have
 > changed. This includes invalidating the cache for `RUN` instructions.
 > See the [`Dockerfile` Best Practices
-guide](/articles/dockerfile_best-practices/#build-cache) for more information.
+guide](../articles/dockerfile_best-practices.md#build-cache) for more information.
 
 
 `ADD` obeys the following rules:
@@ -938,7 +937,7 @@ containers. The value can be a JSON array, `VOLUME ["/var/log/"]`, or a plain
 string with multiple arguments, such as `VOLUME /var/log` or `VOLUME /var/log
 /var/db`. For more information/examples and mounting instructions via the
 Docker client, refer to 
-[*Share Directories via Volumes*](/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume)
+[*Share Directories via Volumes*](../userguide/dockervolumes.md#mount-a-host-directory-as-a-data-volume)
 documentation.
 
 The `docker run` command initializes the newly created volume with any data 
@@ -1191,7 +1190,7 @@ or a signal name in the format SIGNAME, for instance SIGKILL.
 ## Dockerfile examples
 
 Below you can see some examples of Dockerfile syntax. If you're interested in
-something more realistic, take a look at the list of [Dockerization examples](/examples/).
+something more realistic, take a look at the list of [Dockerization examples](../examples/).
 
 ```
 # Nginx
diff --git a/docs/reference/commandline/build.md b/docs/reference/commandline/build.md
index 83b405cd6d..94d2cc764e 100644
--- a/docs/reference/commandline/build.md
+++ b/docs/reference/commandline/build.md
@@ -37,7 +37,7 @@ parent = "smn_cli"
 Builds Docker images from a Dockerfile and a "context". A build's context is
 the files located in the specified `PATH` or `URL`. The build process can refer
 to any of the files in the context. For example, your build can use an
-[*ADD*](/reference/builder/#add) instruction to reference a file in the
+[*ADD*](../builder.md#add) instruction to reference a file in the
 context.
 
 The `URL` parameter can specify the location of a Git repository; the repository
@@ -93,7 +93,7 @@ In most cases, it's best to put each Dockerfile in an empty directory. Then,
 add to that directory only the files needed for building the Dockerfile. To
 increase the build's performance, you can exclude files and directories by
 adding a `.dockerignore` file to that directory as well. For information on
-creating one, see the [.dockerignore file](/reference/builder#dockerignore-file).
+creating one, see the [.dockerignore file](../builder.md#dockerignore-file).
 
 If the Docker client loses connection to the daemon, the build is canceled.
 This happens if you interrupt the Docker client with `ctrl-c` or if the Docker
@@ -124,7 +124,7 @@ There should be informational output of the reason for failure output to
 
 See also:
 
-[*Dockerfile Reference*](/reference/builder).
+[*Dockerfile Reference*](../builder.md).
 
 ## Examples
 
@@ -160,7 +160,7 @@ where to find the files for the "context" of the build on the Docker daemon.
 Remember that the daemon could be running on a remote machine and that no
 parsing of the Dockerfile happens at the client side (where you're running
 `docker build`). That means that *all* the files at `PATH` get sent, not just
-the ones listed to [*ADD*](/reference/builder/#add) in the Dockerfile.
+the ones listed to [*ADD*](../builder.md#add) in the Dockerfile.
 
 The transfer of context from the local machine to the Docker daemon is what the
 `docker` client means when you see the "Sending build context" message.
@@ -191,7 +191,7 @@ you must use `--rm=false`. This does not affect the build cache.
 This example shows the use of the `.dockerignore` file to exclude the `.git`
 directory from the context. Its effect can be seen in the changed size of the
 uploaded context. The builder reference contains detailed information on
-[creating a .dockerignore file](../../builder/#dockerignore-file)
+[creating a .dockerignore file](../builder.md#dockerignore-file)
 
     $ docker build -t vieux/apache:2.0 .
 
@@ -250,11 +250,11 @@ the command line.
 
 When `docker build` is run with the `--cgroup-parent` option the containers
 used in the build will be run with the [corresponding `docker run`
-flag](/reference/run/#specifying-custom-cgroups).
+flag](../run.md#specifying-custom-cgroups).
 
 Using the `--ulimit` option with `docker build` will cause each build step's
 container to be started using those [`--ulimit`
-flag values](/reference/run/#setting-ulimits-in-a-container).
+flag values](../run.md#setting-ulimits-in-a-container).
 
 You can use `ENV` instructions in a Dockerfile to define variable
 values. These values persist in the built image. However, often
@@ -273,4 +273,4 @@ Dockerfile. Also, these values don't persist in the intermediate or final images
 like `ENV` values do.
 
 For detailed information on using `ARG` and `ENV` instructions, see the
-[Dockerfile reference](/reference/builder).
+[Dockerfile reference](../builder.md).
diff --git a/docs/reference/commandline/cli.md b/docs/reference/commandline/cli.md
index bef1d9e61d..d2218667d7 100644
--- a/docs/reference/commandline/cli.md
+++ b/docs/reference/commandline/cli.md
@@ -31,7 +31,7 @@ each `docker` command with `sudo`. To avoid having to use `sudo` with the
 `docker` and add users to it.
 
 For more information about installing Docker or `sudo` configuration, refer to
-the [installation](/installation) instructions for your operating system.
+the [installation](../../installation) instructions for your operating system.
 
 ## Environment variables
 
@@ -98,7 +98,7 @@ The property `psFormat` specifies the default format for `docker ps` output.
 When the `--format` flag is not provided with the `docker ps` command,
 Docker's client uses this property. If this property is not set, the client
 falls back to the default table format. For a list of supported formatting
-directives, see the [**Formatting** section in the `docker ps` documentation](../ps)
+directives, see the [**Formatting** section in the `docker ps` documentation](ps.md)
 
 Following is a sample `config.json` file:
 
diff --git a/docs/reference/commandline/create.md b/docs/reference/commandline/create.md
index c705919953..3324fc2818 100644
--- a/docs/reference/commandline/create.md
+++ b/docs/reference/commandline/create.md
@@ -83,8 +83,7 @@ This is useful when you want to set up a container configuration ahead of time
 so that it is ready to start when you need it. The initial status of the
 new container is `created`.
 
-Please see the [run command](/reference/commandline/run) section and the [Docker run reference](
-/reference/run/) for more details.
+Please see the [run command](run.md) section and the [Docker run reference](run.md) for more details.
 
 ## Examples
 
diff --git a/docs/reference/commandline/daemon.md b/docs/reference/commandline/daemon.md
index 94b3df0c66..657b8d9778 100644
--- a/docs/reference/commandline/daemon.md
+++ b/docs/reference/commandline/daemon.md
@@ -73,7 +73,7 @@ To run the daemon with debug output, use `docker daemon -D`.
 
 ## Daemon socket option
 
-The Docker daemon can listen for [Docker Remote API](/reference/api/docker_remote_api/)
+The Docker daemon can listen for [Docker Remote API](../api/docker_remote_api.md)
 requests via three different types of Socket: `unix`, `tcp`, and `fd`.
 
 By default, a `unix` domain socket (or IPC socket) is created at
@@ -83,7 +83,7 @@ membership.
 If you need to access the Docker daemon remotely, you need to enable the `tcp`
 Socket. Beware that the default setup provides un-encrypted and
 un-authenticated direct access to the Docker daemon - and should be secured
-either using the [built in HTTPS encrypted socket](/articles/https/), or by
+either using the [built in HTTPS encrypted socket](../../articles/https/), or by
 putting a secure web proxy in front of it. You can listen on port `2375` on all
 network interfaces with `-H tcp://0.0.0.0:2375`, or on a particular network
 interface using its IP address: `-H tcp://192.168.59.103:2375`. It is
diff --git a/docs/reference/commandline/export.md b/docs/reference/commandline/export.md
index 49eb1ae047..96bf544733 100644
--- a/docs/reference/commandline/export.md
+++ b/docs/reference/commandline/export.md
@@ -23,7 +23,7 @@ the container, `docker export` will export the contents of the *underlying*
 directory, not the contents of the volume.
 
 Refer to [Backup, restore, or migrate data
-volumes](/userguide/dockervolumes/#backup-restore-or-migrate-data-volumes) in
+volumes](../../userguide/dockervolumes.md#backup-restore-or-migrate-data-volumes) in
 the user guide for examples on exporting data in a volume.
 
 ## Examples
diff --git a/docs/reference/commandline/index.md b/docs/reference/commandline/index.md
index d9216780f6..ef99b91168 100644
--- a/docs/reference/commandline/index.md
+++ b/docs/reference/commandline/index.md
@@ -12,74 +12,74 @@ parent = "mn_reference"
 
 # The Docker commands
 
-This section contains reference information on using Docker's command line client. Each command has a reference page along with samples. If you are unfamiliar with the command line, you should start by reading about how to ["Use the Docker command line"](cli).  
+This section contains reference information on using Docker's command line client. Each command has a reference page along with samples. If you are unfamiliar with the command line, you should start by reading about how to ["Use the Docker command line"](cli.md).  
 
-You start the Docker daemon with the command line. How you start the daemon affects your Docker containers. For that reason you should also make sure to read the [`daemon`](daemon) reference page.
+You start the Docker daemon with the command line. How you start the daemon affects your Docker containers. For that reason you should also make sure to read the [`daemon`](daemon.md) reference page.
 
 ### Docker management commands
 
-* [daemon](daemon)
-* [info](info)
-* [inspect](inspect)
-* [version](version)
+* [daemon](daemon.md)
+* [info](info.md)
+* [inspect](inspect.md)
+* [version](version.md)
 
 ### Image commands
 
-* [build](build)
-* [commit](commit)
-* [export](export)
-* [history](history)
-* [images](images)
-* [import](import)
-* [load](load)
-* [rmi](rmi)
-* [save](save)
-* [tag](tag)
+* [build](build.md)
+* [commit](commit.md)
+* [export](export.md)
+* [history](history.md)
+* [images](images.md)
+* [import](import.md)
+* [load](load.md)
+* [rmi](rmi.md)
+* [save](save.md)
+* [tag](tag.md)
 
 ### Container commands
 
-* [attach](attach)
-* [cp](cp)
-* [create](create)
-* [diff](diff)
-* [events](events)
-* [exec](exec)
-* [kill](kill)
-* [logs](logs)
-* [pause](pause)
-* [port](port)
-* [ps](ps)
-* [rename](rename)
-* [restart](restart)
-* [rm](rm)
-* [run](run)
-* [start](start)
-* [stats](stats)
-* [stop](stop)
-* [top](top)
-* [unpause](unpause)
-* [wait](wait)
+* [attach](attach.md)
+* [cp](cp.md)
+* [create](create.md)
+* [diff](diff.md)
+* [events](events.md)
+* [exec](exec.md)
+* [kill](kill.md)
+* [logs](logs.md)
+* [pause](pause.md)
+* [port](port.md)
+* [ps](ps.md)
+* [rename](rename.md)
+* [restart](restart.md)
+* [rm](rm.md)
+* [run](run.md)
+* [start](start.md)
+* [stats](stats.md)
+* [stop](stop.md)
+* [top](top.md)
+* [unpause](unpause.md)
+* [wait](wait.md)
 
 ### Hub and registry commands
 
-* [login](login)
-* [logout](logout)
-* [pull](pull)
-* [push](push)
-* [search](search)
+* [login](login.md)
+* [logout](logout.md)
+* [pull](pull.md)
+* [push](push.md)
+* [search](search.md)
 
 ### Network and connectivity commands
 
-* [network_connect](network_connect)
-* [network_create](network_create)
-* [network_disconnect](network_disconnect)
-* [network_inspect](network_inspect)
-* [network_ls](network_ls)
-* [network_rm](network_rm)
+* [network_connect](network_connect.md)
+* [network_create](network_create.md)
+* [network_disconnect](network_disconnect.md)
+* [network_inspect](network_inspect.md)
+* [network_ls](network_ls.md)
+* [network_rm](network_rm.md)
 
 ### Shared data volume commands
 
-* [volume_create](volume_create)
-* [volume_inspect](volume_inspect)
-* [volume_ls](volume_ls)
-* [volume_rm](volume_rm)
+* [volume_create](volume_create.md)
+* [volume_inspect](volume_inspect.md)
+* [volume_ls](volume_ls.md)
+* [volume_rm](volume_rm.md)
diff --git a/docs/reference/commandline/run.md b/docs/reference/commandline/run.md
index 4bb5ec1899..9db6229a42 100644
--- a/docs/reference/commandline/run.md
+++ b/docs/reference/commandline/run.md
@@ -81,13 +81,12 @@ specified image, and then `starts` it using the specified command. That is,
 previous changes intact using `docker start`. See `docker ps -a` to view a list
 of all containers.
 
-There is detailed information about `docker run` in the [Docker run reference](
-/reference/run/).
+There is detailed information about `docker run` in the [Docker run reference](run.md).
 
 The `docker run` command can be used in combination with `docker commit` to
-[*change the command that a container runs*](/reference/commandline/commit).
+[*change the command that a container runs*](commit.md).
 
-See the [Docker User Guide](/userguide/dockerlinks/) for more detailed
+See the [Docker User Guide](../../userguide/dockerlinks.md) for more detailed
 information about the `--expose`, `-p`, `-P` and `--link` parameters,
 and linking containers.
 
@@ -170,14 +169,14 @@ manipulate the host's Docker daemon.
     $ docker run -p 127.0.0.1:80:8080 ubuntu bash
 
 This binds port `8080` of the container to port `80` on `127.0.0.1` of
-the host machine. The [Docker User Guide](/userguide/dockerlinks/)
+the host machine. The [Docker User Guide](../../userguide/dockerlinks.md)
 explains in detail how to manipulate ports in Docker.
 
     $ docker run --expose 80 ubuntu bash
 
 This exposes port `80` of the container for use within a link without
 publishing the port to the host system's interfaces. The [Docker User
-Guide](/userguide/dockerlinks) explains in detail how to manipulate
+Guide](../../userguide/dockerlinks.md) explains in detail how to manipulate
 ports in Docker.
 
     $ docker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash
@@ -279,7 +278,7 @@ format:
 You can load multiple label-files by supplying multiple  `--label-file` flags.
 
 For additional information on working with labels, see [*Labels - custom
-metadata in Docker*](/userguide/labels-custom-metadata/) in the Docker User
+metadata in Docker*](../../userguide/labels-custom-metadata.md) in the Docker User
 Guide.
 
     $ docker run --link /redis:redis --name console ubuntu bash
@@ -466,7 +465,7 @@ This will run the `redis` container with a restart policy of **always**
 so that if the container exits, Docker will restart it.
 
 More detailed information on restart policies can be found in the
-[Restart Policies (--restart)](/reference/run/#restart-policies-restart)
+[Restart Policies (--restart)](../run.md#restart-policies-restart)
 section of the Docker run reference page.
 
 ## Adding entries to a container hosts file
diff --git a/docs/reference/commandline/search.md b/docs/reference/commandline/search.md
index 07d9ca28c4..7672c13b61 100644
--- a/docs/reference/commandline/search.md
+++ b/docs/reference/commandline/search.md
@@ -21,7 +21,7 @@ parent = "smn_cli"
 
 Search [Docker Hub](https://hub.docker.com) for images
 
-See [*Find Public Images on Docker Hub*](/userguide/dockerrepos/#searching-for-images) for
+See [*Find Public Images on Docker Hub*](../../userguide/dockerrepos.md#searching-for-images) for
 more details on finding shared images from the command line.
 
 > **Note:**
diff --git a/docs/reference/commandline/tag.md b/docs/reference/commandline/tag.md
index abcc23a3de..a325efaa4b 100644
--- a/docs/reference/commandline/tag.md
+++ b/docs/reference/commandline/tag.md
@@ -18,4 +18,4 @@ parent = "smn_cli"
       --help=false         Print usage
 
 You can group your images together using names and tags, and then upload them
-to [*Share Images via Repositories*](/userguide/dockerrepos/#contributing-to-docker-hub).
+to [*Share Images via Repositories*](../../userguide/dockerrepos.md#contributing-to-docker-hub).
diff --git a/docs/reference/commandline/volume_rm.md b/docs/reference/commandline/volume_rm.md
index 6d09723ca4..93f746c4e2 100644
--- a/docs/reference/commandline/volume_rm.md
+++ b/docs/reference/commandline/volume_rm.md
@@ -1,6 +1,6 @@
 <!--[metadata]>
 +++
-title = "ps"
+title = "volume rm"
 description = "the volume rm command description and usage"
 keywords = ["volume, rm"]
 [menu.main]
diff --git a/docs/reference/logging/fluentd.md b/docs/reference/logging/fluentd.md
index 044f2e9fa1..12ea2ab387 100644
--- a/docs/reference/logging/fluentd.md
+++ b/docs/reference/logging/fluentd.md
@@ -69,7 +69,7 @@ By default, the logging driver connects to `localhost:24224`. Supply the
 ### tag
 
 By default, Docker uses the first 12 characters of the container ID to tag log messages.
-Refer to the [log tag option documentation](/reference/logging/log_tags/) for customizing
+Refer to the [log tag option documentation](log_tags.md) for customizing
 the log tag format.
 
 
diff --git a/docs/reference/logging/index.md b/docs/reference/logging/index.md
index 27bac5730b..58d9ea8557 100644
--- a/docs/reference/logging/index.md
+++ b/docs/reference/logging/index.md
@@ -13,8 +13,8 @@ weight=8
 
 # Logging Drivers
 
-* [Configuring logging drivers](overview)
-* [Configuring log tags](log_tags)
-* [Fluentd logging driver](fluentd)
-* [Journald logging driver](journald)
-* [Amazon CloudWatch Logs logging driver](awslogs)
+* [Configuring logging drivers](overview.md)
+* [Configuring log tags](log_tags.md)
+* [Fluentd logging driver](fluentd.md)
+* [Journald logging driver](journald.md)
+* [Amazon CloudWatch Logs logging driver](awslogs.md)
diff --git a/docs/reference/logging/overview.md b/docs/reference/logging/overview.md
index 4e3f5bc723..9911a77133 100644
--- a/docs/reference/logging/overview.md
+++ b/docs/reference/logging/overview.md
@@ -84,14 +84,14 @@ the following named facilities:
 * `local7`
 
 By default, Docker uses the first 12 characters of the container ID to tag log messages.
-Refer to the [log tag option documentation](/reference/logging/log_tags/) for customizing
+Refer to the [log tag option documentation](log_tags.md) for customizing
 the log tag format.
 
 
 ## journald options
 
 The `journald` logging driver stores the container id in the journal's `CONTAINER_ID` field. For detailed information on
-working with this logging driver, see [the journald logging driver](/reference/logging/journald/)
+working with this logging driver, see [the journald logging driver](journald.md)
 reference documentation.
 
 ## gelf options
@@ -109,7 +109,7 @@ driver to a GELF remote server at `192.168.0.42` on port `12201`
     $ docker run --log-driver=gelf --log-opt gelf-address=udp://192.168.0.42:12201
 
 By default, Docker uses the first 12 characters of the container ID to tag log messages.
-Refer to the [log tag option documentation](/reference/logging/log_tags/) for customizing
+Refer to the [log tag option documentation](log_tags.md) for customizing
 the log tag format.
 
 
@@ -126,7 +126,7 @@ For example, to specify both additional options:
 
 If container cannot connect to the Fluentd daemon on the specified address,
 the container stops immediately. For detailed information on working with this
-logging driver, see [the fluentd logging driver](/reference/logging/fluentd/)
+logging driver, see [the fluentd logging driver](fluentd.md)
 
 ## Specify Amazon CloudWatch Logs options
 
@@ -137,5 +137,4 @@ The Amazon CloudWatch Logs logging driver supports the following options:
     --log-opt awslogs-stream=<log_stream_name>
 
 
-For detailed information on working with this logging driver, see [the awslogs logging driver](/reference/logging/awslogs/)
-reference documentation.
+For detailed information on working with this logging driver, see [the awslogs logging driver](awslogs.md) reference documentation.
diff --git a/docs/reference/run.md b/docs/reference/run.md
index 287d91d44d..5d805b6e70 100644
--- a/docs/reference/run.md
+++ b/docs/reference/run.md
@@ -31,7 +31,7 @@ The basic `docker run` command takes this form:
 
     $ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
 
-The `docker run` command must specify an [*IMAGE*](/reference/glossary/#image)
+The `docker run` command must specify an [*IMAGE*](glossary.md#image)
 to derive the container from. An image developer can define image
 defaults related to:
 
@@ -45,11 +45,11 @@ With the `docker run [OPTIONS]` an operator can add to or override the
 image defaults set by a developer. And, additionally, operators can
 override nearly all the defaults set by the Docker runtime itself. The
 operator's ability to override image and Docker runtime defaults is why
-[*run*](/reference/commandline/cli/run/) has more options than any
+[*run*](commandline/run.md) has more options than any
 other `docker` command.
 
 To learn how to interpret the types of `[OPTIONS]`, see [*Option
-types*](/reference/commandline/cli/#option-types).
+types*](commandline/cli.md#option-types).
 
 > **Note**: Depending on your Docker system configuration, you may be
 > required to preface the `docker run` command with `sudo`. To avoid
@@ -110,7 +110,7 @@ volumes. These are required because the container is no longer listening to the
 command line where `docker run` was run.
 
 To reattach to a detached container, use `docker`
-[*attach*](/reference/commandline/attach) command.
+[*attach*](commandline/attach.md) command.
 
 ### Foreground
 
@@ -159,7 +159,7 @@ The UUID identifiers come from the Docker daemon, and if you do not
 assign a name to the container with `--name` then the daemon will also
 generate a random string name too. The name can become a handy way to
 add meaning to a container since you can use this name when defining
-[*links*](/userguide/dockerlinks) (or any
+[*links*](../userguide/dockerlinks.md) (or any
 other place you need to identify a container). This works for both
 background and foreground Docker containers.
 
@@ -404,8 +404,8 @@ Using the `--restart` flag on Docker run you can specify a restart policy for
 how a container should or should not be restarted on exit.
 
 When a restart policy is active on a container, it will be shown as either `Up`
-or `Restarting` in [`docker ps`](/reference/commandline/ps). It can also be
-useful to use [`docker events`](/reference/commandline/events) to see the
+or `Restarting` in [`docker ps`](commandline/ps.md). It can also be
+useful to use [`docker events`](commandline/events.md) to see the
 restart policy in effect.
 
 Docker supports the following restart policies:
@@ -469,8 +469,7 @@ for at least 10 seconds), the delay is reset to its default value of 100 ms.
 You can specify the maximum amount of times Docker will try to restart the
 container when using the **on-failure** policy.  The default is that Docker
 will try forever to restart the container. The number of (attempted) restarts
-for a container can be obtained via [`docker inspect`](
-/reference/commandline/inspect). For example, to get the number of restarts
+for a container can be obtained via [`docker inspect`](commandline/inspect.md). For example, to get the number of restarts
 for container "my-container";
 
     $ docker inspect -f "{{ .RestartCount }}" my-container
@@ -1076,12 +1075,12 @@ container's logging driver. The following options are supported:
 
 The `docker logs` command is available only for the `json-file` and `journald`
 logging drivers.  For detailed information on working with logging drivers, see
-[Configure a logging driver](/reference/logging/overview/).
+[Configure a logging driver](logging/overview.md).
 
 
 ## Overriding Dockerfile image defaults
 
-When a developer builds an image from a [*Dockerfile*](/reference/builder)
+When a developer builds an image from a [*Dockerfile*](builder.md)
 or when she commits it, the developer can set a number of default parameters
 that take effect when the image starts up as a container.
 
@@ -1192,7 +1191,7 @@ then the client container can access the exposed port via a private
 networking interface. Docker will set some environment variables in the
 client container to help indicate which interface and port to use. For
 more information on linking, see [the guide on linking container
-together](/userguide/dockerlinks/)
+together](../userguide/dockerlinks.md)
 
 ### ENV (environment variables)
 
@@ -1230,7 +1229,7 @@ variables automatically:
 
 The container may also include environment variables defined
 as a result of the container being linked with another container. See
-the [*Container Links*](/userguide/dockerlinks/#connect-with-the-linking-system)
+the [*Container Links*](../userguide/dockerlinks.md#connect-with-the-linking-system)
 section for more details.
 
 Additionally, the operator can **set any environment variable** in the
@@ -1317,11 +1316,11 @@ container's `/etc/hosts` entry will be automatically updated.
     --volumes-from="": Mount all volumes from the given container(s)
 
 > **Note**:
-> The auto-creation of the host path has been [*deprecated*](/misc/deprecated/#auto-creating-missing-host-paths-for-bind-mounts).
+> The auto-creation of the host path has been [*deprecated*](../misc/deprecated.md#auto-creating-missing-host-paths-for-bind-mounts).
 
 The volumes commands are complex enough to have their own documentation
 in section [*Managing data in
-containers*](/userguide/dockervolumes). A developer can define
+containers*](../userguide/dockervolumes.md). A developer can define
 one or more `VOLUME`'s associated with an image, but only the operator
 can give access from one container to another (or from a container to a
 volume mounted on the host).
diff --git a/docs/security/trust/content_trust.md b/docs/security/trust/content_trust.md
index 07ee5c87b2..06024a9e80 100644
--- a/docs/security/trust/content_trust.md
+++ b/docs/security/trust/content_trust.md
@@ -61,7 +61,7 @@ tag could be unsigned while the `3.1.6` tag could be signed. It is the
 responsibility of the image publisher to decide if an image tag is signed or
 not. In this representation, some image tags are signed, others are not:
 
-![Signed tags](../images/tag_signing.png)
+![Signed tags](images/tag_signing.png)
 
 Publishers can choose to sign a specific tag or not. As a result, the content of
 an unsigned tag and that of a signed tag with the same name may not match. For
@@ -77,7 +77,7 @@ with trusted images. Enabling content trust is like wearing a pair of
 rose-colored glasses. Consumers "see" only signed images tags and the less
 desirable, unsigned image tags are "invisible" to them.
 
-![Trust view](../images/trust_view.png)
+![Trust view](images/trust_view.png)
 
 To the consumer who does not enabled content trust, nothing about how they
 work with Docker images changes. Every image is visible regardless of whether it
@@ -121,7 +121,7 @@ service that isn't directly exposed to the internet and are encrypted at rest.
 
 The following image depicts the various signing keys and their relationships:
 
-![Content trust components](../images/trust_components.png)
+![Content trust components](images/trust_components.png)
 
 >**WARNING**: Loss of the root key is **very difficult** to recover from.
 >Correcting this loss requires intervention from [Docker
@@ -131,8 +131,8 @@ The following image depicts the various signing keys and their relationships:
 
 You should backup the root key somewhere safe. Given that it is only required
 to create new repositories, it is a good idea to store it offline. Make sure you
-read [Manage keys for content trust](/security/trust/trust_key_mng) information
-for details on securing, and backing up your keys.
+read [Manage keys for content trust](trust_key_mng.md) information
+for details on securing, and backing up your keys. 
 
 ## Survey of typical content trust operations
 
@@ -297,6 +297,6 @@ $  docker push --disable-content-trust docker/trusttest:untrusted
 
 ## Related information
 
-* [Manage keys for content trust](/security/trust/trust_key_mng)
-* [Automation with content trust](/security/trust/trust_automation)
-* [Play in a content trust sandbox](/security/trust/trust_sandbox)
+* [Manage keys for content trust](trust_key_mng.md)
+* [Automation with content trust](trust_automation.md)
+* [Play in a content trust sandbox](trust_sandbox.md)
diff --git a/docs/security/trust/index.md b/docs/security/trust/index.md
index 2264c5dfec..cace5e51a0 100644
--- a/docs/security/trust/index.md
+++ b/docs/security/trust/index.md
@@ -14,8 +14,8 @@ weight=4
 
 The following topics are available:
 
-* [Content trust in Docker](/security/trust/content_trust) 
-* [Manage keys for content trust](/security/trust/trust_key_mng)
-* [Automation with content trust](/security/trust/trust_automation)
-* [Play in a content trust sandbox](/security/trust/trust_sandbox)
+* [Content trust in Docker](content_trust.md) 
+* [Manage keys for content trust](trust_key_mng.md)
+* [Automation with content trust](trust_automation.md)
+* [Play in a content trust sandbox](trust_sandbox.md)
 
diff --git a/docs/security/trust/trust_automation.md b/docs/security/trust/trust_automation.md
index 16baf5e2e5..b100d133dc 100644
--- a/docs/security/trust/trust_automation.md
+++ b/docs/security/trust/trust_automation.md
@@ -73,7 +73,7 @@ unable to process Dockerfile: No trust data for notrust
 
 ## Related information
 
-* [Content trust in Docker](/security/trust/content_trust)
-* [Manage keys for content trust](/security/trust/trust_key_mng)
-* [Play in a content trust sandbox](/security/trust/trust_sandbox)
+* [Content trust in Docker](content_trust.md) 
+* [Manage keys for content trust](trust_key_mng.md)
+* [Play in a content trust sandbox](trust_sandbox.md)
 
diff --git a/docs/security/trust/trust_key_mng.md b/docs/security/trust/trust_key_mng.md
index ac48b987b5..20676acf15 100644
--- a/docs/security/trust/trust_key_mng.md
+++ b/docs/security/trust/trust_key_mng.md
@@ -68,6 +68,6 @@ the new key.
 
 ## Related information
 
-* [Content trust in Docker](/security/trust/content_trust)
-* [Automation with content trust](/security/trust/trust_automation)
-* [Play in a content trust sandbox](/security/trust/trust_sandbox)
+* [Content trust in Docker](content_trust.md) 
+* [Automation with content trust](trust_automation.md)
+* [Play in a content trust sandbox](trust_sandbox.md)
diff --git a/docs/security/trust/trust_sandbox.md b/docs/security/trust/trust_sandbox.md
index c503e30d4f..2832d9f719 100644
--- a/docs/security/trust/trust_sandbox.md
+++ b/docs/security/trust/trust_sandbox.md
@@ -15,7 +15,7 @@ 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](/security/trust/content_trust).
+overview](content_trust.md).
 
 ### Prerequisites
 
@@ -25,8 +25,8 @@ have `sudo` privileges on your local machine or in the VM.
 
 This sandbox requires you to install two Docker tools: Docker Engine and Docker
 Compose. To install the Docker Engine, choose from the [list of supported
-platforms](/installation). To install Docker Compose, see the
-[detailed instructions here](/compose/install).
+platforms](../../installation). To install Docker Compose, see the
+[detailed instructions here](https://docs.docker.com/compose/install.md).
 
 Finally, you'll need to have `git` installed on your local system or VM.
 
diff --git a/docs/userguide/dockerimages.md b/docs/userguide/dockerimages.md
index 69dd518d22..7873a1b725 100644
--- a/docs/userguide/dockerimages.md
+++ b/docs/userguide/dockerimages.md
@@ -11,9 +11,9 @@ weight = 1
 
 # Get started with images
 
-In the [introduction](/introduction/understanding-docker/) we've discovered that Docker
+In the [introduction](../introduction/understanding-docker.md) we've discovered that Docker
 images are the basis of containers. In the
-[previous](/userguide/dockerizing/) [sections](/userguide/usingdocker/)
+[previous](dockerizing.md) [sections](usingdocker.md)
 we've used Docker images that already exist, for example the `ubuntu`
 image and the `training/webapp` image.
 
@@ -51,7 +51,7 @@ do this using the `docker images` command like so:
     ubuntu           10.04    3db9c44f4520  4 weeks ago  183 MB
     ubuntu           lucid    3db9c44f4520  4 weeks ago  183 MB
 
-We can see the images we've previously used in our [user guide](/userguide/).
+We can see the images we've previously used in our user guide.
 Each has been downloaded from [Docker Hub](https://hub.docker.com) when we
 launched a container using that image.
 
@@ -123,7 +123,7 @@ images for a variety of purposes. Many of these have been uploaded to
 [Docker Hub](https://hub.docker.com). We can search these images on the
 [Docker Hub](https://hub.docker.com) website.
 
-![indexsearch](/userguide/search.png)
+![indexsearch](search.png)
 
 We can also search for images on the command line using the `docker search`
 command. Let's say our team wants an image with Ruby and Sinatra installed on
@@ -146,9 +146,9 @@ We can see we've returned a lot of images that use the term `sinatra`. We've
 returned a list of image names, descriptions, Stars (which measure the social
 popularity of images - if a user likes an image then they can "star" it), and
 the Official and Automated build statuses.
-[Official Repositories](/docker-hub/official_repos) are a carefully curated set
+[Official Repositories](https://docs.docker.com/docker-hub/official_repos) are a carefully curated set
 of Docker repositories supported by Docker, Inc.  Automated repositories are
-[Automated Builds](/userguide/dockerrepos/#automated-builds) that allow you to
+[Automated Builds](dockerrepos.md#automated-builds) that allow you to
 validate the source and content of an image.
 
 We've reviewed the images available to use and we decided to use the
@@ -286,7 +286,7 @@ updating our APT cache, installing Ruby and RubyGems and then installing the
 Sinatra gem.
 
 > **Note:**
-> There are [a lot more instructions available to us in a Dockerfile](/reference/builder).
+> There are [a lot more instructions available to us in a Dockerfile](../reference/builder.md).
 
 Now let's take our `Dockerfile` and use the `docker build` command to build an image.
 
@@ -491,10 +491,10 @@ We can then create a container from our new image.
 > This is just a brief introduction to creating images. We've
 > skipped a whole bunch of other instructions that you can use. We'll see more of
 > those instructions in later sections of the Guide or you can refer to the
-> [`Dockerfile`](/reference/builder/) reference for a
+> [`Dockerfile`](../reference/builder.md) reference for a
 > detailed description and examples of every instruction.
 > To help you write a clear, readable, maintainable `Dockerfile`, we've also
-> written a [`Dockerfile` Best Practices guide](/articles/dockerfile_best-practices).
+> written a [`Dockerfile` Best Practices guide](../articles/dockerfile_best-practices.md).
 
 
 ## Setting tags on an image
@@ -551,8 +551,7 @@ private repository](https://registry.hub.docker.com/plans/).
 ## Remove an image from the host
 
 You can also remove images on your Docker host in a way [similar to
-containers](
-/userguide/usingdocker) using the `docker rmi` command.
+containers](usingdocker.md) using the `docker rmi` command.
 
 Let's delete the `training/sinatra` image as we don't need it anymore.
 
@@ -571,4 +570,4 @@ Until now we've seen how to build individual applications inside Docker
 containers. Now learn how to build whole application stacks with Docker
 by linking together multiple Docker containers.
 
-Go to [Linking Containers Together](/userguide/dockerlinks).
+Go to [Linking Containers Together](dockerlinks.md).
diff --git a/docs/userguide/dockerizing.md b/docs/userguide/dockerizing.md
index 21c3061c95..ed55f00129 100644
--- a/docs/userguide/dockerizing.md
+++ b/docs/userguide/dockerizing.md
@@ -199,5 +199,5 @@ Excellent. Our container has been stopped.
 Now we've seen how simple it is to get started with Docker. Let's learn how to
 do some more advanced tasks.
 
-Go to [Working With Containers](/userguide/usingdocker).
+Go to [Working With Containers](usingdocker.md).
 
diff --git a/docs/userguide/dockerlinks.md b/docs/userguide/dockerlinks.md
index 3f48e6a7e7..f4c4bc9efc 100644
--- a/docs/userguide/dockerlinks.md
+++ b/docs/userguide/dockerlinks.md
@@ -11,7 +11,7 @@ weight = 4
 
 # Linking containers together
 
-In [the Using Docker section](/userguide/usingdocker), you saw how you can
+In [the Using Docker section](usingdocker.md), you saw how you can
 connect to a service running inside a Docker container via a network
 port. But a port connection is only one way you can interact with services and
 applications running inside Docker containers. In this section, we'll briefly revisit
@@ -20,7 +20,7 @@ container linking.
 
 ## Connect using network port mapping
 
-In [the Using Docker section](/userguide/usingdocker), you created a
+In [the Using Docker section](usingdocker.md), you created a
 container that ran a Python Flask application:
 
     $ docker run -d -P training/webapp python app.py
@@ -28,9 +28,9 @@ container that ran a Python Flask application:
 > **Note:** 
 > Containers have an internal network and an IP address
 > (as we saw when we used the `docker inspect` command to show the container's
-> IP address in the [Using Docker](/userguide/usingdocker/) section).
+> IP address in the [Using Docker](usingdocker.md) section).
 > Docker can have a variety of network configurations. You can see more
-> information on Docker networking [here](/articles/networking/).
+> information on Docker networking [here](../articles/networking.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
@@ -349,5 +349,5 @@ allowing linked communication to continue.
 Now that you know how to link Docker containers together, the next step is
 learning how to take complete control over docker networking.
 
-Go to [Docker Networking](/userguide/dockernetworks.md).
+Go to [Docker Networking](dockernetworks.md).
 
diff --git a/docs/userguide/dockernetworks.md b/docs/userguide/dockernetworks.md
index 827bda62be..840644117a 100644
--- a/docs/userguide/dockernetworks.md
+++ b/docs/userguide/dockernetworks.md
@@ -12,9 +12,9 @@ weight = 3
 # Docker container networking
 
 So far we've been introduced to some [basic Docker
-concepts](/userguide/usingdocker/), seen how to work with [Docker
-images](/userguide/dockerimages/) as well as learned about basic [networking
-and links between containers](/userguide/dockerlinks/). In this section
+concepts](usingdocker.md), seen how to work with [Docker
+images](dockerimages.md) as well as learned about basic [networking
+and links between containers](dockerlinks.md). In this section
 we're going to discuss how you can take control over more advanced 
 container networking.
 
@@ -516,4 +516,4 @@ Example : `docker daemon --cluster-store=consul://localhost:8500`
 Now that you know how to link Docker containers together, the next step is
 learning how to manage data, volumes and mounts inside your containers.
 
-Go to [Managing Data in Containers](/userguide/dockervolumes.md).
+Go to [Managing Data in Containers](dockervolumes.md).
diff --git a/docs/userguide/dockerrepos.md b/docs/userguide/dockerrepos.md
index a0e5bb01d5..2924112613 100644
--- a/docs/userguide/dockerrepos.md
+++ b/docs/userguide/dockerrepos.md
@@ -12,8 +12,8 @@ weight = 2
 # Get started with Docker Hub
 
 So far you've learned how to use the command line to run Docker on your local host.
-You've learned how to [pull down images](/userguide/usingdocker/) to build containers
-from existing images and you've learned how to [create your own images](/userguide/dockerimages).
+You've learned how to [pull down images](usingdocker.md) to build containers
+from existing images and you've learned how to [create your own images](dockerimages.md).
 
 Next, you're going to learn how to use the [Docker Hub](https://hub.docker.com) to
 simplify and enhance your Docker workflows.
@@ -62,7 +62,7 @@ There you can see two example results: `centos` and `tianon/centos`. The second
 result shows that it comes from the public repository of a user, named
 `tianon/`, while the first result, `centos`, doesn't explicitly list a
 repository which means that it comes from the trusted top-level namespace for
-[Official Repositories](/docker-hub/official_repos). The `/` character separates
+[Official Repositories](https://docs.docker.com/docker-hub/official_repos/). 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 <imagename>`:
@@ -94,13 +94,13 @@ see the [Docker Hub](https://hub.docker.com) registry.
 
 Anyone can pull public images from the [Docker Hub](https://hub.docker.com)
 registry, but if you would like to share your own images, then you must
-[register first](/docker-hub/accounts).
+[register first](https://docs.docker.com/docker-hub/accounts).
 
 ## Pushing a repository to Docker Hub
 
 In order to push a repository to its registry, you need to have named an image
 or committed your container to a named image as we saw
-[here](/userguide/dockerimages).
+[here](dockerimages.md).
 
 Now you can push this repository to the registry designated by its name or tag.
 
diff --git a/docs/userguide/dockervolumes.md b/docs/userguide/dockervolumes.md
index a96df533f5..25775a21d5 100644
--- a/docs/userguide/dockervolumes.md
+++ b/docs/userguide/dockervolumes.md
@@ -12,9 +12,9 @@ weight = 3
 # Managing data in containers
 
 So far we've been introduced to some [basic Docker
-concepts](/userguide/usingdocker/), seen how to work with [Docker
-images](/userguide/dockerimages/) as well as learned about [networking
-and links between containers](/userguide/dockerlinks/). In this section
+concepts](usingdocker.md), seen how to work with [Docker
+images](dockerimages.md) as well as learned about [networking
+and links between containers](dockerlinks.md). In this section
 we're going to discuss how you can manage data inside and between your
 Docker containers.
 
@@ -28,7 +28,7 @@ Docker.
 
 A *data volume* is a specially-designated directory within one or more
 containers that bypasses the [*Union File
-System*](/reference/glossary#union-file-system). Data volumes provide several 
+System*](../reference/glossary.md#union-file-system). Data volumes provide several 
 useful features for persistent or shared data:
 
 - Volumes are initialized when a container is created. If the container's
@@ -142,7 +142,7 @@ Mounting a host directory can be useful for testing. For example, you can mount
 source code inside a container. Then, change the source code and see its effect
 on the application in real time. The directory on the host must be specified as
 an absolute path and if the directory doesn't exist Docker will automatically
-create it for you.  This auto-creation of the host path has been [*deprecated*](/userguide/dockervolumes/#auto-creating-missing-host-paths-for-bind-mounts).
+create it for you.  This auto-creation of the host path has been [*deprecated*](#auto-creating-missing-host-paths-for-bind-mounts).
 
 Docker volumes default to mount in read-write mode, but you can also set it to
 be mounted read-only.
@@ -281,4 +281,4 @@ combine Docker with the services available on
 [Docker Hub](https://hub.docker.com) including Automated Builds and private
 repositories.
 
-Go to [Working with Docker Hub](/userguide/dockerrepos).
+Go to [Working with Docker Hub](dockerrepos.md).
diff --git a/docs/userguide/image_management.md b/docs/userguide/image_management.md
index 7be1416927..447b3c57ab 100644
--- a/docs/userguide/image_management.md
+++ b/docs/userguide/image_management.md
@@ -48,6 +48,6 @@ operates on. You use Docker to push and pull images (data) to a registry.
 Content trust gives you the ability to both verify the integrity and the
 publisher of all the data received from a registry over any channel.
 
-[Content trust](/security/trust) is currently only available for users of the
+[Content trust](../security/trust/) is currently only available for users of the
 public Docker Hub. It is currently not available for the Docker Trusted Registry
 or for private registries.
diff --git a/docs/userguide/index.md b/docs/userguide/index.md
index 275f09011f..a8e2cad40f 100644
--- a/docs/userguide/index.md
+++ b/docs/userguide/index.md
@@ -10,7 +10,7 @@ parent = "mn_fun_docker"
 
 # Welcome to the Docker user guide
 
-In the [Introduction](/misc) you got a taste of what Docker is and how it
+In the [Introduction](../misc) you got a taste of what Docker is and how it
 works. In this guide we're going to take you through the fundamentals of
 using Docker and integrating it into your environment.
 
@@ -33,7 +33,7 @@ Docker Hub is the central hub for Docker. It hosts public Docker images
 and provides services to help you build and manage your Docker
 environment. To learn more:
 
-Go to [Using Docker Hub](/docker-hub).
+Go to [Using Docker Hub](https://docs.docker.com/docker-hub).
 
 ## Dockerizing applications: A "Hello world"
 
@@ -42,7 +42,7 @@ Go to [Using Docker Hub](/docker-hub).
 Docker offers a *container-based* virtualization platform to power your
 applications. To learn how to Dockerize applications and run them:
 
-Go to [Dockerizing Applications](/docs/userguide/dockerizing.md).
+Go to [Dockerizing Applications](dockerizing.md).
 
 ## Working with containers
 
@@ -52,7 +52,7 @@ Once you get a grip on running your applications in Docker containers
 we're going to show you how to manage those containers. To find out
 about how to inspect, monitor and manage containers:
 
-Go to [Working With Containers](/docs/userguide/usingdocker.md).
+Go to [Working With Containers](usingdocker.md).
 
 ## Working with Docker images
 
@@ -61,7 +61,7 @@ Go to [Working With Containers](/docs/userguide/usingdocker.md).
 Once you've learnt how to use Docker it's time to take the next step and
 learn how to build your own application images with Docker.
 
-Go to [Working with Docker Images](/docs/userguide/dockerimages.md).
+Go to [Working with Docker Images](dockerimages.md).
 
 ## Linking containers together
 
@@ -69,7 +69,7 @@ Until now we've seen how to build individual applications inside Docker
 containers. Now learn how to build whole application stacks with Docker
 by linking together multiple Docker containers.
 
-Go to [Linking Containers Together](/docs/userguide/dockerlinks.md).
+Go to [Linking Containers Together](dockerlinks.md).
 
 ## Docker container networking
 
@@ -79,14 +79,14 @@ choice to the end-users. Now, lets learn about a flexible way to connect
 containers together within a host or across multiple hosts in a cluster
 using various networking technologies, with the help of extensible plugins.
 
-Go to [Docker Networking](/docs/userguide/dockernetworks.md).
+Go to [Docker Networking](dockernetworks.md).
 
 ## Managing data in containers
 
 Now we know how to link Docker containers together the next step is
 learning how to manage data, volumes and mounts inside our containers.
 
-Go to [Managing Data in Containers](/docs/userguide/dockervolumes.md).
+Go to [Managing Data in Containers](dockervolumes.md).
 
 ## Working with Docker Hub
 
@@ -94,7 +94,7 @@ Now we've learned a bit more about how to use Docker we're going to see
 how to combine Docker with the services available on Docker Hub including
 Trusted Builds and private repositories.
 
-Go to [Working with Docker Hub](/docs/userguide/dockerrepos.md).
+Go to [Working with Docker Hub](dockerrepos.md).
 
 ## Docker Compose
 
@@ -102,7 +102,7 @@ Docker Compose allows you to define a application's components -- their containe
 configuration, links and volumes -- in a single file. Then a single command
 will set everything up and start your application running.
 
-Go to [Docker Compose user guide](/compose/).
+Go to [Docker Compose user guide](https://docs.docker.com/compose/).
 
 ## Docker Machine
 
@@ -111,7 +111,7 @@ can set up hosts for Docker Engines on your computer, on cloud providers,
 and/or in your data center, and then configure your Docker client to securely
 talk to them.
 
-Go to [Docker Machine user guide](/machine/).
+Go to [Docker Machine user guide](https://docs.docker.com/machine/).
 
 ## Docker Swarm
 
@@ -119,7 +119,7 @@ Docker Swarm pools several Docker Engines together and exposes them as a single
 virtual Docker Engine. It serves the standard Docker API, so any tool that already
 works with Docker can now transparently scale up to multiple hosts.
 
-Go to [Docker Swarm user guide](/swarm/).
+Go to [Docker Swarm user guide](https://docs.docker.com/swarm/).
 
 ## Getting help
 
diff --git a/docs/userguide/usingdocker.md b/docs/userguide/usingdocker.md
index 24bab20b16..e27f7f719f 100644
--- a/docs/userguide/usingdocker.md
+++ b/docs/userguide/usingdocker.md
@@ -10,7 +10,7 @@ parent="smn_containers"
 
 # Working with containers
 
-In the [last section of the Docker User Guide](/userguide/dockerizing)
+In the [last section of the Docker User Guide](dockerizing.md)
 we launched our first containers. We launched containers using the
 `docker run` command:
 
@@ -82,7 +82,7 @@ To see usage for a specific command, specify the command with the `--help` flag:
 
 > **Note:** 
 > For further details and examples of each command, see the
-> [command reference](/reference/commandline/cli/) in this guide.
+> [command reference](../reference/commandline/cli.md) in this guide.
 
 ## Running a web application in Docker
 
@@ -110,8 +110,8 @@ Lastly, we've specified a command for our container to run: `python app.py`. Thi
 
 > **Note:** 
 > You can see more detail on the `docker run` command in the [command
-> reference](/reference/commandline/run) and the [Docker Run
-> Reference](/reference/run/).
+> reference](../reference/commandline/run.md) and the [Docker Run
+> Reference](../reference/run.md).
 
 ## Viewing our web application container
 
@@ -130,7 +130,7 @@ command. This tells the `docker ps` command to return the details of the
 > containers. If you want to see stopped containers too use the `-a` flag.
 
 We can see the same details we saw [when we first Dockerized a
-container](/userguide/dockerizing) with one important addition in the `PORTS`
+container](dockerizing.md) with one important addition in the `PORTS`
 column.
 
     PORTS
@@ -141,7 +141,7 @@ ports exposed in our image to our host.
 
 > **Note:** 
 > We'll learn more about how to expose ports in Docker images when
-> [we learn how to build images](/userguide/dockerimages).
+> [we learn how to build images](dockerimages.md).
 
 In this case Docker has exposed port 5000 (the default Python Flask
 port) on port 49155.
@@ -166,7 +166,7 @@ Docker host.
 So let's now browse to port 49155 in a web browser to
 see the application.
 
-![Viewing the web application](/userguide/webapp1.png).
+![Viewing the web application](webapp1.png).
 
 Our Python application is live!
 
@@ -178,7 +178,7 @@ Our Python application is live!
 >     $ docker-machine ip my-docker-vm
 >     192.168.99.100
 > 
-> In this case you'd browse to http://192.168.99.100:49155 for the above example.
+> In this case you'd browse to `http://192.168.99.100:49155` for the above example.
 
 ## A network port shortcut
 
@@ -309,5 +309,5 @@ Until now we've only used images that we've downloaded from
 [Docker Hub](https://hub.docker.com). Next, let's get introduced to
 building and sharing our own images.
 
-Go to [Working with Docker Images](/userguide/dockerimages).
+Go to [Working with Docker Images](dockerimages.md).