0 0 Share PDF

Docker Desktop Enterprise

Article ID: KB000953

Overview

Docker Desktop Enterprise provides local development, testing, and building of Docker applications on Mac or Windows. With work performed locally, developers can leverage a rapid feedback loop before pushing code or docker images to shared servers / continuous integration infrastructure.

Docker Desktop Enterprise takes Docker Desktop Community, formerly known as Docker for Windows and Docker for Mac, a step further with simplified enterprise application development and maintenance. With Docker Desktop Enterprise, IT organizations can ensure developers are working with the same version of Docker Desktop Enterprise and can easily distribute Docker Desktop Enterprise to large teams using a number of third-party endpoint management applications. With the Docker Desktop Enterprise graphical user interface (GUI), developers are no longer required to work with lower-level Docker commands and can auto-generate Docker artifacts.

Installed with a single click or command line command, Docker Desktop Enterprise is integrated with the host OS framework, networking, and filesystem. Docker Desktop Enterprise is also designed to integrate with existing development environments (IDEs) such as Visual Studio and IntelliJ. And with support for defined application templates, Docker Desktop Enterprise allows organizations to specify the look and feel of their applications.

Feature comparison of Docker Desktop Community versus Docker Desktop Enterprise:

Feature Community version Docker Desktop Enterprise
Docker Engine X X
Docker Compose X X
CLI X X
Windows and Mac support X X
Version selection X
Application Designer X
Device management X
Administrative control X

Exclusive features for Docker Desktop Enterprise

  • Version selection: Configurable version packs ensure the local instance of Docker Desktop Enterprise is a precise copy of the production environment where applications are deployed, and developers can switch between versions of Docker and Kubernetes with a single click.

    • Docker and Kubernetes versions match UCP cluster versions.

    • Administrator command line tool simplifies version pack installation.

  • Application Designer: Application Designer provides a library of application and service templates to help Docker developers quickly create new Docker applications. Application templates allow you to choose a technology stack and focus on business logic and code, and require only minimal Docker syntax knowledge.

    • Template support includes .NET, Spring, and more.
  • Device management:

    • The Docker Desktop Enterprise installer is available as standard MSI (Win) and PKG (Mac) downloads, which allows administrators to script an installation across many developer workstations.
  • Administrative control:

    • IT organizations can specify and lock configuration parameters for creation of a standardized development environment, including disabling drive sharing and limiting version pack installations. Developers can then run commands using the command line without worrying about configuration settings.

Help topics

The following help topics can help get you going with Docker Desktop Enterprise:

Note: To return to this list of topics, select the Back to help topics link at the end of any help topic section.

Installing

System Requirements

Warning: If you are using the community version of Docker Desktop, you must uninstall Docker Desktop community in order to install Docker Desktop Enterprise.

Mac:

  • Mac hardware must be a 2010 or newer model, with Intel’s hardware support for memory management unit (MMU) virtualization, including Extended Page Tables (EPT) and Unrestricted Mode. You can check to see if your machine has this support by running the following command in a terminal: sysctl kern.hv_support

  • MacOS 10.12 and newer MacOS releases are supported. We recommend upgrading to the latest version of macOS.

  • At least 4GB of RAM

  • VirtualBox prior to version 4.3.30 must NOT be installed (it is incompatible with Docker for Mac). If you have a newer version of VirtualBox installed, it’s fine.

Windows:

  • Windows 10 Pro or Enterprise version 15063 or later.

  • Hyper-V and Containers Windows features must be enabled.

  • The following hardware prerequisites are required to successfully run Client Hyper-V on Windows 10:

Virtualization Technology (VTx) must be enabled in BIOS settings

Installation

Download Docker Desktop Enterprise:

What the installer includes: Docker Engine, Docker CLI client, and Docker Compose. To install, double-click the .msi or .pkg file and follow the instructions.

For Mac administrators, the following command line options support fine tuning and mass installation, after which Docker Desktop Enterprise can be run from the Application folder on each individual machine.

\$ sudo installer -pkg Docker.pkg -target /

Administrators can configure additional settings by modifying the administrator configuration file as described in the 'Environment configuration on Mac (administrators only)' section.

License file

You must have a Docker Desktop Enterprise license file installed in the following location:

  • Windows: C:\Users\Docker\AppData\Roaming\Docker\docker_subscription.lic

  • Mac: /Library/Group Containers/group.com.docker/docker_subscription.lic

If the license file is missing, you will be asked to provide it when you try to run Docker Desktop Enterprise.

Firewall exceptions

Docker Desktop Enterprise requires the following firewall exceptions. If you do not have firewall access, or are unsure about how to set firewall exceptions, contact your system administrator.

  • The process com.docker.vpnkit proxies all outgoing container TCP and UDP traffic. This includes Docker image downloading but not DNS resolution, which is performed over a Unix domain socket connected to the mDNSResponder system service.

  • The process com.docker.vpnkit binds external ports on behalf of containers. For example, docker run -p 80:80 nginx binds port 80 on all interfaces.

  • If using Kubernetes, the API server is exposed with TLS on 127.0.0.1:6443 by com.docker.vpnkit.

Version packs

Docker Desktop Enterprise is bundled with default version pack Enterprise 2.1 (Docker Engine 18.09 / Kubernetes 1.11.5). The following version packs can be downloaded and installed if you want to use a different version of the Docker Engine and Kubernetes for development work:

Version packs are installed manually or, for administrators, by using the command line tool. Once installed, version packs can be selected for use in the Docker Desktop Enterprise menu.

Manual version pack installation and selection

Version packs can be installed by double-clicking a .ddvp file.

Installed version packs are listed by name and include the date modified, size, and description.

Installed version packs are listed in Version Selection.

From the Docker Desktop Enterprise drop-down menu, select Version Selection and then select Add version pack.

If more than one version pack is installed, you can select the corresponding entry to work with a different version pack. After you select a different version pack, Docker Desktop Enterprise restarts and the selected Docker Engine and Kubernetes versions are used.

If enabled by your administrator, it is possible to manually install additional version packs using the Add version pack menu option.

Command line tool for installation and uninstallation (administrators only)

For administrators, a command line executable is available for installation and uninstallation for Docker Desktop Enterprise and version packs.

When you install Docker Desktop Enterprise, the tool is installed in the following location:

  • Windows: [ApplicationPath]\dockerdesktop-admin.exe

  • Mac: [ApplicationPath]/Contents/Resources/bin/dockerdesktop-admin

To run tool commands, you must have elevated access privileges: sudo on macOS, administrator on Windows.

  • Version-pack install: Installs or upgrades a version pack to the version contained in the specified .ddvp archive.

    • Windows: dockerdesktop-admin.exe -InstallVersionPack=[path-to-archive]
    • Mac: dockerdesktop-admin version-pack install [path-to-archive]
  • Version-pack uninstall: Uninstalls the specified version pack.

    • Windows: dockerdesktop-admin.exe -UninstallVersionPack=[version-pack-name]
    • Mac: dockerdesktop-admin version-pack uninstall [version-pack-name]
  • Application uninstall: Uninstalls the application.

    • Windows: Use system settings or the .msi file.
    • Mac: dockerdesktop-admin uninstall OR sudo /Applications/Docker.app/Contents/Resources/bin/dockerdesktop-admin app uninstall

    The sudo command uninstalls files that are not accessible by users, such as version packs installed by an administrator.

Where to go next

Exploring the user interface

Docker Desktop Enterprise user interface on Mac

  1. Open a command-line terminal and test that your installation works by running the simple Docker image, hello-world.

    $ docker run hello-world
    
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    ca4f61b1923c: Pull complete
    Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
    Status: Downloaded newer image for hello-world:latest
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    ...
    
  2. Start a Dockerized web server. Like the hello-world image above, if the image is not found locally, Docker pulls it from Docker Hub.

    $ docker run --detach --publish=80:80 --name=webserver nginx
    
  3. In a web browser, go to http://localhost/ to view the nginx homepage. Because we specified the default HTTP port, it isn't necessary to append :80 at the end of the URL.

    nginx home page

    Early beta releases used docker as the hostname to build the URL. Now, ports are exposed on the private IP addresses of the VM and forwarded to localhost with no other host name set.

  4. View the details on the container while your web server is running (with docker container ls or docker ps):

    $ docker container ls
    CONTAINER ID   IMAGE   COMMAND                  CREATED              STATUS              PORTS                         NAMES
    56f433965490   nginx   "nginx -g 'daemon off"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 443/tcp   webserver
    
  5. Stop and remove containers and images with the following commands. Use the "all" flag (--all or -a) to view stopped containers.

    $ docker container ls
    $ docker container stop webserver
    $ docker container ls -a
    $ docker container rm webserver
    $ docker image ls
    $ docker image rm nginx
    

Docker Desktop Enterprise Preferences menu

Choose whale menuPreferences from the menu bar and configure the runtime options described below.

Docker context menu

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

General

Preferences

General settings are:

  • Start Docker when you log in: Uncheck this option if you don't want Docker to start when you open your session.

  • Include VM in Time Machine backups backs up the Docker Desktop Enterprise virtual machine. (Disabled by default.)

  • Securely store Docker logins in MacOS keychain stores your Docker login credentials. (Enabled by default.)

  • Send usage statistics: Send diagnostics, crash reports, and usage data to Docker. This information helps Docker improve the application and get more context for troubleshooting problems. (Enabled by default.)

File sharing

Choose which local directories to share with your containers. File sharing is required for volume mounting if the project lives outside of the /Users directory. In that case, share the drive where the Dockerfile and volume are located. Otherwise, you get file not found or cannot start service errors at runtime.

File Sharing

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

File share settings are:

  • Add a Directory: Click + and navigate to the directory you want to add.

  • Apply & Restart makes the directory available to containers using Docker's bind mount (-v) feature.

    There are some limitations on the directories that can be shared:

  • They cannot be a subdirectory of an already shared directory.

  • They cannot already exist inside of Docker.

For more information, see:

Disk

Specify the Disk image location of the Linux volume, where containers and images are stored.

You can also move the disk image location. If you attempt to move the disk image to a location that already has one, you get a prompt asking if you want to use the existing image or replace it.

Disk settings

Advanced

On the Advanced tab, you can limit resources available to Docker.

Advanced Preference settings

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

Advanced settings are:

CPUs: By default, Docker Desktop Enterprise is set to use half the number of processors available on the host machine. To increase processing power, set this to a higher number; to decrease, lower the number.

Memory: By default, Docker Desktop Enterprise is set to use 2 GB runtime memory, allocated from the total available memory on your Mac. To increase RAM, set this to a higher number; to decrease it, lower the number.

Swap: Configure swap file size as needed. The default is 1 GB.

Proxies

Docker Desktop Enterprise detects HTTP/HTTPS Proxy Settings from macOS and automatically propagates these to Docker and to your containers. For example, if you set your proxy settings to http://proxy.example.com, Docker uses this proxy when pulling containers.

Proxies settings

macOS Proxy Settings

When you start a container, your proxy settings propagate into the containers. For example:

$ docker run -it alpine env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b7edf988b2b5
TERM=xterm
HOME=/root
HTTP_PROXY=http://proxy.example.com:3128
http_proxy=http://proxy.example.com:3128
no_proxy=*.local, 169.254/16

You can see from the above output that the HTTP_PROXY, http_proxy, and no_proxy environment variables are set. When your proxy configuration changes, Docker restarts automatically to pick up the new settings. If you have containers that you wish to keep running across restarts, you should consider using restart policies.

Daemon

You can configure options on the Docker daemon that determine how your containers run.

Select Basic to configure the daemon with interactive settings, or select Advanced to edit the JSON directly.

Daemon

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

Experimental features

Docker Desktop Enterprise has experimental features enabled on Docker Engine, as described in Docker Experimental Features README. If you uncheck experimental mode, Docker Desktop Enterprise uses the current generally available release of Docker Engine.

Don't enable experimental features in production

Experimental features are not appropriate for production environments or workloads. They are meant to be sandbox experiments for new ideas. Some experimental features may become incorporated into upcoming stable releases, but others may be modified or pulled from subsequent Edge releases, and never released on Stable.

You can see whether you are running experimental mode at the command line. If Experimental is true, then Docker is running in experimental mode, as shown here. (If false, Experimental mode is off.)

{% raw %}$ docker version -f {{.Server.Experimental}}{% endraw %}
true
Insecure registries

You can set up a custom and insecure registry to store your public or private images (instead of using Docker Hub or Docker Trusted Registry. Add URLs for your insecure registries and registry mirrors on which to host your images.

See also:

Daemon configuration file

Click the Advanced tab to configure the daemon from the JSON file. For a full list of options, see the Docker Engine dockerd command line reference.

Click Apply & Restart to save your settings and reboot Docker. Or, to cancel changes, click another preference tab, then choose to discard or not apply changes when asked.

Docker Daemon

Kubernetes

Docker Desktop Enterprise includes a standalone Kubernetes server that runs on your Mac, so that you can test deploying your Docker workloads on Kubernetes.

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

The Kubernetes client command, kubectl, is included and configured to connect to the local Kubernetes server. If you have kubectl already installed and pointing to some other environment, such as minikube or a GKE cluster, be sure to change context so that kubectl is pointing to docker-for-desktop:

$ kubectl config get-contexts
$ kubectl config use-context docker-for-desktop

If you installed kubectl with Homebrew, or by some other method, and experience conflicts, remove /usr/local/bin/kubectl.

  • To enable Kubernetes support and install a standalone instance of Kubernetes running as a Docker container, select Enable Kubernetes, choose the default orchestrator and click the Apply button.

Enable Kubernetes

An Internet connection is required. Images required to run the Kubernetes server are downloaded and instantiated as containers, and the /usr/local/bin/kubectl command is installed on your Mac.

When Kubernetes is enabled and running, an additional status bar item displays at the bottom right of the Docker Desktop Enterprise Preferences dialog.

Installation complete

The status of Kubernetes shows in the Docker menu and the context points to docker-for-desktop.

Docker Menu with Kubernetes

  • By default, Kubernetes containers are hidden from commands like docker service ls, because managing them manually is not supported. To make them visible, select Show system containers (advanced) and click Apply and restart. Most users do not need this option.

  • To disable Kubernetes support at any time, deselect Enable Kubernetes. The Kubernetes containers are stopped and removed, and the /usr/local/bin/kubectl command is removed.

For more about using the Kubernetes integration with Docker Desktop Enterprise, see Deploy on Kubernetes.

Reset

Select whale menu -> Preferences from the menu bar, then click Reset to reset factory defaults, restart the Docker daemon, or uninstall.

Uninstall or reset Docker

Uninstall Docker Desktop Enterprise from the commandline

To uninstall Docker Desktop Enterprise from a terminal, run: <DockerforMacPath> --uninstall. If your instance is installed in the default location, this command provides a clean uninstall:

$ /Applications/Docker.app/Contents/MacOS/Docker --uninstall
Docker is running, exiting...
Docker uninstalled successfully. You can move the Docker application to the trash.

You might want to use the command-line uninstall if, for example, you find that the app is non-functional, and you cannot uninstall it from the menu.

Add TLS certificates

You can add trusted Certificate Authorities (CAs) (used to verify registry server certificates) and client certificates (used to authenticate to registries) to your Docker daemon.

Add custom CA certificates (server side)

All trusted CAs (root or intermediate) are supported. Docker Desktop Enterprise creates a certificate bundle of all user-trusted CAs based on the Mac Keychain, and appends it to Moby trusted certificates. So if an enterprise SSL certificate is trusted by the user on the host, it is trusted by Docker Desktop Enterprise.

To manually add a custom, self-signed certificate, start by adding the certificate to the macOS keychain, which is picked up by Docker Desktop Enterprise. Here is an example.

$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt

Or, if you prefer to add the certificate to your own local keychain only (rather than for all users), run this command instead:

$ security add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain ca.crt

See also, Directory structures for certificates.

Note: You need to restart Docker Desktop Enterprise after making any changes to the keychain or to the ~/.docker/certs.d directory in order for the changes to take effect.

For a complete explanation of how to do this, see the blog post Adding Self-signed Registry Certs to Docker & Docker Desktop Enterprise.

Add client certificates

You can put your client certificates in ~/.docker/certs.d/<MyRegistry>:<Port>/client.cert and ~/.docker/certs.d/<MyRegistry>:<Port>/client.key.

When the Docker Desktop Enterprise application starts up, it copies the ~/.docker/certs.d folder on your Mac to the /etc/docker/certs.d directory on Moby (the Docker Desktop Enterprise xhyve virtual machine).

  • You need to restart Docker Desktop Enterprise after making any changes to the keychain or to the ~/.docker/certs.d directory in order for the changes to take effect.

  • The registry cannot be listed as an insecure registry (see Docker Daemon). Docker Desktop Enterprise ignores certificates listed under insecure registries, and does not send client certificates. Commands like docker run that attempt to pull from the registry produce error messages on the command line, as well as on the registry.

Directory structures for certificates

If you have this directory structure, you do not need to manually add the CA certificate to your Mac OS system login:

/Users/<user>/.docker/certs.d/
└── <MyRegistry>:<Port>
   ├── ca.crt
   ├── client.cert
   └── client.key

The following further illustrates and explains a configuration with custom certificates:

/etc/docker/certs.d/        <-- Certificate directory
└── localhost:5000          <-- Hostname:port
   ├── client.cert          <-- Client certificate
   ├── client.key           <-- Client key
   └── ca.crt               <-- Certificate authority that signed
                                the registry certificate

You can also have this directory structure, as long as the CA certificate is also in your keychain.

/Users/<user>/.docker/certs.d/
└── <MyRegistry>:<Port>
    ├── client.cert
    └── client.key

To learn more about how to install a CA root certificate for the registry and how to set the client TLS certificate for verification, see Verify repository client with certificates in the Docker Engine topics.

Install shell completion

Docker Desktop Enterprise comes with scripts to enable completion for the docker, docker-machine, and docker-compose commands. The completion scripts may be found inside Docker.app, in the Contents/Resources/etc/ directory and can be installed both in Bash and Zsh.

Bash

Bash has built-in support for completion To activate completion for Docker commands, these files need to be copied or symlinked to your bash_completion.d/ directory. For example, if you installed bash via Homebrew

etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.bash-completion $(brew --prefix)/etc/bash_completion.d/docker
ln -s $etc/docker-machine.bash-completion $(brew --prefix)/etc/bash_completion.d/docker-machine
ln -s $etc/docker-compose.bash-completion $(brew --prefix)/etc/bash_completion.d/docker-compose
Zsh

In Zsh, the completion system takes care of things. To activate completion for Docker commands, these files need to be copied or symlinked to your Zsh site-functions/ directory. For example, if you installed Zsh via Homebrew:

etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker
ln -s $etc/docker-machine.zsh-completion /usr/local/share/zsh/site-functions/_docker-machine
ln -s $etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose

Where to go next

Docker Desktop Enterprise user interface on Windows

Test your installation

  1. Open a terminal window (Command Prompt or PowerShell, but not PowerShell ISE).

  2. Run docker --version to ensure that you have a supported version of Docker:

    > docker --version
    
    Docker version 18.03.0-ce, build 0520e24
    
  3. Pull the hello-world image from Docker Hub and run a container:

    > docker run hello-world
    
    docker : Unable to find image 'hello-world:latest' locally
    ...
    
    latest:
    Pulling from library/hello-world
    ca4f61b1923c:
    Pulling fs layer
    ca4f61b1923c:
    Download complete
    ca4f61b1923c:
    Pull complete
    Digest: sha256:97ce6fa4b6cdc0790cda65fe7290b74cfebd9fa0c9b8c38e979330d547d22ce1
    Status: Downloaded newer image for hello-world:latest
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    ...
    
  4. List the hello-world image that was downloaded from Docker Hub:

    > docker image ls
    
  5. List the hello-world container (that exited after displaying "Hello from Docker!"):

    > docker container ls --all
    
  6. Explore the Docker help pages by running some help commands:

    > docker --help
    > docker container --help
    > docker container ls --help
    > docker run --help
    

Explore the application

In this section, we demonstrate the ease and power of Dockerized applications by running something more complex, such as an OS and a webserver.

  1. Pull an image of the Ubuntu OS and run an interactive terminal inside the spawned container:

    > docker run --interactive --tty ubuntu bash
    
    docker : Unable to find image 'ubuntu:latest' locally
    ...
    
    latest:
    Pulling from library/ubuntu
    22dc81ace0ea:
    Pulling fs layer
    1a8b3c87dba3:
    Pulling fs layer
    91390a1c435a:
    Pulling fs layer
    ...
    Digest: sha256:e348fbbea0e0a0e73ab0370de151e7800684445c509d46195aef73e090a49bd6
    Status: Downloaded newer image for ubuntu:latest
    

    Do not use PowerShell ISE

    Interactive terminals do not work in PowerShell ISE (but they do in PowerShell). See docker/for-win/issues/223.

  2. You are in the container. At the root # prompt, check the hostname of the container:

    root@8aea0acb7423:/# hostname
    8aea0acb7423
    

    Notice that the hostname is assigned as the container ID (and is also used in the prompt).

  3. Exit the shell with the exit command (which also stops the container):

    root@8aea0acb7423:/# exit
    >
    
  4. List containers with the --all option (because no containers are running).

    The hello-world container (randomly named, relaxed_sammet) stopped after displaying its message. The ubuntu container (randomly named, laughing_kowalevski) stopped when you exited the container.

    > docker container ls --all
    
    CONTAINER ID    IMAGE          COMMAND     CREATED          STATUS                      PORTS    NAMES
    8aea0acb7423    ubuntu         "bash"      2 minutes ago    Exited (0) 2 minutes ago             laughing_kowalevski
    45f77eb48e78    hello-world    "/hello"    3 minutes ago    Exited (0) 3 minutes ago             relaxed_sammet
    
  5. Pull and run a Dockerized nginx web server that we name, webserver:

    > docker run --detach --publish 80:80 --name webserver nginx
    
    Unable to find image 'nginx:latest' locally
    latest: Pulling from library/nginx
    
    fdd5d7827f33: Pull complete
    a3ed95caeb02: Pull complete
    716f7a5f3082: Pull complete
    7b10f03a0309: Pull complete
    Digest: sha256:f6a001272d5d324c4c9f3f183e1b69e9e0ff12debeb7a092730d638c33e0de3e
    Status: Downloaded newer image for nginx:latest
    dfe13c68b3b86f01951af617df02be4897184cbf7a8b4d5caf1c3c5bd3fc267f
    
  6. Point your web browser at http://localhost to display the nginx start page. (You don't need to append :80 because you specified the default HTTP port in the docker command.)

    Run nginx edge

  7. List only your running containers:

    > docker container ls
    
    CONTAINER ID    IMAGE    COMMAND                   CREATED          STATUS          PORTS                 NAMES
    0e788d8e4dfd    nginx    "nginx -g 'daemon of…"    2 minutes ago    Up 2 minutes    0.0.0.0:80->80/tcp    webserver
    
  8. Stop the running nginx container by the name we assigned it, webserver:

    >  docker container stop webserver
    
  9. Remove all three containers by their names -- the latter two names will differ for you:

    > docker container rm webserver laughing_kowalevski relaxed_sammet
    

Docker Desktop Enterprise Settings menu

The Docker Desktop Enterprise Settings menu provides options for configuring Docker settings -- installation, version packs, Docker Hub login, and more.

This section explains the configuration options accessible from the Settings dialog.

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

  1. Open Docker Desktop Enterprise by right-clicking the Docker icon in the Notifications area (or System tray):

    Showing hidden apps in the taskbar

  2. Select Settings… to open the Settings dialog:

    Docker Desktop Enterprise popup menu

General

On the General tab of the Settings dialog, you can configure when to start Docker Desktop Enterprise.

Settings

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

  • Start Docker when you log in - Automatically start the Docker Desktop Enterprise application upon Windows system login.

  • Send usage statistics - By default, Docker Desktop Enterprise sends diagnostics, crash reports, and usage data. This information helps Docker improve and troubleshoot the application. Uncheck to opt out. Docker might prompt you for more information.

Shared drives

Share your local drives (volumes) with Docker Desktop Enterprise, so that they are available to your Linux containers.

Shared drives

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

Permission for shared drives are tied to the credentials you provide here. If you run docker commands under a different username than the one configured here, your containers cannot access the mounted volumes.

To apply shared drives, you are prompted for your Windows system (domain) username and password. You can select an option to have Docker store the credentials so that you don't need to enter them every time.

Tips on shared drives, permissions, and volume mounts

Firewall rules for shared drives

Shared drives require port 445 to be open between the host machine and the virtual machine that runs Linux containers. Docker detects if port 445 is closed and shows the following message when you try to add a shared drive:

Port 445 blocked

To share the drive, allow connections between the Windows host machine and the virtual machine in Windows Firewall or your third party firewall software. You do not need to open port 445 on any other network.

By default, allow connections to 10.0.75.1 on port 445 (the Windows host) from 10.0.75.2 (the virtual machine). If your firewall rules seem correct, you may need to toggle or reinstall the File and Print sharing service on the Hyper-V virtual network card

Shared drives on demand

You can share a drive "on demand" the first time a particular mount is requested.

If you run a Docker command from a shell with a volume mount (as shown in the example below) or kick off a Compose file that includes volume mounts, you get a popup asking if you want to share the specified drive.

You can select to Share it, in which case it is added your Docker Desktop Enterprise Shared Drives List and available to containers. Alternatively, you can opt not to share it by selecting Cancel.

Shared drive on demand

Advanced

The Linux VM restarts after changing the settings on the Advanced tab. This takes a few seconds.

CPU and Memory settings

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

  • CPUs - Change the number of processors assigned to the Linux VM.

  • Memory - Change the amount of memory the Docker Desktop Enterprise Linux VM uses.

Network

You can configure Docker Desktop Enterprise networking to work on a virtual private network (VPN).

Network settings

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

  • Internal Virtual Switch - You can specify a network address translation (NAT) prefix and subnet mask to enable Internet connectivity.

  • DNS Server - You can configure the DNS server to use dynamic or static IP addressing.

Note: Some users reported problems connecting to Docker Hub on Docker Desktop Enterprise. This would manifest as an error when trying to run docker commands that pull images from Docker Hub that are not already downloaded, such as a first time run of docker run hello-world. If you encounter this, reset the DNS server to use the Google DNS fixed address: 8.8.8.8. For more information, see Networking issues in Troubleshooting.

Updating these settings requires a reconfiguration and reboot of the Linux VM.

Proxies

Docker Desktop Enterprise lets you configure HTTP/HTTPS Proxy Settings and automatically propagates these to Docker and to your containers. For example, if you set your proxy settings to http://proxy.example.com, Docker uses this proxy when pulling containers.

Proxies

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

When you start a container, your proxy settings propagate into the containers. For example:

> docker run alpine env

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b7edf988b2b5
TERM=xterm
HOME=/root
HTTP_PROXY=http://proxy.example.com:3128
http_proxy=http://proxy.example.com:3128
no_proxy=*.local, 169.254/16

In the output above, the HTTP_PROXY, http_proxy, and no_proxy environment variables are set. When your proxy configuration changes, Docker restarts automatically to pick up the new settings. If you have containers that you wish to keep running across restarts, you should consider using restart policies.

Daemon

You can configure the Docker daemon to hone how your containers run. Advanced mode lets you edit the JSON directly. Basic mode lets you configure the more common daemon options with interactive settings (and also JSON).

Docker Daemon

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

Experimental mode

Docker Desktop Enterprise has the experimental version of Docker Engine enabled, described in the Docker Experimental Features README on GitHub.

Experimental features are not appropriate for production environments or workloads. They are meant to be sandbox experiments for new ideas. Some experimental features may become incorporated into upcoming stable releases, but others may be modified or pulled from subsequent Edge releases, and never released on Stable.

In Docker Desktop Enterprise, you can toggle experimental mode on and off. If you toggle it off, Docker Desktop Enterprise uses the current generally available release of Docker Engine.

Run docker version to see if you are in Experimental mode. Experimental mode is listed under Server data. If Experimental is true, then Docker is running in experimental mode, as shown here:

> docker version

Client:
 Version:       18.03.0-ce
 API version:   1.37
 Go version:    go1.9.4
 Git commit:    0520e24
 Built: Wed Mar 21 23:06:28 2018
 OS/Arch:       windows/amd64
 Experimental:  true
 Orchestrator:  swarm

Server:
 Engine:
  Version:      18.03.0-ce
  API version:  1.37 (minimum version 1.24)
  Go version:   go1.9.4
  Git commit:   0520e24
  Built:        Wed Mar 21 23:21:06 2018
  OS/Arch:      windows/amd64
  Experimental: true
Custom registries

You can set up your own registries on the Basic Daemon settings.

Normally, you store public or private images in Docker Hub and Docker Trusted Registry. Here, you can use Docker to set up your own insecure registry. Simply add URLs for insecure registries and registry mirrors on which to host your images.

See How do I add custom CA certificates? and How do I add client certificates? in the FAQs.

Daemon configuration file

The Advanced daemon settings provide the original option to directly edit the JSON configuration file for the daemon.

Updating these settings requires a reconfiguration and reboot of the Linux VM.

Docker Daemon

For a full list of options on the Docker daemon, see daemon, and also sub-topics:

Kubernetes

Kubernetes is available on Docker Desktop Enterprise. A standalone Kubernetes server is included that runs on your Windows host, so that you can test deploying your Docker workloads on Kubernetes.

Enable Kubernetes

Note: Administrators have the ability to lock some configuration options. Locked options cannot be selected, and are displayed with a lock icon.

The Kubernetes client command, kubectl, is included and configured to connect to the local Kubernetes server. If you have kubectl already installed and pointing to some other environment, such as minikube or a GKE cluster, be sure to change context so that kubectl is pointing to docker-for-desktop:

> kubectl config get-contexts
> kubectl config use-context docker-for-desktop

You can also change it through the Docker Desktop Enterprise menu:

Change Kubernetes Context

If you installed kubectl by another method, and experience conflicts, remove it.

  • To enable Kubernetes support and install a standalone instance of Kubernetes running as a Docker container, select Enable Kubernetes and click the Install button.

    An Internet connection is required. Images required to run the Kubernetes server are downloaded and instantiated as containers, and the

Program Files\Docker\Docker\Resources\bin\kubectl.exe command is installed.

  • By default, Kubernetes containers are hidden from commands like docker service ls, because managing them manually is not supported. To make them visible, select Show system containers (advanced) and click Apply and restart. Most users do not need this option.

  • To disable Kubernetes support at any time, deselect Enable Kubernetes. The Kubernetes containers are stopped and removed, and the /usr/local/bin/kubectl command is removed.

    For more about using the Kubernetes integration with Docker Desktop Enterprise, see Deploy on Kubernetes.

Reset

On the Reset tab, you can restart Docker or reset its configuration.

Reset

  • Restart Docker - Shuts down and restarts the Docker application.

  • Reset to factory defaults - Resets Docker to factory defaults. This is useful in cases where Docker stops working or becomes unresponsive.

Diagnose & feedback

See Troubleshooting on Windows.

Log on to our Docker Desktop for Windows forum to get help from the community, review current user topics, or join a discussion.

Log on to Docker Desktop for Windows issues on GitHub to review community reported issues.

To give feedback on the documentation or update it yourself, use the Feedback options at the bottom of each docs page.

Switch between Windows and Linux containers

From the Docker Desktop Enterprise menu, you can toggle which daemon (Linux or Windows) the Docker CLI talks to. Select Switch to Windows containers to use Windows containers, or select Switch to Linux containers to use Linux containers (the default).

Windows-Linux container types switch

For more information on Windows containers, refer to this documentation:

Settings dialog changes with Windows containers

When you switch to Windows containers, the Settings dialog only shows those tabs that are active and apply to your Windows containers:

If you set proxies or daemon configuration in Windows containers mode, these apply only on Windows containers. If you switch back to Linux containers, proxies and daemon configurations return to what you had set for Linux containers. Your Windows container settings are retained and become available again when you switch back.

Adding TLS certificates

To your Docker daemon, you can add trusted Certificate Authorities (CAs), to verify registry server certificates, and client certificates, to authenticate to registries.

See How do I add custom CA certificates? and How do I add client certificates? in the FAQs.

Docker Hub

Select Sign in /Create Docker ID from the Docker Desktop Enterprise menu to access your Docker Hub account. Once logged in, you can access your Docker Hub repositories directly from the Docker Desktop Enterprise menu.

See these Docker Hub topics to learn more:

Where to go next

Application Designer

The Application Designer helps Docker developers quickly create new Docker apps using a library of templates. To start the Application Designer, select the Design new application menu entry.

The Application Designer lets you choose an existing template or create a custom application.

The list of available templates is provided:

You can tab through the available application templates. A description of each template is provided.

After selecting a template, you can then customize your application, For example, if you select Flask / NGINX / MySQL, you can then

  • select a different version of python or mysql; and

  • choose different external ports:

You can customize your application, which includes specifying database, proxy, and other details.

You can then name your application and customize the disk location:

You can also customize the name and location of your application.

When you select Assemble, your application is created.

When you assemble your application, a status screen is displayed.

Once assembled, the following screen allows you to run the application. Select Run application to pull the images and start the containers:

When you run your application, the terminal displays output from the application.

Use the corresponding buttons to start and stop your application. Select Open in Finder on Mac or Open in Explorer on Windows to view application files on disk. Select Open in Visual Studio Code to open files with an editor. Note that debug logs from the application are displayed in the lower part of the Application Designer window.

Where to go next

Configuring your environment

Environment configuration on Mac (administrators only)

The administrator configuration file allows you to customize and standardize your Docker Desktop environment across the organization.

When you install Docker Desktop Enterprise, a configuration file with default values is installed in, and must remain in, the following location:

/Library/Application Support/Docker/DockerDesktop/admin-settings.json

To edit admin-settings.json, you must have sudo access privileges.

Syntax for admin-settings.json:

  1. configurationFileVersion: This must be the first parameter listed in admin-settings.json. It specifies the version of the configuration file format and must be set to 1.

  2. A nested list of configuration parameters, each of which contains a minimum of the following two settings:

  • locked: If set to true, users without elevated access privileges are not able to edit this setting from the UI or by directly editing the settings.json file (the settings.json file stores the user's preferences). If set to false, users without elevated access privileges can change this setting from the UI or by directly editing settings.json. If this setting is omitted, the default value is `false'.

  • value: Specifies the value of the parameter. Docker Desktop Enterprise uses the value when first started and after a reset to factory defaults. If this setting is omitted, a default value that is built into the application is used.

Parameters and settings

The following admin-settings.json code and table provide the required syntax and descriptions for parameters and values:

{
  "configurationFileVersion": 1,

   "analyticsEnabled": {
     "locked": false,
     "value": false
   },

  "dockerCliOptions": {
    "stackOrchestrator": {
      "locked": false,
      "value": "swarm"
    }
  },
  "versionPacks": {
    "allowUserInstall": {
      "value": true
    }
  },
  "proxy": {
    "locked": false,
    "value": {
      "http": "http://proxy.docker.com:8080",
      "https": "https://proxy.docker.com:8080",
      "exclude": "docker.com,github.com"
    }
  },
"linuxVM": {
    "cpus": {
      "locked": false,
      "value": 2
    },
    "memoryMiB": {
      "locked": false,
      "value": 2048
    },
    "swapMiB": {
      "locked": false,
      "value": 1024
    },
    "diskSizeMiB": {
      "locked": false,
      "value": 65536
    },
    "dataFolder" : {
      "value" : "/Users/...",
      "locked" : false
    },
    "filesharingDirectories": {
      "locked":false, 
      "value":["/Users", "..."]
    },
    "dockerDaemonOptions": {
      "experimental": {
         "locked": false,
         "value": true
      }
    }
  },

  "kubernetes": {

    "enabled": {
      "locked": false,
      "value": false
    },
    "showSystemContainers": {
      "locked": false,
      "value": false
    },
    "podNetworkCIDR": {
      "locked": false,
      "value": null
    },
    "serviceCIDR": {
      "locked": false,
      "value": null
    }
  }

}

Parameter values and descriptions for environment configuation on Mac:

Parameter Description
configurationFileVersion Specifies the version of the configuration file format.
analyticsEnabled If value is true, allow Docker Desktop Enterprise to sends diagnostics, crash reports, and usage data. This information helps Docker improve and troubleshoot the application.
dockerCliOptions Specifies key-value pairs in the user's %HOME%\\.docker\\config.json file. In the sample code provided, the orchestration for docker stack commands is set to swarm rather than kubernetes.
versionPacks Parameters and settings related to version packs - grouped together here for convenience.
allowUserInstall If true, users are able to install new version packs. If false, only the admin can install new version packs.
proxy The http setting specifies the HTTP proxy setting. The https setting specifies the HTTPS proxy setting. The exclude setting specifies a comma-separated list of hosts and domains to bypass the proxy. Warning: This parameter should be locked after being set: locked: "true".
linuxVM Parameters and settings related to the Linux VM - grouped together in this example for convenience.
cpus Specifies the default number of virtual CPUs for the VM. If the physical machine has only 1 core, the default value is set to 1.
memoryMiB Specifies the amount of memory in MiB (1 MiB = 1048576 bytes) allocated for the VM.
swapMiB Specifies the amount of memory in MiB (1 MiB = 1048576 bytes) allocated for the swap file.
dataFolder Specifies the directory containing the VM disk files.
diskSizeMiB Specifies the amount of disk storage in MiB (1 MiB = 1048576 bytes) allocated for images and containers.
filesharingDirectories The host folders that users can bind-mount in containers.
dockerDaemonOptions Overrides the options in the linux daemon config file. For more information, see the Docker engine reference
(End of linuxVM section.)
kubernetes Parameters and settings related to kubernetes options - grouped together here for convenience.
enabled If locked is set to true, the k8s cluster starts when Docker Desktop Enterprise is started.
showSystemContainers If true, displays k8s internal containers when running docker commands such as docker ps.
podNetworkCIDR This is currently unimplemented. locked must be set to true.
serviceCIDR This is currently unimplemented. locked must be set to true.
(End of kubernetes section.)

Where to go next

Environment configuration on Windows (administrators only)

The administrator configuration file allows you to customize and standardize your Docker Desktop environment across the organization. When you install Docker Desktop Enterprise, a configuration file with default values is installed in, and must remain in, the following location:

\%ProgramData%\\DockerDesktop\\admin-settings.json

which defaults to

C:\\ProgramData\\DockerDesktop\\admin-settings.json

To edit admin-settings.json, you must have administrator access privileges.

Syntax for admin-settings.json:

  1. configurationFileVersion: This must be the first parameter listed in admin-settings.json. It specifies the version of the configuration file format and must be set to 1.

  2. A nested list of configuration parameters, each of which contains a minimum of the following two settings:

  • locked: If set to true, users without elevated access privileges are not able to edit this setting from the UI or by directly editing the settings.json file (the settings.json file stores the user's preferences). If set to false, users without elevated access privileges can change this setting from the UI or by directly editing settings.json. If this setting is omitted, the default value is `false'.

  • value: Specifies the value of the parameter. Docker Desktop Enterprise uses the value when first started and after a reset to factory defaults. If this setting is omitted, a default value that is built into the application is used.

Parameters and settings

The following admin-settings.json code and table provide the required syntax and descriptions for parameters and values:

{
  "configurationFileVersion": 1,
  "engine": {
    "locked": false,
    "value": "linux"
  },
  "analyticsEnabled": {
      "locked": false,
      "value": false
    },
  "exposeDockerAPIOnTCP2375": {
    "locked": false,
    "value": false
  },
  "dockerCliOptions": {
    "stackOrchestrator": {
      "locked": false,
      "value": "swarm"
    }
  },
  "versionPacks": {
    "allowUserInstall": {
      "value": false
    }
  },
  "proxy": {
    "locked": false,
    "value": {
      "http": "http://proxy.docker.com:8080",
      "https": "https://proxy.docker.com:8080",
      "exclude": "docker.com,github.com"
    }
  },

  "linuxVM": {
    "cpus": {
      "locked": false,
      "value": 2
    },
    "memoryMiB": {
      "locked": false,
      "value": 2048
    },
    "swapMiB": {
      "locked": false,
      "value": 1024
    },
    "dataFolder": {
      "locked": false,
      "value": null
    },
    "diskSizeMiB": {
      "locked": false,
      "value": 65536
    },
    "hypervCIDR": {
      "locked": false,
      "value": "10.0.75.0/28"
    },
    "vpnkitCIDR": {
      "locked": false,
      "value": "192.168.65.0/28"
    },
    "useDnsForwarder": {
      "locked": false,
      "value": true
    },
    "dns": {
      "locked": false,
      "value": "8.8.8.8"
    },
    "dockerDaemonOptions": {
      "experimental": {
         "locked": false,
         "value": true
      }
    }
  },

  "windows": {
    "dockerDaemonOptions": {
       "experimental": {
          "locked": false,
          "value": true
       }
    }
  },
  "kubernetes": {
    "enabled": {
      "locked": false,
      "value": false
    },
    "showSystemContainers": {
      "locked": false,
      "value": false
    },
    "podNetworkCIDR": {
      "locked": false,
      "value": null
    },
    "serviceCIDR": {
      "locked": false,
      "value": null
    }
  },

  "sharedDrives": {
    "locked": true,
    "value": [ ]
  },
  "sharedFolders": [  "%USERPROFILE%" ]
}

Parameter values and descriptions for environment configuation on Windows:

Parameter Description
configurationFileVersion Specifies the version of the configuration file format.
engine Specifies the default Docker engine to be used. linux specifies the Linux engine. windows specifies the Windows engine.
analyticsEnabled If value is true, allow Docker Desktop Enterprise to sends diagnostics, crash reports, and usage data. This information helps Docker improve and troubleshoot the application.
exposeDockerAPIOnTCP2375 Exposes Docker API on a specified port. In this example, setting 'locked' to true exposes the Docker API on port 2375. > Warning: This is unauthenticated and should only be enabled if protected by suitable firewall rules.
dockerCliOptions Specifies key-value pairs in the user's %HOME%\\.docker\\config.json file. In the sample code provided, the orchestration for docker stack commands is set to swarm rather than kubernetes.
proxy The http setting specifies the HTTP proxy setting. The https setting specifies the HTTPS proxy setting. The exclude setting specifies a comma-separated list of hosts and domains to bypass the proxy. Warning: This parameter should be locked after being set: locked: "true".
linuxVM Parameters and settings related to the Linux VM - grouped together in this example for convenience.
cpus Specifies the default number of virtual CPUs for the VM. If the physical machine has only 1 core, the default value is set to 1.
memoryMiB Specifies the amount of memory in MiB (1 MiB = 1048576 bytes) allocated for the VM.
swapMiB Specifies the amount of memory in MiB (1 MiB = 1048576 bytes) allocated for the swap file.
dataFolder Specifies the root folder where Docker Desktop should put VM disk files. (
diskSizeMiB Specifies the amount of disk storage in MiB (1 MiB = 1048576 bytes) allocated for images and containers.
hypervCIDR Specifies the subnet used for Hyper-V networking. The chosen subnet must not conflict with other resources on your network.
vpnkitCIDR Specifies the subnet used for VPNKit networking and drive sharing. The chosen subnet must not conflict with other resources on your network.
useDnsForwarder If value is set to true, this automatically determines the upstream DNS servers based on the host's network adapters.
dns If value for useDnsForwarder is set to false, the Linux VM uses the server information in this value setting for DNS resolution.
dockerDaemonOptions Overrides the options in the linux daemon config file. For more information, see the Docker engine reference
(End of linuxVM section.)
windows Parameters and settings related to the Windows daemon-related options - grouped together in this example for convenience.
dockerDaemonOptions Overrides the options in the Windows daemon config file. For more information, see the Docker engine reference
(End of windows section.)
kubernetes Parameters and settings related to kubernetes options - grouped together here for convenience.
enabled If locked is set to true, the k8s cluster starts when Docker Desktop Enterprise is started.
showSystemContainers If true, displays k8s internal containers when running docker commands such as docker ps.
podNetworkCIDR This is currently unimplemented. locked must be set to true.
serviceCIDR This is currently unimplemented. locked must be set to true.
(End of kubernetes section.)
sharedDrives If sharedDrives is set to true, this locks the drives users are allowed to share ( ["C", "D"] ), but does not actually share drives by default (sharing a drive prompts the user for a password). value is a whitelist of drives that can be shared. Warning: Note that when updating this value, if you remove drives that have been shared, you must also net share /delete those drives.
sharedFolders If specified, restrict the folders the user is allowed to share with windows containers
versionPacks Parameters and settings related to version packs - grouped together here for convenience.
allowUserInstall By default, allowUserInstall is set to false, which allows only administrators to install new version packs. If set to true, users can also install new version packs. Warning: Version packs contain code which runs as Administrator.

Where to go next

Troubleshooting

Troubleshooting on Mac

Diagnose problems, send feedback, and submit issues to Docker Support

Creating a diagnostics file in Docker Desktop Enterprise

Select Diagnose and Feedback from the whale menu in the menu bar.

A diagnostics file is created.

Once diagnostics are available, select the Open button to display the list of available diagnostics in Finder.

Diagnostics are provided in .zip files identified by date and time. The uncompressed contents are also visible in the Finder window. Send your diagnostics file to your administrator for assistance.

Creating a diagnostics file from a terminal

On occasion, it is useful to run diagnostics yourself, for instance if Docker Desktop Enterprise cannot start.

To run diagnostics from a terminal, enter the following command :

/Applications/Docker.app/Contents/MacOS/com.docker.diagnose gather

This command displays the information that it is gathering, and when it finishes, it displays information resembling the following example:

Diagnostics Bundle: /tmp/2A989798-1658-4BF0-934D-AC4F148D0782/20190115142942.zip
Diagnostics ID:     2A989798-1658-4BF0-934D-AC4F148D0782/20190115142942

The name of the diagnostics file is displayed next to “Diagnostics Bundle” (/tmp/2A989798-1658-4BF0-934D-AC4F148D0782/20190115142942.zip in this example). This is the file that you attach to the support ticket.

You can view the content of your diagnostics file using the open command and specifying the name of your diagnostics file:

$ open /tmp/2A989798-1658-4BF0-934D-AC4F148D0782/20190115142942.zip
Viewing logs in a terminal

In addition to using the Diagnose and Feedback option to generate a diagnostics file, you can browse Docker Desktop Enterprise logs in a terminal or with the Console app.

To watch the live flow of Docker Desktop Enterprise logs at the command line, run the following command from your favorite shell:

$ pred='process matches ".*(ocker|vpnkit).*"
  || (process in {"taskgated-helper", "launchservicesd", "kernel"} && eventMessage contains[c] "docker")'
$ /usr/bin/log stream --style syslog --level=debug --color=always --predicate "$pred"

Alternatively, to collect the last day of logs (1d) in a file, run:

$ /usr/bin/log show --debug --info --style syslog --last 1d --predicate "$pred" >/tmp/logs.txt
Viewing logs with the Console app

The Console log viewer is located in /Applications/Utilities; you can search for it with Spotlight Search.

In the Console window search bar, type docker and press Enter. Then select ANY to expand the drop-down list next to your 'docker' search entry, and select Process.

Mac Console search for Docker app

You can use the Console app to search logs, filter the results in various ways, and create reports.

Additional Docker Desktop Enterprise troubleshooting topics

You can also find additional information about various troubleshooting topics in the Docker Desktop for Mac community documentation.

[Docker Desktop Enterprise help summary](

Where to go next

Troubleshooting on Windows

Diagnose problems, send feedback, and submit issues to Docker Support

Creating a diagnostics file in Docker Desktop Enterprise

Select Diagnose and Feedback from the whale menu in the system tray. When the Diagnose & Feedback window opens, it starts collecting diagnostics.

A diagnostics file is created.

When the log capture is complete, select You can find diagnostics here. The file explorer window displays the path to the diagnostics .zip file and allows you to view the contents. Diagnostics are provided in .zip files identified by date and time.

Send your diagnostics file to your administrator for assistance.

Creating a diagnostics file from a terminal

On occasion, it is useful to run diagnostics yourself, for instance if Docker Desktop Enterprise cannot start.

To run diagnostics from a terminal, enter the following command from a powershell window:

'C:\Program Files\Docker\Docker\resources\com.docker.diagnose.exe' gather

This command displays the information that it is gathering, and when it finishes, it displays information resembling the following example:

Diagnostics Bundle: C:\Users\djs\AppData\Local\Temp\6CE654F6-7B17-4FC7-AAE0-CC53B73B76A2\20190115163621.zip
Diagnostics ID:     6CE654F6-7B17-4FC7-AAE0-CC53B73B76A2/20190115163621

The name of the diagnostics file is displayed next to “Diagnostics Bundle” (C:\Users\djs\AppData\Local\Temp\6CE654F6-7B17-4FC7-AAE0-CC53B73B76A2\20190115163621.zip in this example). This is the file that you attach to the support ticket.

Additional Docker Desktop Enterprise troubleshooting topics

You can also find additional information about various troubleshooting topics in the Docker Desktop for Windows community documentation.

Where to go next

FAQs

Many Docker Desktop Enterprise FAQs can be answered in the community information at:

Where to go next

Release notes

Here are the main improvements and issues, starting with the current release. The documentation is updated for each release.

For system requirements, download, and installation information, see Installing.

For Docker Enterprise Engine release notes, see Docker 18.09.

Docker Desktop Enterprise Releases of 2019

Docker Desktop Enterprise 2.0.0.4

WARNING: You must upgrade the previously installed Version Packs to the latest revision.

2019-05-16

  • Upgrades

  • Bug fixes and minor changes

    • Fixed a stability issue with the DNS resolver.
    • Fixed a race condition where Kubernetes sometimes failed to start after restarting the application.
    • Fixed a bug that causes Docker Compose to fail when a user logs out after logging in. See docker/compose#6517.
    • Improved the reliability of com.docker.osxfs trace performance profiling command.
    • Docker Desktop now supports large lists of resource DNS records on Mac. See docker/for-mac#2160
    • Users can now run a Docker registry in a container. See docker/for-mac#3611.
    • For Linux containers on Windows (LCOW), one physical computer system running Windows 10 Professional or Windows 10 Enterprise version 1809 or later is required.
    • Added a dialog box during start up when a shared drive fails to mount allowing the user to retry mounting the drive or remove it from the shared drive list.
    • Removed the ability to log in using an email address as a username as it is not supported by the Docker command line.

Docker Desktop Enterprise 2.0.0.3

2019-04-26

WARNING: You must upgrade the previously installed version packs to the latest revision.

Docker Desktop Enterprise 2.0.0.2

2019-04-19

WARNING: You must upgrade the previously installed version packs to the latest revision.

  • New

  • Upgrades

  • Bug fixes and minor changes

    • For security, only administrators can install or upgrade version packs using the dockerdesktop-admin tool.
    • Truncate UDP DNS responses which are over 512 bytes in size.
    • Fixed airgap install of Kubernetes in Enterprise-2.0 version pack.
    • Reset to factory default now resets to admin defaults.
  • Known issues

    • The Docker Template CLI plugin included in this version is an outdated version of the plugin and will fail when scaffolding templates. Note that the Application Designer is not affected by this outdated version of the CLI plugin.

Docker Desktop Enterprise 2.0.0.1

2019-03-01

WARNING: You must upgrade the previously installed version packs to the latest revision.

Windows:

  • Upgrades

    • Docker 18.09.3 in Enterprise 2.1 version pack, fixes CVE-2019-5736
    • Docker 17.06.2-ee-20 in Enterprise 2.0 version pack Enterprise, fixes CVE-2019-5736
  • Bug fixes and minor changes

    • Fixed port 8080 that was used on localhost when starting Kubernetes.
    • Fixed Hub login through the desktop UI not sync with login through docker login command line.
    • Fixed crash in system tray menu when the Hub login fails or Air gap mode.

    Mac:

  • Upgrades

    • Docker 18.09.3 for version pack Enterprise 2.1, fixes CVE-2019-5736
    • Docker 17.06.2-ee-20 for version pack Enterprise 2.0, fixes CVE-2019-5736
  • New features

  • Added ability to list all installed version packs with the admin CLI command dockerdesktop-admin version-pack list.

  • dockerdesktop-admin app uninstall will also remove Docker Desktop user files.

  • Bug fixes and minor changes

    • Fixed port 8080 that was used on localhost when starting Kubernetes.
    • Improved error messaging to suggest running diagnostics / resetting to factory default only when it is appropriate.

Docker Desktop Enterprise 2.0.0.0

2019-01-31

New

  • Version selection: Configurable version packs ensure the local instance of Docker Desktop Enterprise is a precise copy of the production environment where applications are deployed, and developers can switch between versions of Docker and Kubernetes with a single click.

  • Application Designer: Application templates allow you to choose a technology and focus on business logic. Updates can be made with minimal syntax knowledge.

  • Device management: The Docker Desktop Enterprise installer is available as standard MSI (Win) and PKG (Mac) downloads, which allows administrators to script an installation across many developer machines.

  • Administrative control: IT organizations can specify and lock configuration parameters for creation of a standardized development environment, including disabling drive sharing and limiting version pack installations. Developers run commands in the command line without worrying about configuration settings.

Where to go next

Docker command line reference

For complete Docker command line documentation, see Use the Docker command line.

Docker Compose documentation

For complete Docker Compose documenation, see Docker Compose.

Docker Engine documentation

For complete Docker Engine documenation, see Docker Engine.

Back to top