diff --git a/_data/glossary.yaml b/_data/glossary.yaml index 0119bc7213..98c9555360 100644 --- a/_data/glossary.yaml +++ b/_data/glossary.yaml @@ -71,14 +71,14 @@ Docker: | - The docker daemon process running on the host which manages images and containers (also called Docker Engine) Docker Desktop for Mac: | - [Docker Desktop for Mac](/docker-for-mac/) is an easy-to-install, lightweight + [Docker Desktop for Mac](/desktop/mac/) is an easy-to-install, lightweight Docker development environment designed specifically for the Mac. A native Mac application, Docker Desktop for Mac uses the macOS Hypervisor framework, networking, and filesystem. It's the best solution if you want to build, debug, test, package, and ship Dockerized applications on a Mac. Docker Desktop for Windows: | - [Docker Desktop for Windows](/docker-for-windows/) is an + [Docker Desktop for Windows](/desktop/windows/) is an easy-to-install, lightweight Docker development environment designed specifically for Windows 10 systems that support Microsoft Hyper-V (Professional, Enterprise and Education). Docker Desktop for Windows uses Hyper-V for diff --git a/_data/redirects.csv b/_data/redirects.csv index 3d6af48cf6..6ef7559272 100644 --- a/_data/redirects.csv +++ b/_data/redirects.csv @@ -1,8 +1,8 @@ source,destination /engine/quickstart/,/get-started/ /engine/containers/,/engine/tutorials/ -/win/,/docker-for-windows/ -/mac/,/docker-for-mac/ +/win/,/desktop/windows/ +/mac/,/desktop/mac/ /linux/,/engine/ /article-img/,/engine/article-img/ /articles/,/engine/articles/ diff --git a/_data/toc.yaml b/_data/toc.yaml index bc80072f32..7d5c44e383 100644 --- a/_data/toc.yaml +++ b/_data/toc.yaml @@ -1186,37 +1186,37 @@ manuals: title: Overview - sectiontitle: Mac section: - - path: /docker-for-mac/install/ + - path: /desktop/mac/install/ title: Install Docker Desktop for Mac - - path: /docker-for-mac/ + - path: /desktop/mac/ title: User manual - - path: /docker-for-mac/networking/ + - path: /desktop/mac/networking/ title: Networking - - path: /docker-for-mac/space/ + - path: /desktop/mac/space/ title: Disk utilization - - path: /docker-for-mac/troubleshoot/ + - path: /desktop/mac/troubleshoot/ title: Logs and troubleshooting - - path: /docker-for-mac/apple-silicon/ + - path: /desktop/mac/apple-silicon/ title: Apple silicon - - path: /docker-for-mac/release-notes/ + - path: /desktop/mac/release-notes/ title: Release notes - - path: /docker-for-mac/previous-versions/ + - path: /desktop/mac/previous-versions/ title: Previous versions - sectiontitle: Windows section: - - path: /docker-for-windows/install/ + - path: /desktop/windows/install/ title: Install Docker Desktop for Windows - - path: /docker-for-windows/ + - path: /desktop/windows/ title: User manual - - path: /docker-for-windows/networking/ + - path: /desktop/windows/networking/ title: Networking - - path: /docker-for-windows/troubleshoot/ + - path: /desktop/windows/troubleshoot/ title: Logs and troubleshooting - - path: /docker-for-windows/wsl/ + - path: /desktop/windows/wsl/ title: Docker Desktop WSL 2 backend - - path: /docker-for-windows/release-notes/ + - path: /desktop/windows/release-notes/ title: Release notes - - path: /docker-for-windows/previous-versions/ + - path: /desktop/windows/previous-versions/ title: Previous versions - path: /desktop/dashboard/ title: Dashboard diff --git a/_includes/content/compose-var-sub.md b/_includes/content/compose-var-sub.md index 2628e7eef1..2859687fb8 100644 --- a/_includes/content/compose-var-sub.md +++ b/_includes/content/compose-var-sub.md @@ -61,6 +61,6 @@ web: If you forget and use a single dollar sign (`$`), Compose interprets the value as an environment variable and warns you: -``` +```console The VAR_NOT_INTERPOLATED_BY_COMPOSE is not set. Substituting an empty string. ``` diff --git a/_includes/desktop-update.md b/_includes/desktop-update.md index 526fa7b7b9..2bd1419002 100644 --- a/_includes/desktop-update.md +++ b/_includes/desktop-update.md @@ -4,6 +4,6 @@ Starting with Docker Desktop 3.0.0, updates to Docker Desktop will be available > To encourage developers to stay up to date, Docker Desktop displays a reminder two weeks after an update becomes available. You can dismiss this daily reminder by clicking **Snooze**. You can skip an update when a reminder appears by clicking the **Skip this update** option. -![Snooze update](../../docker-for-mac/images/snooze-update.png){:width="500px"} +![Snooze update](/desktop/mac/images/snooze-update.png){:width="500px"} Click **Download update** When you are ready to download the update. This downloads the update in the background. After downloading the update, click **Update and restart** from the Docker menu. This installs the latest update and restarts Docker Desktop for the changes to take effect. diff --git a/_includes/enable-buildkit.md b/_includes/enable-buildkit.md index aee2624039..c69911e86c 100644 --- a/_includes/enable-buildkit.md +++ b/_includes/enable-buildkit.md @@ -14,7 +14,7 @@ variable or by making BuildKit the default setting. To set the BuildKit environment variable when running the `docker build` command, run: -``` +```console $ DOCKER_BUILDKIT=1 docker build . ``` diff --git a/_layouts/landing.html b/_layouts/landing.html index 348651f96b..3cc57465ad 100644 --- a/_layouts/landing.html +++ b/_layouts/landing.html @@ -204,7 +204,7 @@

- + What are the system requirements for Docker Desktop?

@@ -214,7 +214,7 @@

- + What are the system requirements for Docker Desktop?

@@ -231,13 +231,13 @@
Popular articles
-

Docker Desktop WSL 2 backend

-

Install Docker Desktop on Mac

+

Docker Desktop WSL 2 backend

+

Install Docker Desktop on Mac

Docker Desktop Dashboard

Deploy on Kubernetes

-

Release notes

-

Logs and troubleshooting

-

Networking features in Docker Desktop

+

Release notes

+

Logs and troubleshooting

+

Networking features in Docker Desktop

diff --git a/cloud/aci-integration.md b/cloud/aci-integration.md index bb5566bfea..7de4dbf394 100644 --- a/cloud/aci-integration.md +++ b/cloud/aci-integration.md @@ -26,8 +26,8 @@ To deploy Docker containers on Azure, you must meet the following requirements: 1. Download and install the latest version of Docker Desktop. - - [Download for Mac](../docker-for-mac/install.md) - - [Download for Windows](../docker-for-windows/install.md) + - [Download for Mac](../desktop/mac/install.md) + - [Download for Windows](../desktop/windows/install.md) Alternatively, install the [Docker Compose CLI for Linux](#install-the-docker-compose-cli-on-linux). diff --git a/cloud/ecs-integration.md b/cloud/ecs-integration.md index 1a06c6a7fd..c9c0960aa0 100644 --- a/cloud/ecs-integration.md +++ b/cloud/ecs-integration.md @@ -25,8 +25,8 @@ To deploy Docker containers on ECS, you must meet the following requirements: 1. Download and install the latest version of Docker Desktop. - - [Download for Mac](../docker-for-mac/install.md) - - [Download for Windows](../docker-for-windows/install.md) + - [Download for Mac](../desktop/mac/install.md) + - [Download for Windows](../desktop/windows/install.md) Alternatively, install the [Docker Compose CLI for Linux](#install-the-docker-compose-cli-on-linux). @@ -522,35 +522,37 @@ use an existing domain name for your application: 1. Use the AWS web console or CLI to get your VPC and Subnets IDs. You can retrieve the default VPC ID and attached subnets using this AWS CLI commands: -```console -$ aws ec2 describe-vpcs --filters Name=isDefault,Values=true --query 'Vpcs[0].VpcId' + ```console + $ aws ec2 describe-vpcs --filters Name=isDefault,Values=true --query 'Vpcs[0].VpcId' + + "vpc-123456" + $ aws ec2 describe-subnets --filters Name=vpc-id,Values=vpc-123456 --query 'Subnets[*].SubnetId' + + [ + "subnet-1234abcd", + "subnet-6789ef00", + ] + ``` + +2. Use the AWS CLI to create your load balancer. The AWS Web Console can also be used but will require adding at least one listener, which we don't need here. -"vpc-123456" -$ aws ec2 describe-subnets --filters Name=vpc-id,Values=vpc-123456 --query 'Subnets[*].SubnetId' - -[ - "subnet-1234abcd", - "subnet-6789ef00", -] -``` -1. Use the AWS CLI to create your load balancer. The AWS Web Console can also be used but will require adding at least one listener, which we don't need here. - -```console -$ aws elbv2 create-load-balancer --name myloadbalancer --type application --subnets "subnet-1234abcd" "subnet-6789ef00" - -{ - "LoadBalancers": [ + ```console + $ aws elbv2 create-load-balancer --name myloadbalancer --type application --subnets "subnet-1234abcd" "subnet-6789ef00" + { - "IpAddressType": "ipv4", - "VpcId": "vpc-123456", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-east-1:1234567890:loadbalancer/app/myloadbalancer/123abcd456", - "DNSName": "myloadbalancer-123456.us-east-1.elb.amazonaws.com", -... -``` -1. To assign your application an existing domain name, you can configure your DNS with a -CNAME entry pointing to just-created loadbalancer's `DNSName` reported as you created the loadbalancer. + "LoadBalancers": [ + { + "IpAddressType": "ipv4", + "VpcId": "vpc-123456", + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-east-1:1234567890:loadbalancer/app/myloadbalancer/123abcd456", + "DNSName": "myloadbalancer-123456.us-east-1.elb.amazonaws.com", + <...> + ``` + +3. To assign your application an existing domain name, you can configure your DNS with a + CNAME entry pointing to just-created loadbalancer's `DNSName` reported as you created the loadbalancer. -1. Use Loadbalancer ARN to set `x-aws-loadbalancer` in your compose file, and deploy your application using `docker compose up` command. +4. Use Loadbalancer ARN to set `x-aws-loadbalancer` in your compose file, and deploy your application using `docker compose up` command. Please note Docker ECS integration won't be aware of this domain name, so `docker compose ps` command will report URLs with loadbalancer DNSName, not your own domain. diff --git a/components.md b/components.md index 36d0990983..355684ac34 100644 --- a/components.md +++ b/components.md @@ -29,6 +29,7 @@ For components and controls we are using [Bootstrap](https://getbootstrap.com) ``` +
diff --git a/engine/breaking_changes.md b/engine/breaking_changes.md index 570ac6d994..eb57e37613 100644 --- a/engine/breaking_changes.md +++ b/engine/breaking_changes.md @@ -10,15 +10,15 @@ Every Engine release strives to be backward compatible with its predecessors, and interface stability is always a priority at Docker. In all cases, feature removal is communicated three releases -in advance and documented as part of the [deprecated features](deprecated.md) +in advance and documented as part of the [deprecated features](/engine/deprecated/) page. The following list compiles any updates to Docker Engine that created backwards-incompatibility for old versions of Docker tools. > **Note**: In the case of your local environment, you should be updating your - Docker Engine using [Docker Desktop for Mac](/docker-for-mac), - [Docker Desktop for Windows](/docker-for-windows). That way all your tools stay + Docker Engine using [Docker Desktop for Mac](../desktop/mac/index.md), + [Docker Desktop for Windows](../desktop/windows/index.md). That way all your tools stay in sync with Docker Engine. ## Engine 1.10 diff --git a/engine/context/working-with-contexts.md b/engine/context/working-with-contexts.md index 65d17f59ff..d986a1ad9f 100644 --- a/engine/context/working-with-contexts.md +++ b/engine/context/working-with-contexts.md @@ -40,7 +40,7 @@ A context is a combination of several properties. These include: The easiest way to see what a context looks like is to view the **default** context. -``` +```console $ docker context ls NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR default * Current... unix:///var/run/docker.sock swarm @@ -52,7 +52,7 @@ The asterisk in the `NAME` column indicates that this is the active context. Thi Dig a bit deeper with `docker context inspect`. In this example, we're inspecting the context called `default`. -``` +```console $ docker context inspect default [ { @@ -86,7 +86,7 @@ The following example creates a new context called "docker-test" and specifies t - Default orchestrator = Swarm - Issue commands to the local Unix socket `/var/run/docker.sock` -``` +```console $ docker context create docker-test \ --default-stack-orchestrator=swarm \ --docker host=unix:///var/run/docker.sock @@ -102,7 +102,7 @@ You can view the new context with `docker context ls` and `docker context inspec The following can be used to create a config with Kubernetes as the default orchestrator using the existing kubeconfig stored in `/home/ubuntu/.kube/config`. For this to work, you will need a valid kubeconfig file in `/home/ubuntu/.kube/config`. If your kubeconfig has more than one context, the current context (`kubectl config current-context`) will be used. -``` +```console $ docker context create k8s-test \ --default-stack-orchestrator=kubernetes \ --kubernetes config-file=/home/ubuntu/.kube/config \ @@ -113,7 +113,7 @@ Successfully created context "k8s-test" You can view all contexts on the system with `docker context ls`. -``` +```console $ docker context ls NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR default * Current unix:///var/run/docker.sock https://35.226.99.100 (default) swarm @@ -129,7 +129,7 @@ You can use `docker context use` to quickly switch between contexts. The following command will switch the `docker` CLI to use the "k8s-test" context. -``` +```console $ docker context use k8s-test k8s-test @@ -138,7 +138,7 @@ Current context is now "k8s-test" Verify the operation by listing all contexts and ensuring the asterisk ("\*") is against the "k8s-test" context. -``` +```console $ docker context ls NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR default Current DOCKER_HOST based configuration unix:///var/run/docker.sock https://35.226.99.100 (default) swarm @@ -154,13 +154,13 @@ Use the appropriate command below to set the context to `docker-test` using an e Windows PowerShell: -``` +```console > $Env:DOCKER_CONTEXT=docker-test ``` Linux: -``` +```console $ export DOCKER_CONTEXT=docker-test ``` @@ -168,7 +168,7 @@ Run a `docker context ls` to verify that the "docker-test" context is now the ac You can also use the global `--context` flag to override the context specified by the `DOCKER_CONTEXT` environment variable. For example, the following will send the command to a context called "production". -``` +```console $ docker --context production container ls ``` @@ -188,21 +188,21 @@ Let's look at exporting and importing a native Docker context. The following example exports an existing context called "docker-test". It will be written to a file called `docker-test.dockercontext`. -``` +```console $ docker context export docker-test Written file "docker-test.dockercontext" ``` Check the contents of the export file. -``` +```console $ cat docker-test.dockercontext meta.json0000644000000000000000000000022300000000000011023 0ustar0000000000000000{"Name":"docker-test","Metadata":{"StackOrchestrator":"swarm"},"Endpoints":{"docker":{"Host":"unix:///var/run/docker.sock","SkipTLSVerify":false}}}tls0000700000000000000000000000000000000000000007716 5ustar0000000000000000 ``` This file can be imported on another host using `docker context import`. The target host must have the Docker client installed. -``` +```console $ docker context import docker-test docker-test.dockercontext docker-test Successfully imported context "docker-test" @@ -220,14 +220,14 @@ You can export a Kubernetes context only if the context you are exporting has a These steps will use the `--kubeconfig` flag to export **only** the Kubernetes elements of the existing `k8s-test` context to a file called "k8s-test.kubeconfig". The `cat` command will then show that it's exported as a valid kubeconfig file. -``` +```console $ docker context export k8s-test --kubeconfig Written file "k8s-test.kubeconfig" ``` Verify that the exported file contains a valid kubectl config. -``` +```console $ cat k8s-test.kubeconfig apiVersion: v1 clusters: @@ -265,7 +265,7 @@ You can use `docker context update` to update fields in an existing context. The following example updates the "Description" field in the existing `k8s-test` context. -``` +```console $ docker context update k8s-test --description "Test Kubernetes cluster" k8s-test Successfully updated context "k8s-test" diff --git a/engine/install/index.md b/engine/install/index.md index 704af3b3d4..339e20aa27 100644 --- a/engine/install/index.md +++ b/engine/install/index.md @@ -32,7 +32,7 @@ redirect_from: ## Supported platforms Docker Engine is available on a variety of [Linux platforms](#server), -[macOS](../../docker-for-mac/install.md) and [Windows 10](../../docker-for-windows/install.md) +[macOS](../../desktop/mac/install.md) and [Windows 10](../../desktop/windows/install.md) through Docker Desktop, and as a [static binary installation](binaries.md). Find your preferred operating system below. @@ -42,8 +42,8 @@ your preferred operating system below. | Platform | x86_64 / amd64 | arm64 (Apple Silicon) | |:------------------------------------------------------------------|:------------------------------------------------:|:------------------------------------------------:| -| [Docker Desktop for Mac (macOS)](../../docker-for-mac/install.md) | [{{ yes }}](../../docker-for-mac/install.md) | [{{ yes }}](../../docker-for-mac/install.md) | -| [Docker Desktop for Windows](../../docker-for-windows/install.md) | [{{ yes }}](../../docker-for-windows/install.md) | | +| [Docker Desktop for Mac (macOS)](../../desktop/mac/install.md) | [{{ yes }}](../../desktop/mac/install.md) | [{{ yes }}](../../desktop/mac/install.md) | +| [Docker Desktop for Windows](../../desktop/windows/install.md) | [{{ yes }}](../../desktop/windows/install.md) | | ### Server diff --git a/engine/reference/commandline/app.md b/engine/reference/commandline/app.md index 79d12adaf6..a39dc7a35c 100644 --- a/engine/reference/commandline/app.md +++ b/engine/reference/commandline/app.md @@ -68,7 +68,7 @@ it initializes a new project based on the Compose file. Use the following command to initialize a new empty project called "hello-world". -``` +```console $ docker app init hello-world Created "hello-world.dockerapp" ``` @@ -82,7 +82,7 @@ project with `.dockerapp` appended, and the three YAML files are: Inspect the YAML files with the following commands. -``` +```console $ cd hello-world.dockerapp/ $ cat docker-compose.yml @@ -116,19 +116,19 @@ This section describes editing the project YAML files so that it runs a simple w Use your preferred editor to edit the `docker-compose.yml` YAML file and update it with the following information: -``` +```yaml version: "3.6" services: hello: image: hashicorp/http-echo command: ["-text", "${hello.text}"] ports: - - ${hello.port}:5678 + - "${hello.port}:5678" ``` Update the `parameters.yml` file to the following: -``` +```yaml hello: port: 8080 text: Hello world! @@ -147,7 +147,7 @@ It is a quick way to check how to configure the application before deployment, w the `Compose file`. It's important to note that the application is not running at this point, and that the `inspect` operation inspects the configuration file(s). -``` +```console $ docker app inspect hello-world.dockerapp hello-world 0.1.0 @@ -171,7 +171,7 @@ The application is ready to be validated and rendered. Docker App provides the `validate` subcommand to check syntax and other aspects of the configuration. If the app passes validation, the command returns no arguments. -``` +```console $ docker app validate hello-world.dockerapp Validated "hello-world.dockerapp" ``` @@ -199,7 +199,7 @@ Use `docker app install` to deploy the application. Use the following command to deploy (install) the application. -``` +```console $ docker app install hello-world.dockerapp --name my-app Creating network my-app_default Creating service my-app_hello @@ -211,7 +211,7 @@ installation container and as a target context to deploy the application. You ca using the flag `--target-context` or by using the environment variable `DOCKER_TARGET_CONTEXT`. This flag is also available for the commands `status`, `upgrade`, and `uninstall`. -``` +```console $ docker app install hello-world.dockerapp --name my-app --target-context=my-big-production-cluster Creating network my-app_default Creating service my-app_hello @@ -223,7 +223,7 @@ valid if they are deployed on different target contexts. You can check the status of the app with the `docker app status ` command. -``` +```console $ docker app status my-app INSTALLATION ------------ @@ -254,7 +254,7 @@ miqdk1v7j3zk my-app_hello replicated 1/1 hashicorp/http-echo:la The app is deployed using the stack orchestrator. This means you can also inspect it using the regular `docker stack` commands. -``` +```console $ docker stack ls NAME SERVICES ORCHESTRATOR my-app 1 Swarm @@ -265,7 +265,8 @@ port 8080 and see the app. You must ensure traffic to port 8080 is allowed on the connection from your browser to your Docker host. Now change the port of the application using `docker app upgrade ` command. -``` + +```console $ docker app upgrade my-app --set hello.port=8181 Upgrading service my-app_hello Application "my-app" upgraded on context "default" @@ -286,13 +287,13 @@ Rendering is the process of reading the entire application configuration and out Use the following command to render the app to a Compose file called `docker-compose.yml` in the current directory. -``` +```console $ docker app render --output docker-compose.yml hello-world.dockerapp ``` Check the contents of the resulting `docker-compose.yml` file. -``` +```console $ cat docker-compose.yml version: "3.6" services: @@ -315,7 +316,7 @@ section of the project's YAML file. For example, `${hello.text}` has been expand Try to render the application with a different text: -``` +```console $ docker app render hello-world.dockerapp --set hello.text="Hello whales!" version: "3.6" services: @@ -333,7 +334,7 @@ services: Use `docker-compose up` to deploy the app. -``` +```console $ docker-compose up --detach WARNING: The Docker Engine you're using is running in swarm mode. @@ -354,7 +355,7 @@ Deploying the app as a Docker stack is a two-step process very similar to deploy Complete the steps in the previous section to render the Docker app project as a Compose file and make sure you're ready to deploy it as a Docker Stack. Your Docker host must be in Swarm mode. -``` +```console $ docker stack deploy hello-world-app -c docker-compose.yml Creating network hello-world-app_default Creating service hello-world-app_hello @@ -394,7 +395,7 @@ $ docker app push my-app --platform="linux/amd64" --tag /:0.1.0 Now that the app is pushed to the registry, try an `inspect` and `install` command against it. The location of your app is different from the one provided in the examples. -``` +```console $ docker app inspect myuser/hello-world:0.1.0 hello-world 0.1.0 @@ -412,7 +413,7 @@ This action was performed directly against the app in the registry. Now install it as a native Docker App by referencing the app in the registry, with a different port. -``` +```console $ docker app install myuser/hello-world:0.1.0 --set hello.port=8181 Creating network hello-world_default Creating service hello-world_hello @@ -424,14 +425,14 @@ Test that the app is working. The app used in these examples is a simple web server that displays the text "Hello world!" on port 8181, your app might be different. -``` +```console $ curl http://localhost:8181 Hello world! ``` Uninstall the app. -``` +```console $ docker app uninstall hello-world Removing service hello-world_hello Removing network hello-world_default diff --git a/engine/release-notes/18.09.md b/engine/release-notes/18.09.md index d26b1f849b..d66826473b 100644 --- a/engine/release-notes/18.09.md +++ b/engine/release-notes/18.09.md @@ -192,6 +192,7 @@ Run the following command to get the current value of the `MountFlags` property $ sudo systemctl show --property=MountFlags docker.service MountFlags= ``` + Update your configuration if this command prints a non-empty value for `MountFlags`, and restart the docker service. ### Security fixes diff --git a/engine/scan/index.md b/engine/scan/index.md index 4ee07235b7..e949682c2b 100644 --- a/engine/scan/index.md +++ b/engine/scan/index.md @@ -205,6 +205,7 @@ $ docker scan --json --group-issues docker-scan:e2e "path": "docker-scan:e2e" } ``` + You can find all the sources of the vulnerability in the `from` section. ### Checking the dependency tree diff --git a/engine/security/rootless.md b/engine/security/rootless.md index 0ab5148919..ff5ccb100a 100644 --- a/engine/security/rootless.md +++ b/engine/security/rootless.md @@ -176,6 +176,7 @@ If `dockerd-rootless-setuptool.sh` is not present, you may need to install the ` ```console $ sudo apt-get install -y docker-ce-rootless-extras ``` +
If you do not have permission to run package managers like `apt-get` and `dnf`, diff --git a/engine/security/seccomp.md b/engine/security/seccomp.md index 6ac67a1886..b4f51d3662 100644 --- a/engine/security/seccomp.md +++ b/engine/security/seccomp.md @@ -120,7 +120,7 @@ the reason each syscall is blocked rather than white-listed. You can pass `unconfined` to run a container without the default seccomp profile. -``` +```console $ docker run --rm -it --security-opt seccomp=unconfined debian:jessie \ unshare --map-root-user --user sh -c whoami ``` diff --git a/engine/security/trust/index.md b/engine/security/trust/index.md index 24cb2c12f0..9b5ac9e3aa 100644 --- a/engine/security/trust/index.md +++ b/engine/security/trust/index.md @@ -130,7 +130,7 @@ is automatically added to the local trust store. If you are importing a separate key, you will need to use the `$ docker trust key load` command. -``` +```console $ docker trust key generate jeff Generating key for jeff... Enter passphrase for new jeff key with ID 9deed25: @@ -140,7 +140,7 @@ Successfully generated and loaded private key. Corresponding public key availabl Or if you have an existing key: -``` +```console $ docker trust key load key.pem --name jeff Loading key from "key.pem"... Enter passphrase for new jeff key with ID 8ae710e: @@ -156,7 +156,7 @@ canonical root key. To understand more about initiating a repository, and the role of delegations, head to [delegations for content trust](trust_delegation.md). -``` +```console $ docker trust signer add --key cert.pem jeff registry.example.com/admin/demo Adding signer "jeff" to registry.example.com/admin/demo... Enter passphrase for new repository key with ID 10b5e94: @@ -165,7 +165,7 @@ Enter passphrase for new repository key with ID 10b5e94: Finally, we will use the delegation private key to sign a particular tag and push it up to the registry. -``` +```console $ docker trust sign registry.example.com/admin/demo:1 Signing and pushing trust data for local image registry.example.com/admin/demo:1, may overwrite remote trust data The push refers to repository [registry.example.com/admin/demo] @@ -179,7 +179,7 @@ Successfully signed registry.example.com/admin/demo:1 Alternatively, once the keys have been imported an image can be pushed with the `$ docker push` command, by exporting the DCT environmental variable. -``` +```console $ export DOCKER_CONTENT_TRUST=1 $ docker push registry.example.com/admin/demo:1 @@ -194,7 +194,7 @@ Successfully signed registry.example.com/admin/demo:1 Remote trust data for a tag or a repository can be viewed by the `$ docker trust inspect` command: -``` +```console $ docker trust inspect --pretty registry.example.com/admin/demo:1 Signatures for registry.example.com/admin/demo:1 @@ -215,7 +215,7 @@ Administrative keys for registry.example.com/admin/demo:1 Remote Trust data for a tag can be removed by the `$ docker trust revoke` command: -``` +```console $ docker trust revoke registry.example.com/admin/demo:1 Enter passphrase for signer key with ID 8ae710e: Successfully deleted signature for registry.example.com/admin/demo:1 @@ -241,7 +241,7 @@ For example, with DCT enabled a `docker pull someimage:latest` only succeeds if `someimage:latest` is signed. However, an operation with an explicit content hash always succeeds as long as the hash exists: -``` +```console $ docker pull registry.example.com/user/image:1 Error: remote trust data does not exist for registry.example.com/user/image: registry.example.com does not have trust data for registry.example.com/user/image diff --git a/engine/security/trust/trust_automation.md b/engine/security/trust/trust_automation.md index f1647cf4f8..3f59a96047 100644 --- a/engine/security/trust/trust_automation.md +++ b/engine/security/trust/trust_automation.md @@ -20,7 +20,7 @@ To automate importing a delegation private key to the local Docker trust store, need to pass a passphrase for the new key. This passphrase will be required everytime that delegation signs a tag. -``` +```console $ export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE="mypassphrase123" $ docker trust key load delegation.key --name jeff @@ -35,7 +35,7 @@ public key, then you will need to use the local Notary Canonical Root Key's passphrase to create the repositories trust data. If the repository has already been initiated then you only need the repositories passphrase. -``` +```console # Export the Local Root Key Passphrase if required. $ export DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE="rootpassphrase123" @@ -56,7 +56,7 @@ Finally when signing an image, we will need to export the passphrase of the signing key. This was created when the key was loaded into the local Docker trust store with `$ docker trust key load`. -``` +```console $ export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE="mypassphrase123" $ docker trust sign registry.example.com/admin/demo:1 diff --git a/engine/security/trust/trust_delegation.md b/engine/security/trust/trust_delegation.md index a5c4480573..21d5bd15df 100644 --- a/engine/security/trust/trust_delegation.md +++ b/engine/security/trust/trust_delegation.md @@ -28,28 +28,28 @@ server URL is the same as the registry URL. However, for self-hosted environments or 3rd party registries, you will need to specify an alternative URL for the notary server. This is done with: -``` -export DOCKER_CONTENT_TRUST_SERVER=https://: +```console +$ export DOCKER_CONTENT_TRUST_SERVER=https://: ``` If you do not export this variable in self-hosted environments, you may see errors such as: -``` +```console $ docker trust signer add --key cert.pem jeff registry.example.com/admin/demo Adding signer "jeff" to registry.example.com/admin/demo... -[...] +<...> Error: trust data missing for remote repository registry.example.com/admin/demo or remote repository not found: timestamp key trust data unavailable. Has a notary repository been initialized? $ docker trust inspect registry.example.com/admin/demo --pretty WARN[0000] Error while downloading remote metadata, using cached timestamp - this might not be the latest version available remotely -[...] +<...> ``` If you have enabled authentication for your notary server, or are using DTR, you will need to log in before you can push data to the notary server. -``` +```console $ docker login registry.example.com/user/repo Username: admin Password: diff --git a/engine/security/trust/trust_key_mng.md b/engine/security/trust/trust_key_mng.md index e5da1f7a6e..a8aa06b8e5 100644 --- a/engine/security/trust/trust_key_mng.md +++ b/engine/security/trust/trust_key_mng.md @@ -79,7 +79,7 @@ This loss also requires **manual intervention** from every consumer that pulled the tagged image prior to the loss. Image consumers would get an error for content that they already downloaded: -``` +```console Warning: potential malicious behavior - trust data has insufficient signatures for remote repository docker.io/my/image: valid signatures did not meet threshold ``` diff --git a/engine/swarm/configs.md b/engine/swarm/configs.md index edcdbb732f..fc2f7dbe9a 100644 --- a/engine/swarm/configs.md +++ b/engine/swarm/configs.md @@ -244,6 +244,7 @@ This example assumes that you have PowerShell installed. ``` + 2. If you have not already done so, initialize or join the swarm. ```powershell diff --git a/engine/swarm/secrets.md b/engine/swarm/secrets.md index 95098ae6a8..c7aacb8328 100644 --- a/engine/swarm/secrets.md +++ b/engine/swarm/secrets.md @@ -276,6 +276,7 @@ This example assumes that you have PowerShell installed. ``` + 2. If you have not already done so, initialize or join the swarm. ```powershell diff --git a/engine/swarm/services.md b/engine/swarm/services.md index f5a68b8a71..ee9e5a51e9 100644 --- a/engine/swarm/services.md +++ b/engine/swarm/services.md @@ -132,22 +132,25 @@ The credential spec contained in the specified `config` is used. The following simple example retrieves the gMSA name and JSON contents from your Active Directory (AD) instance: - ``` -name="mygmsa" -contents="{...}" -echo $contents > contents.json + ```console +$ name="mygmsa" +$ contents="{...}" +$ echo $contents > contents.json ``` + Make sure that the nodes to which you are deploying are correctly configured for the gMSA. To use a Config as a credential spec, create a Docker Config in a credential spec file named `credpspec.json`. You can specify any name for the name of the `config`. +```console +$ docker config create --label com.docker.gmsa.name=mygmsa credspec credspec.json ``` -docker config create --label com.docker.gmsa.name=mygmsa credspec credspec.json -``` + Now you can create a service using this credential spec. Specify the `--credential-spec` flag with the config name: -``` -docker service create --credential-spec="config://credspec" + +```console +$ docker service create --credential-spec="config://credspec" ``` Your service uses the gMSA credential spec when it starts, but unlike a typical Docker Config (used by passing the --config flag), the credential spec is not mounted into the container. diff --git a/engine/swarm/swarm-mode.md b/engine/swarm/swarm-mode.md index 956fda59e8..9636b66482 100644 --- a/engine/swarm/swarm-mode.md +++ b/engine/swarm/swarm-mode.md @@ -63,6 +63,7 @@ To add a worker to this swarm, run the following command: To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. ``` + ### Configuring default address pools By default Docker Swarm uses a default address pool `10.0.0.0/8` for global scope (overlay) networks. Every diff --git a/engine/swarm/swarm-tutorial/index.md b/engine/swarm/swarm-tutorial/index.md index 639e3d9452..1a269f5ee7 100644 --- a/engine/swarm/swarm-tutorial/index.md +++ b/engine/swarm/swarm-tutorial/index.md @@ -56,8 +56,8 @@ single-node and multi-node swarm scenarios on Linux machines. #### Use Docker Desktop for Mac or Docker Desktop for Windows -Alternatively, install the latest [Docker Desktop for Mac](../../../docker-for-mac/index.md) or -[Docker Desktop for Windows](../../../docker-for-windows/index.md) application on one +Alternatively, install the latest [Docker Desktop for Mac](../../../desktop/mac/index.md) or +[Docker Desktop for Windows](../../../desktop/windows/index.md) application on one computer. You can test both single-node and multi-node swarm from this computer, but you need to use Docker Machine to test the multi-node scenarios. diff --git a/get-docker.md b/get-docker.md index d07d571fc0..417d29cb9a 100644 --- a/get-docker.md +++ b/get-docker.md @@ -25,18 +25,18 @@ section and choose the best installation path for you.
- Docker Desktop for Mac + Docker Desktop for Mac
-

Docker Desktop for Mac

+

Docker Desktop for Mac

A native application using the macOS sandbox security model which delivers all Docker tools to your Mac.

- Docker Desktop for Windows + Docker Desktop for Windows
-

Docker Desktop for Windows

+

Docker Desktop for Windows

A native Windows application which delivers all Docker tools to your Windows computer.

diff --git a/get-started/08_using_compose.md b/get-started/08_using_compose.md index 7e55a1670a..62af7e919f 100644 --- a/get-started/08_using_compose.md +++ b/get-started/08_using_compose.md @@ -117,7 +117,8 @@ docker run -dp 3000:3000 ` ports: - 3000:3000 ``` -4. Next, we'll migrate both the working directory (`-w /app`) and the volume mapping (`-v "$(pwd):/app"`) by using + +5. Next, we'll migrate both the working directory (`-w /app`) and the volume mapping (`-v "$(pwd):/app"`) by using the `working_dir` and `volumes` definitions. Volumes also has a [short](../compose/compose-file/compose-file-v3.md#short-syntax-3) and [long](../compose/compose-file/compose-file-v3.md#long-syntax-3) syntax. One advantage of Docker Compose volume definitions is we can use relative paths from the current directory. @@ -136,7 +137,7 @@ docker run -dp 3000:3000 ` - ./:/app ``` -5. Finally, we need to migrate the environment variable definitions using the `environment` key. +6. Finally, we need to migrate the environment variable definitions using the `environment` key. ```yaml version: "3.7" diff --git a/get-started/index.md b/get-started/index.md index 206b362b31..d439aa095d 100644 --- a/get-started/index.md +++ b/get-started/index.md @@ -85,7 +85,7 @@ machine. If you do not have Docker installed, choose your preferred operating sy [Windows](https://desktop.docker.com/win/stable/amd64/Docker%20Desktop%20Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-win-amd64){: .button .primary-btn} [Linux](../engine/install/index.md){: .button .primary-btn} -For Docker Desktop installation instructions, see [Install Docker Desktop on Mac](../docker-for-mac/install.md) and [Install Docker Desktop on Windows](../docker-for-windows/install.md). +For Docker Desktop installation instructions, see [Install Docker Desktop on Mac](../desktop/mac/install.md) and [Install Docker Desktop on Windows](../desktop/windows/install.md). {% include eula.md %} @@ -107,8 +107,9 @@ You'll notice a few flags being used. Here's some more info on them: > > You can combine single character flags to shorten the full command. > As an example, the command above could be written as: -> ``` -> docker run -dp 80:80 docker/getting-started +> +> ```console +> $ docker run -dp 80:80 docker/getting-started > ``` ## The Docker Dashboard @@ -118,9 +119,8 @@ you a quick view of the containers running on your machine. The Docker Dashboard It gives you quick access to container logs, lets you get a shell inside the container, and lets you easily manage container lifecycle (stop, remove, etc.). -To access the dashboard, follow the instructions for either -[Mac](../../docker-for-mac/dashboard/) or -[Windows](../../docker-for-windows/dashboard/). If you open the dashboard +To access the dashboard, follow the instructions in the +[Docker Desktop product manual](../desktop/dashboard.md). If you open the dashboard now, you will see this tutorial running! The container name (`jolly_bouman` below) is a randomly created name. So, you'll most likely have a different name. diff --git a/go/apple-silicon.md b/go/apple-silicon.md index 3dd9b2d9d9..d5ab03284a 100644 --- a/go/apple-silicon.md +++ b/go/apple-silicon.md @@ -2,5 +2,5 @@ title: How to run Docker Desktop on new Mac with Apple Silicon processors description: Instructions on enabling BuildKit keywords: mac, troubleshooting, apple, silicon, issues -redirect_to: /docker-for-mac/apple-silicon/ +redirect_to: /desktop/mac/apple-silicon/ --- diff --git a/language/golang/build-images.md b/language/golang/build-images.md index 39a8cdea0e..8a15eaa38f 100644 --- a/language/golang/build-images.md +++ b/language/golang/build-images.md @@ -236,9 +236,7 @@ Let's build our first Docker image! ```console $ docker build --tag docker-gs-ping . -``` -``` [+] Building 3.6s (12/12) FINISHED => [internal] load build definition from Dockerfile 0.1s => => transferring dockerfile: 38B 0.0s @@ -273,9 +271,7 @@ To list images, simply run the `images` command: ```console $ docker images -``` -``` REPOSITORY TAG IMAGE ID CREATED SIZE docker-gs-ping latest 336a3f164d0f 39 minutes ago 540MB postgres 13.2 c5ec7353d87d 7 weeks ago 314MB @@ -301,9 +297,7 @@ Now run the `docker images` command to see the updated list of local images: ```console $ docker images -``` -``` REPOSITORY TAG IMAGE ID CREATED SIZE docker-gs-ping latest 336a3f164d0f 43 minutes ago 540MB docker-gs-ping v1.0 336a3f164d0f 43 minutes ago 540MB @@ -323,9 +317,7 @@ Notice that the response from Docker tells us that the image has not been remove ```console $ docker images -``` -``` REPOSITORY TAG IMAGE ID CREATED SIZE docker-gs-ping latest 336a3f164d0f 45 minutes ago 540MB postgres 13.2 c5ec7353d87d 7 weeks ago 314MB @@ -385,7 +377,9 @@ $ docker build -t docker-gs-ping:multistage -f Dockerfile.multistage . Comparing the sizes of `docker-gs-ping:multistage` and `docker-gs-ping:latest` we see an order-of-magnitude difference! -``` +```console +$ docker images + REPOSITORY TAG IMAGE ID CREATED SIZE docker-gs-ping multistage e3fdde09f172 About a minute ago 27.1MB docker-gs-ping latest 336a3f164d0f About an hour ago 540MB diff --git a/language/golang/develop.md b/language/golang/develop.md index 75a317354b..3342892ef3 100644 --- a/language/golang/develop.md +++ b/language/golang/develop.md @@ -132,8 +132,8 @@ $ docker exec -it roach ./cockroach sql --insecure An example of interaction with the SQL shell is presented below. {% raw %} -``` -oliver@hki:~$ sudo docker exec -it roach ./cockroach sql --insecure +```console +$ sudo docker exec -it roach ./cockroach sql --insecure # # Welcome to the CockroachDB SQL shell. # All statements must be terminated by a semicolon. @@ -580,7 +580,7 @@ This Docker Compose configuration is super convenient as we do not have to type Docker Compose will automatically read environment variables from a `.env` file if it is available. Since our Compose file requires `PGPASSWORD` to be set, we add the following content to the `.env` file: -``` +```bash PGPASSWORD=whatever ``` diff --git a/language/golang/run-containers.md b/language/golang/run-containers.md index aa65e90d24..ad720d921d 100644 --- a/language/golang/run-containers.md +++ b/language/golang/run-containers.md @@ -92,9 +92,7 @@ Since we ran our container in the background, how do we know if our container is ```console $ docker ps -``` -``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d75e61fcad1e docker-gs-ping "/docker-gs-ping" 41 seconds ago Up 40 seconds 0.0.0.0:8080->8080/tcp inspiring_ishizaka ``` @@ -112,6 +110,7 @@ Now rerun the `docker ps` command to see a list of running containers. ```console $ docker ps + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ``` @@ -120,10 +119,8 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES Docker containers can be started, stopped and restarted. When we stop a container, it is not removed but the status is changed to stopped and the process inside of the container is stopped. When we ran the `docker ps` command, the default output is to only show running containers. If we pass the `--all` or `-a` for short, we will see all containers on our system, that is stopped containers and running containers. ```console -$ docker ps -a -``` +$ docker ps -all -``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d75e61fcad1e docker-gs-ping "/docker-gs-ping" About a minute ago Exited (2) 23 seconds ago inspiring_ishizaka f65dbbb9a548 docker-gs-ping "/docker-gs-ping" 3 minutes ago Exited (2) 2 minutes ago wizardly_joliot @@ -142,10 +139,8 @@ $ docker restart inspiring_ishizaka Now, list all the containers again using the `ps` command: ```console -$ docker ps --all -``` +$ docker ps -a -``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d75e61fcad1e docker-gs-ping "/docker-gs-ping" 2 minutes ago Up 5 seconds 0.0.0.0:8080->8080/tcp inspiring_ishizaka f65dbbb9a548 docker-gs-ping "/docker-gs-ping" 4 minutes ago Exited (2) 2 minutes ago wizardly_joliot @@ -172,9 +167,7 @@ Again, make sure you replace the containers names in the below command with the ```console $ docker rm inspiring_ishizaka wizardly_joliot magical_carson gifted_mestorf -``` -``` inspiring_ishizaka wizardly_joliot magical_carson @@ -194,9 +187,7 @@ $ docker run -d -p 8080:8080 --name rest-server docker-gs-ping ```console $ docker ps -``` -``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3bbc6a3102ea docker-gs-ping "/docker-gs-ping" 25 seconds ago Up 24 seconds 0.0.0.0:8080->8080/tcp rest-server ``` diff --git a/language/golang/run-tests.md b/language/golang/run-tests.md index 244e3e6a79..6925ebc024 100644 --- a/language/golang/run-tests.md +++ b/language/golang/run-tests.md @@ -84,9 +84,6 @@ That was a bit... underwhelming? Let's ask it to print a bit more detail, just t ```console $ go test -v ./... -``` - -``` === RUN TestRespondsWithLove main_test.go:47: container not ready, waiting... --- PASS: TestRespondsWithLove (5.24s) diff --git a/language/nodejs/build-images.md b/language/nodejs/build-images.md index 3d93ba6740..8957892e68 100644 --- a/language/nodejs/build-images.md +++ b/language/nodejs/build-images.md @@ -255,7 +255,7 @@ The Docker tag command creates a new tag for an image. It does not create a new Now run the `docker images` command to see a list of our local images. -``` +```console $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE node-docker latest 3809733582bc 24 minutes ago 945MB diff --git a/language/nodejs/develop.md b/language/nodejs/develop.md index 22acf497a6..7023e03058 100644 --- a/language/nodejs/develop.md +++ b/language/nodejs/develop.md @@ -166,9 +166,9 @@ Let’s start our application and confirm that it is running properly. $ docker-compose -f docker-compose.dev.yml up --build ``` -We pass the `--build` flag so Docker will compile our image and then starts it. +We pass the `--build` flag so Docker compiles our image and then starts it. -If all goes will you should see something similar: +If all goes well, you should see something similar: ![node-compile](images/node-compile.png){:width="800px"} diff --git a/language/nodejs/run-containers.md b/language/nodejs/run-containers.md index 564f9057ac..64ad1fe8ca 100644 --- a/language/nodejs/run-containers.md +++ b/language/nodejs/run-containers.md @@ -93,7 +93,7 @@ $ curl --request POST \ Since we ran our container in the background, how do we know if our container is running or what other containers are running on our machine? Well, we can run the `docker ps` command. Just like on Linux, to see a list of processes on your machine we would run the ps command. In the same spirit, we can run the `docker ps` command which will show us a list of containers running on our machine. -``` +```console $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ce02b3179f0f node-docker "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 0.0.0.0:8000->8000/tcp wonderful_kalam diff --git a/machine/drivers/hyper-v.md b/machine/drivers/hyper-v.md index e38f7a8870..dfc5947cf2 100644 --- a/machine/drivers/hyper-v.md +++ b/machine/drivers/hyper-v.md @@ -93,7 +93,7 @@ Reboot your desktop system to clear out any routing table problems. Without a re which asks you to create [three networked host machines](../../engine/swarm/swarm-tutorial/index.md#three-networked-host-machines), you can create these swarm nodes: `manager1`, `worker1`, `worker2`. -* Use the Microsoft Hyper-V driver and reference the new virtual switch you created. +* Use the Microsoft Hyper-V driver and reference the new virtual switch you created. ```console $ docker-machine create -d hyperv --hyperv-virtual-switch @@ -127,7 +127,8 @@ Reboot your desktop system to clear out any routing table problems. Without a re ker\Docker\Resources\bin\docker-machine.exe env manager1 PS C:\WINDOWS\system32> ``` -* Use the same process, driver, and network switch to create the other nodes. + +* Use the same process, driver, and network switch to create the other nodes. For our example, the commands are: diff --git a/machine/get-started.md b/machine/get-started.md index 85964c5cc5..09fff99f50 100644 --- a/machine/get-started.md +++ b/machine/get-started.md @@ -14,8 +14,8 @@ page on GitHub. ## Prerequisite information -With the advent of [Docker Desktop for Mac](../docker-for-mac/index.md) and -[Docker Desktop for Windows](../docker-for-windows/index.md), we recommend that you use these for your +With the advent of [Docker Desktop for Mac](../desktop/mac/index.md) and +[Docker Desktop for Windows](../desktop/windows/index.md), we recommend that you use these for your primary Docker workflows. You can use these applications to run Docker natively on your local system without using Docker Machine at all. @@ -42,7 +42,7 @@ driver. The prerequisites are: -* Have Docker Desktop for Windows installed, and running (which requires that virtualization and Hyper-V are enabled, as described in [What to know before you install Docker Desktop for Windows](../docker-for-windows/install.md#what-to-know-before-you-install)). +* Have Docker Desktop for Windows installed, and running (which requires that virtualization and Hyper-V are enabled, as described in [What to know before you install Docker Desktop for Windows](../desktop/windows/install.md#what-to-know-before-you-install)). * Set up the Hyper-V driver to use an external virtual network switch See the [Docker Machine driver for Microsoft Hyper-V](drivers/hyper-v.md) topic, diff --git a/machine/index.md b/machine/index.md index 362ed28992..cc8e229e1b 100644 --- a/machine/index.md +++ b/machine/index.md @@ -30,8 +30,8 @@ point to a host called `default`, follow on-screen instructions to complete Machine _was_ the _only_ way to run Docker on Mac or Windows previous to Docker v1.12. Starting with the beta program and Docker v1.12, -[Docker Desktop for Mac](../docker-for-mac/index.md) and -[Docker Desktop for Windows](../docker-for-windows/index.md) are available as native apps and the +[Docker Desktop for Mac](../desktop/mac/index.md) and +[Docker Desktop for Windows](../desktop/windows/index.md) are available as native apps and the better choice for this use case on newer desktops and laptops. We encourage you to try out these new apps. @@ -52,7 +52,7 @@ Docker Machine has these two broad use cases. ![Docker Machine on Mac and Windows](img/machine-mac-win.png){: .white-bg} - If you work primarily on an older Mac or Windows laptop or desktop that doesn't meet the requirements for the new [Docker Desktop for Mac](../docker-for-mac/index.md) and [Docker Desktop for Windows](../docker-for-windows/index.md) apps, then you need Docker Machine to run Docker Engine locally. + If you work primarily on an older Mac or Windows laptop or desktop that doesn't meet the requirements for the new [Docker Desktop for Mac](../desktop/mac/index.md) and [Docker Desktop for Windows](../desktop/windows/index.md) apps, then you need Docker Machine to run Docker Engine locally. * **I want to provision Docker hosts on remote systems** diff --git a/machine/install-machine.md b/machine/install-machine.md index 520a681216..dd17e4ca91 100644 --- a/machine/install-machine.md +++ b/machine/install-machine.md @@ -106,8 +106,8 @@ To uninstall Docker Machine: Removing machines is an optional step because there are cases where you might want to save and migrate existing machines to a - [Docker for Mac](../docker-for-mac/index.md) or - [Docker Desktop for Windows](../docker-for-windows/index.md) environment, + [Docker for Mac](../desktop/mac/index.md) or + [Docker Desktop for Windows](../desktop/windows/index.md) environment, for example. * Remove the executable: `rm $(which docker-machine)` diff --git a/machine/reference/mount.md b/machine/reference/mount.md index b9e487179b..26c8216ae0 100644 --- a/machine/reference/mount.md +++ b/machine/reference/mount.md @@ -46,5 +46,6 @@ You can also call `fuserunmount` (or `fusermount -u`) commands directly. $ docker-machine mount -u dev:/home/docker/foo foo $ rmdir foo ``` + **Files are actually being stored on the machine, *not* on the host.** So make sure to make a copy of any files you want to keep, before removing it! diff --git a/network/host.md b/network/host.md index b02575bfbf..d7ed3706c3 100644 --- a/network/host.md +++ b/network/host.md @@ -16,7 +16,7 @@ address. > take effect, and the `-p`, `--publish`, `-P`, and `--publish-all` option are > ignored, producing a warning instead: > -> ``` +> ```console > WARNING: Published ports are discarded when using host network mode > ``` diff --git a/registry/deploying.md b/registry/deploying.md index c56277c75e..f9e77d4f9b 100644 --- a/registry/deploying.md +++ b/registry/deploying.md @@ -398,7 +398,7 @@ secrets. > **Warning**: > You **cannot** use authentication with authentication schemes that send > credentials as clear text. You must -> [configure TLS first](deploying.md#running-a-domain-registry) for +> [configure TLS first](deploying.md#run-an-externally-accessible-registry) for > authentication to work. {:.warning} diff --git a/registry/garbage-collection.md b/registry/garbage-collection.md index 7683286501..688238be83 100644 --- a/registry/garbage-collection.md +++ b/registry/garbage-collection.md @@ -100,7 +100,7 @@ gives a clear indication of items eligible for deletion. The config.yml file should be in the following format: -``` +```yaml version: 0.1 storage: filesystem: diff --git a/registry/insecure.md b/registry/insecure.md index 767278f6ae..2de2d30c8e 100644 --- a/registry/insecure.md +++ b/registry/insecure.md @@ -97,11 +97,11 @@ This is more secure than the insecure registry solution. 3. Click **Finish**. Restart Docker. - **Docker Desktop for Mac**: Follow the instructions in - [Adding custom CA certificates](../docker-for-mac/index.md#add-tls-certificates){: target="_blank" rel="noopener" class="_"}. + [Adding custom CA certificates](../desktop/mac/index.md#add-tls-certificates){: target="_blank" rel="noopener" class="_"}. Restart Docker. - **Docker Desktop for Windows**: Follow the instructions in - [Adding custom CA certificates](../docker-for-windows/index.md#adding-tls-certificates){: target="_blank" rel="noopener" class="_"}. + [Adding custom CA certificates](../desktop/windows/index.md#adding-tls-certificates){: target="_blank" rel="noopener" class="_"}. Restart Docker. diff --git a/registry/notifications.md b/registry/notifications.md index 7d190392cc..2bdaa97164 100644 --- a/registry/notifications.md +++ b/registry/notifications.md @@ -159,7 +159,7 @@ request coming to an endpoint. An example of a full event may look as follows: -``` +```http request GET /callback HTTP/1.1 Host: application/vnd.docker.distribution.events.v1+json Authorization: Bearer diff --git a/registry/storage-drivers/s3.md b/registry/storage-drivers/s3.md index 91a13dc632..39cafa5a88 100644 --- a/registry/storage-drivers/s3.md +++ b/registry/storage-drivers/s3.md @@ -84,6 +84,7 @@ The following AWS policy is required by the registry for push and pull. Make sur ] } ``` + See [the S3 policy documentation](http://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html) for more details. # CloudFront as Middleware with S3 backend @@ -135,7 +136,7 @@ are still directly written to S3. The following example shows a minimum configuration: -``` +```yaml ... storage: s3: diff --git a/release-notes/index.md b/release-notes/index.md index ab030f0706..89156ecc06 100644 --- a/release-notes/index.md +++ b/release-notes/index.md @@ -9,8 +9,8 @@ features, improvements, known issues, and bug fixes in each release. You can find release notes for each component in the product manuals section. We suggest that you regularly visit the release notes to learn about updates. -- [Docker Engine](/engine/release-notes/) -- [Docker Desktop for Mac](/docker-for-mac/release-notes/) -- [Docker Desktop for Windows](/docker-for-windows/release-notes/) -- [Docker Hub](/docker-hub/release-notes/) -- [Docker Compose](/compose/release-notes/) +- [Docker Engine](../engine/release-notes/index.md) +- [Docker Desktop for Mac](../desktop/mac/release-notes.md) +- [Docker Desktop for Windows](../desktop/windows/release-notes.md) +- [Docker Hub](../docker-hub/release-notes.md) +- [Docker Compose](../compose/release-notes.md) diff --git a/samples/aspnet-mssql-compose.md b/samples/aspnet-mssql-compose.md index bde6c47888..3db6c8ca2b 100644 --- a/samples/aspnet-mssql-compose.md +++ b/samples/aspnet-mssql-compose.md @@ -27,8 +27,8 @@ configure this app to use our SQL Server database, and then create a 1. Create a new directory for your application. This directory is the context of your docker-compose project. For - [Docker Desktop for Windows](../docker-for-windows/index.md#file-sharing) and - [Docker Desktop for Mac](../docker-for-mac/index.md#file-sharing), you + [Docker Desktop for Windows](../desktop/windows/index.md#file-sharing) and + [Docker Desktop for Mac](../desktop/mac/index.md#file-sharing), you need to set up file sharing for the volume that you need to map. 1. Within your directory, use the `dotnet:2.1-sdk` Docker image to generate a @@ -127,7 +127,7 @@ configure this app to use our SQL Server database, and then create a > variable below to the one you defined in the `docker-compose.yml` file. ```csharp - [...] + <...> public void ConfigureServices(IServiceCollection services) { // Database connection string. @@ -149,7 +149,7 @@ configure this app to use our SQL Server database, and then create a services.AddTransient(); services.AddTransient(); } - [...] + <...> ``` 1. Go to `app.csproj`. You see a line like: @@ -176,8 +176,8 @@ configure this app to use our SQL Server database, and then create a 1. Make sure you allocate at least 2GB of memory to Docker Engine. Here is how to do it on - [Docker Desktop for Mac](../docker-for-mac/index.md#advanced) and - [Docker Desktop for Windows](../docker-for-windows/index.md#advanced). + [Docker Desktop for Mac](../desktop/mac/index.md#advanced) and + [Docker Desktop for Windows](../desktop/windows/index.md#advanced). This is necessary to run the SQL Server on Linux container. 1. Run the `docker-compose up` command. After a few seconds, you should be able diff --git a/samples/dotnetcore.md b/samples/dotnetcore.md index 27e5e3de7d..ae398b8491 100644 --- a/samples/dotnetcore.md +++ b/samples/dotnetcore.md @@ -40,8 +40,8 @@ clone our [ASP.NET Docker Sample](https://github.com/dotnet/dotnet-docker/tree/m [Windows Containers](https://docs.microsoft.com/virtualization/windowscontainers/about/). The tags below are multi-arch meaning they pull either Windows or Linux containers depending on what mode is set in - [Docker Desktop for Windows](../docker-for-windows/index.md). Read more on - [switching containers](../docker-for-windows/index.md#switch-between-windows-and-linux-containers). + [Docker Desktop for Windows](../desktop/windows/index.md). Read more on + [switching containers](../desktop/windows/index.md#switch-between-windows-and-linux-containers). 3. The `Dockerfile` assumes that your application is called `aspnetapp`. Change the `Dockerfile` to use the DLL file of your project. @@ -73,6 +73,7 @@ ENTRYPOINT ["dotnet", "aspnetapp.dll"] bin/ obj/ ``` + ### Method 2 (build app outside Docker container): 1. Create a `Dockerfile` in your project folder. @@ -80,8 +81,8 @@ obj/ [Windows Containers](https://docs.microsoft.com/virtualization/windowscontainers/about/). The tags below are multi-arch meaning they pull either Windows or Linux containers depending on what mode is set in - [Docker Desktop for Windows](../docker-for-windows/index.md). Read more on - [switching containers](../docker-for-windows/index.md#switch-between-windows-and-linux-containers). + [Docker Desktop for Windows](../desktop/windows/index.md). Read more on + [switching containers](../desktop/windows/index.md#switch-between-windows-and-linux-containers). 3. The `Dockerfile` assumes that your application is called `aspnetapp`. Change the `Dockerfile` to use the DLL file of your project. This method assumes that your project is already built and it copies the build artifacts from the publish folder. Refer to the Microsoft documentation on [Containerize a .Net Core app](https://docs.microsoft.com/en-us/dotnet/core/docker/build-container?tabs=windows#create-the-dockerfile){: target="blank" rel="noopener" class=“"}. The `docker build` step here will be much faster than method 1, as all the artifacts are built outside of the `docker build` step and the size of the base image is much smaller compared to the build base image. @@ -113,7 +114,7 @@ $ docker run -d -p 8080:80 --name myapp aspnetapp ## View the web page running from a container * Go to [localhost:8080](http://localhost:8080) to access your app in a web browser. -* If you are using the Nano [Windows Container](../docker-for-windows/index.md) +* If you are using the Nano [Windows Container](../desktop/windows/index.md) and have not updated to the Windows Creator Update there is a bug affecting how [Windows 10 talks to Containers via "NAT"](https://github.com/Microsoft/Virtualization-Documentation/issues/181#issuecomment-252671828) (Network Address Translation). You must hit the IP of the container diff --git a/samples/rails.md b/samples/rails.md index 4c065d9078..2ccfac77ac 100644 --- a/samples/rails.md +++ b/samples/rails.md @@ -50,6 +50,7 @@ Create an empty `Gemfile.lock` file to build our `Dockerfile`. ```console $ touch Gemfile.lock ``` + Next, provide an entrypoint script to fix a Rails-specific issue that prevents the server from restarting when a certain `server.pid` file pre-exists. This script will be executed every time the container gets started. @@ -184,14 +185,12 @@ test: database: myapp_test ``` -You can now boot the app with [docker-compose up](../compose/reference/up.md): +You can now boot the app with [docker-compose up](../compose/reference/up.md). +If all is well, you should see some PostgreSQL output: ```console $ docker-compose up -``` -If all's well, you should see some PostgreSQL output. -```bash rails_db_1 is up-to-date Creating rails_web_1 ... done Attaching to rails_db_1, rails_web_1 @@ -208,12 +207,6 @@ Finally, you need to create the database. In another terminal, run: ```console $ docker-compose run web rake db:create -``` -Here is an example of the output from that command: - -```console -$ docker-compose run web rake db:create - Starting rails_db_1 ... done Created database 'myapp_development' Created database 'myapp_test' diff --git a/storage/volumes.md b/storage/volumes.md index eb214690d0..b8c2f7763c 100644 --- a/storage/volumes.md +++ b/storage/volumes.md @@ -511,6 +511,7 @@ $ docker volume create \ --opt o=addr=uxxxxx.your-server.de,username=uxxxxxxx,password=*****,file_mode=0777,dir_mode=0777 \ --name cif-volume ``` + Notice the `addr` option is required if using a hostname instead of an IP so docker can perform the hostname lookup. ## Backup, restore, or migrate data volumes @@ -522,7 +523,7 @@ Volumes are useful for backups, restores, and migrations. Use the For example, create a new container named `dbstore`: -``` +```console $ docker run -v /dbdata --name dbstore ubuntu /bin/bash ``` @@ -532,7 +533,7 @@ Then in the next command, we: - Mount a local host directory as `/backup` - Pass a command that tars the contents of the `dbdata` volume to a `backup.tar` file inside our `/backup` directory. -``` +```console $ docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata ``` @@ -546,13 +547,13 @@ another that you made elsewhere. For example, create a new container named `dbstore2`: -``` +```console $ docker run -v /dbdata --name dbstore2 ubuntu /bin/bash ``` Then un-tar the backup file in the new container`s data volume: -``` +```console $ docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1" ``` @@ -573,7 +574,7 @@ To automatically remove anonymous volumes, use the `--rm` option. For example, this command creates an anonymous `/foo` volume. When the container is removed, the Docker Engine removes the `/foo` volume but not the `awesome` volume. -``` +```console $ docker run --rm -v /foo -v awesome:/bar busybox top ``` @@ -581,7 +582,7 @@ $ docker run --rm -v /foo -v awesome:/bar busybox top To remove all unused volumes and free up space: -``` +```console $ docker volume prune ``` diff --git a/subscription/index.md b/subscription/index.md index 466fc06e58..78253ec5e8 100644 --- a/subscription/index.md +++ b/subscription/index.md @@ -17,11 +17,11 @@ Docker offers pricing plans that are tailored for individual developers and deve **For individuals:** -The **Pro** plan includes unlimited public repositories, unlimited private repositories, unlimited [collaborators](../repos.md#collaborators-and-their-role) for public repositories, one [service account](../repos.md#service-accounts) for private repositories, autobuilds with 5 parallel builds, starting at $5 per month with the annual subscription. +The **Pro** plan includes unlimited public repositories, unlimited private repositories, unlimited [collaborators](../docker-hub/repos.md#collaborators-and-their-role) for public repositories, one [service account](../docker-hub/service-accounts.md) for private repositories, autobuilds with 5 parallel builds, starting at $5 per month with the annual subscription. > **Note** > -> Pro plans allow one service account for private repositories. For more information, see [service accounts](../repos.md#service-accounts). If you already have more than one collaborator in your private repository, you’ll not be able to add any further collaborators. Any new private repository that you create will be restricted to one service account. +> Pro plans allow one service account for private repositories. For more information, see [service accounts](../docker-hub/service-accounts.md). If you already have more than one collaborator in your private repository, you’ll not be able to add any further collaborators. Any new private repository that you create will be restricted to one service account. The **Free** plan includes unlimited public repositories and unlimited collaborators for public repositories and zero service accounts for private repositories at no cost per month. @@ -31,88 +31,6 @@ The **Team** plan includes unlimited public and unlimited private repositories s The **Free Team** plan includes unlimited public repositories at no cost per month. This plan also offers advanced collaboration and management tools, including organization and team management with role-based access controls which are limited to 1 team and 3 team members. -For detailed information about the features available in each plan, see [Docker Pricing](https://www.docker.com/pricing){: target="_blank" rel="noopener" class="_"}. +For information on how to purchase a plan, see [Upgrade your plan](../subscription/upgrade.md), or to learn more about the features available in each plan, see [Docker Pricing](https://www.docker.com/pricing){: target="_blank" rel="noopener" class="_"}. For frequently asked questions about pricing, see [Docker pricing FAQ](https://www.docker.com/pricing/faq){: target="_blank" rel="noopener" class="_"}. - -### Purchase a Pro plan - -The following section contains information on how to purchase a Pro plan for new customers. - -To purchase a Pro plan: - -1. Log into your [Docker Hub](https://hub.docker.com){: target="_blank" rel="noopener" class="_"} account. - -2. The Docker Hub **Pricing** page displays information about the new pricing plans. - -3. Review the plan details in the **Pro** section and click **Buy Now**. - -4. The **Payment Method** page displays the cost for the annual plan by default. If you prefer to opt for the monthly plan, choose **pay monthly**. - -5. Enter the card details and click **Purchase**. - -6. Verify your email address. - -7. Open the drop-down menu next to your username in the top-right corner and select **Billing**. - - The **Billing** page displays information about your new Pro plan and the total cost. - -### Purchase a Team plan - -The following section contains information on how to purchase a Team plan for new organizations. - -To purchase a Team plan: - -1. Log into your [Docker Hub](https://hub.docker.com){: target="_blank" rel="noopener" class="_"} account. - -2. The Docker Hub **Pricing** page displays information about the new pricing plans. - -3. Review the plan details in the **Team** section and click **Buy Now**. - -4. Enter a name for your new organization and add a company name. - -5. The **Organization size** page displays the cost for the annual plan by default. If you prefer to change this, select **Pay Monthly**. - -6. Specify the number of users you’d like to add to your organization and click **Continue to Payment**. - -6. On the **Payment Method** page, enter the card details and click **Purchase**. - -7. Verify your email address. - -8. Navigate to Organizations from the menu at the top of the page, choose your organization, and select **Billing**. The Billing tab displays information about your new Team plan and the total cost. - -## Update billing information - -> **Note** -> -> You must be on owner of the organization to make changes to the billing information. - -To update the billing information for your organization: - -1. Log into an owner account for the organization in [Docker Hub](https://hub.docker.com){: target="_blank" rel="noopener" class="_"}. - -2. Select **Organizations** from the menu at the top of the page. This displays a list of organizations. - -3. Choose the organization from the list and select the **Billing** tab. - -4. Select **Payment Methods**. - -5. The **Payment Information** page displays your existing billing information and allows you to edit the details. - - > **Note** - > - > The details displayed in the **Contact Information** section is used to generate your invoice. All billing-related information is sent to the email address listed in this section. - -6. Change the details as required and then click **Update** to save your changes. - -To update the billing information for your user account: - -1. Log into your [Docker Hub](https://hub.docker.com){: target="_blank" rel="noopener" class="_"} account. - -2. Open the drop-down menu next to your username in the top-right corner and select **Billing**. The Billing page displays billing information about your existing user account. - -3. Select **Payment Methods**. - -4. The **Payment Information** page displays your existing billing information and allows you to edit the details. - -5. Click **Update** to save your changes. diff --git a/subscription/upgrade.md b/subscription/upgrade.md index 8f22268c40..16d3e66cc9 100644 --- a/subscription/upgrade.md +++ b/subscription/upgrade.md @@ -7,13 +7,66 @@ redirect_from: - /docker-hub/billing/upgrade/ --- -You can upgrade to a Pro or a Team plan from a Free plan, or from your current legacy plan. When you upgrade to a Pro or a Team plan, you will be able to immediately use all the features and entitlements offered in your new plan. For detailed information on features available in each plan, see [Docker Pricing](https://www.docker.com/pricing){: target="_blank" rel="noopener" class="_"}. +This page contains information on how to purchase a Pro or a Team plan. It also contains information on how to upgrade your existing plan and update your billing information. You can upgrade to a Pro or a Team plan from a Free plan, or from your current legacy plan. When you upgrade to a Pro or a Team plan, you can immediately use all the features and entitlements offered in your new plan. For detailed information on features available in each plan, see [Docker Pricing](https://www.docker.com/pricing){: target="_blank" rel="noopener" class="_"}. ->**Note:** +> **Note:** > -If you were previously on a legacy per-repository plan, your plan has been converted to a new Pro or Team monthly plan. For details, see [Pricing FAQ](faq.md). +> If you were previously on a legacy per-repository plan, your plan has been converted to a new Pro or Team monthly plan. For details, see [Pricing FAQ](faq.md). -The following sections contain instructions on how to upgrade to Pro and Team plans. +## Purchase a Pro plan + +The following section contains information on how to purchase a Pro plan for new customers. + +To purchase a Pro plan: + +1. Log into your [Docker Hub](https://hub.docker.com){: target="_blank" rel="noopener" class="_"} account. + +2. Open the drop-down menu next to your username in the top-right corner and select **Billing** to go to the **Billing Details** page. This page displays billing information about your existing user account. + + The Docker Hub **Pricing** page displays information about the new pricing plans. + +3. Ensure you have selected your personal account on the left side of the **Billing Details** page. + +4. Click **Change plan**. + +5. Review the plan details in the **Pro** section and click **Upgrade Now**. + +5. The **Payment Method** page displays the cost for the annual plan by default. If you prefer to opt for the monthly plan, choose **pay monthly**. + +6. Enter the card details and click **Purchase**. + +7. Verify your email address. + +8. Open the drop-down menu next to your username in the top-right corner and select **Billing**. + + The **Billing** page displays information about your new Pro plan and the total cost. + +## Purchase a Team plan + +The following section contains information on how to purchase a Team plan for new organizations. If you do not have a team plan, click here to learn more on how to create a team. + +To purchase a Team plan: + +1. Log into your [Docker Hub](https://hub.docker.com){: target="_blank" rel="noopener" class="_"} account. + +2. Click **Organizations** in the toolbar and select your organization. + +3. Click the **Billing** tab and click **Change plan**. + The Docker Hub **Pricing** page displays information about the new pricing plans. + +4. Review the plan details in the **Team** section and click **Buy Now**. + +5. Enter a name for your new organization and add a company name. + +6. The **Organization size** page displays the cost for the annual plan by default. If you prefer to change this, select **Pay Monthly**. + +7. Specify the number of users you’d like to add to your organization and click **Continue to Payment**. + +8. On the **Payment Method** page, enter the card details and click **Purchase**. + +9. Verify your email address. + +10. Navigate to Organizations from the menu at the top of the page, choose your organization, and select **Billing**. The Billing tab displays information about your new Team plan and the total cost. ## Upgrade to a Pro plan @@ -85,3 +138,39 @@ To upgrade from a monthly Pro plan to an annual Pro plan: 5. Review the information displayed on the **Change to an Annual Plan** page and click **Accept Terms and Purchase** to confirm. The Billing page now displays a confirmation of the upgrade with an invoice containing details about your new plan, entitlements, and the total cost. + +## Update billing information + +> **Note** +> +> You must be on owner of the organization to make changes to the billing information. + +To update the billing information for your organization: + +1. Log into an owner account for the organization in [Docker Hub](https://hub.docker.com){: target="_blank" rel="noopener" class="_"}. + +2. Select **Organizations** from the menu at the top of the page. This displays a list of organizations. + +3. Choose the organization from the list and select the **Billing** tab. + +4. Select **Payment Methods**. + +5. The **Payment Information** page displays your existing billing information and allows you to edit the details. + + > **Note** + > + > The details displayed in the **Contact Information** section is used to generate your invoice. All billing-related information is sent to the email address listed in this section. + +6. Change the details as required and then click **Update** to save your changes. + +To update the billing information for your user account: + +1. Log into your [Docker Hub](https://hub.docker.com){: target="_blank" rel="noopener" class="_"} account. + +2. Open the drop-down menu next to your username in the top-right corner and select **Billing**. The Billing page displays billing information about your existing user account. + +3. Select **Payment Methods**. + +4. The **Payment Information** page displays your existing billing information and allows you to edit the details. + +5. Click **Update** to save your changes. diff --git a/toolbox/index.md b/toolbox/index.md index 48ae760186..ea4edf314c 100644 --- a/toolbox/index.md +++ b/toolbox/index.md @@ -19,8 +19,8 @@ toc_max: 2 >**Deprecated** > > Docker Toolbox has been deprecated and is no longer in active development. Please -> use Docker Desktop instead. See [Docker Desktop for Mac](../docker-for-mac/index.md) -> and [Docker Desktop for Windows](../docker-for-windows/index.md). +> use Docker Desktop instead. See [Docker Desktop for Mac](../desktop/mac/index.md) +> and [Docker Desktop for Windows](../desktop/windows/index.md). {: .warning } This page explains how to migrate your Docker Toolbox installation to Docker Desktop. @@ -68,7 +68,7 @@ To uninstall Docker Toolbox on Mac: This step is optional because if you plan to re-install Docker Machine as a part - of [Docker Desktop for Mac](../docker-for-mac/index.md), you can import and + of [Docker Desktop for Mac](../desktop/mac/index.md), you can import and continue to manage those machines through Docker. 3. In your "Applications" folder, remove the "Docker" directory, @@ -121,7 +121,7 @@ To uninstall Toolbox on Windows: ``` This step is optional because if you plan to re-install Docker Machine as a - part of [Docker Desktop for Windows](../docker-for-windows/index.md), you can + part of [Docker Desktop for Windows](../desktop/windows/index.md), you can import and continue to manage those machines through Docker. 3. Uninstall Docker Toolbox using Window's standard process for uninstalling programs through the control panel (programs and features).