Remove enterprise-docs directory

This commit is contained in:
Paige Hargrave 2019-02-04 14:53:35 -05:00
parent 0212c893e5
commit 336dcd66f2
147 changed files with 0 additions and 2692 deletions

View File

@ -1,25 +0,0 @@
---
title: "Docker Desktop Enterprise"
summary: task
visibleto: employees # logged in with any Docker ID that has @docker.com email as primary email for Docker ID
author: paige.hargrave
platform:
- mac
- windows
tags:
- installing # pick from kbase list: https://github.com/docker/kbase/blob/master/README.md#prerequisites
notoc: true
---
Docker Desktop Enterprise documentation for Mac
-----------------------------------------------
- [Install Docker Desktop Enterprise](../install-guide/README.md)
- [Getting started](getting-started/README.md)
- [Environment configuration file (administrators only)](admin-config/README.md)
- [Troubleshooting](troubleshooting/README.md)
- [Frequently asked questions](../faq/faq.md)
- <a href="https://docs.docker.com/engine/" target="_blank">Docker command line reference</a>
- <a href="https://docs.docker.com/compose/" target="_blank">Docker Compose documentation</a>
- <a href="https://docs.docker.com/engine/docker-overview/#container-format" target="_blank">Docker Engine documentation</a>

View File

@ -1,133 +0,0 @@
---
title: "Environment configuration on Mac"
summary: task
visibleto: employees # logged in with any Docker ID that has @docker.com email as primary email for Docker ID
author: paige.hargrave
platform:
- mac
tags:
- installing # pick from kbase list: https://github.com/docker/kbase/blob/master/README.md#prerequisites
---
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:
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 `admin-settings.json` file. If set to `false`, users without elevated access privileges can change this setting from the UI or by directly editing
`admin-settings.json`. If this setting is omitted, the default value is `false'???
- `value`: Specifies the value of the parameter. The default value, contained in the initial `admin-settings.json` file that is installed with Docker Desktop Enterprise, is used when first running Docker Desktop Enterprise and after a reset to factory defaults. If this setting is omitted, the default value is used.
#### Parameters and settings
The following `admin-settings.json` code and table provide the required syntax and descriptions for parameters and values:
```json
{
"configurationFileVersion": 1,
"dockerCliOptions": {
"stackOrchestrator": {
"locked": false,
"value": "swarm"
}
},
"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
},
"diskPath": {
"locked": false,
"value": null
},
"diskSizeMiB": {
"locked": false,
"value": 65536
},
"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 | Description |
| :--------------------------------- | :--------------------------------- |
| `configurationFileVersion` | Specifies the version of the configuration file format. |
| `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. |
| `diskPath` | **Warning:** Do not lock this parameter as it can potentially break the version pack switch. |
| `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](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) |
| (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.) | |

View File

@ -1,532 +0,0 @@
---
title: "Getting started with Docker Desktop Enterprise on Mac"
summary: task
visibleto: employees # logged in with any Docker ID that has @docker.com email as primary email for Docker ID
author: paige.hargrave
platform:
- mac
tags:
- deploy # pick from kbase list: https://github.com/docker/kbase/blob/master/README.md#prerequisites
- management
notoc: true
---
# Getting started with Docker Desktop Enterprise on Mac
## Explore the application
1. Open a command-line terminal and test that your installation works by
running the simple Docker image,
[hello-world](https://hub.docker.com/_/hello-world/){: target="_blank" class="_"}.
```shell
$ 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.
```bash
$ 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](images/hello-world-nginx.png)
> 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`):
```none
$ 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.
```shell
$ docker container ls
$ docker container stop webserver
$ docker container ls -a
$ docker container rm webserver
$ docker image ls
$ docker image rm nginx
```
## Preferences menu
Choose ![whale menu](images/whale-x.png){: .inline} → **Preferences** from the
menu bar and configure the runtime options described below.
![Docker context menu](images/prefs.png)
**Note**: Administrators have the ability to lock some configuration options. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
### General
![Preferences](images/prefs-general.png)
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.
- **Automatically check for updates** notifies you when an update is available.
Click **OK** to accept and install updates (or cancel to keep the current
version). If you disable this option, you can still find out about updates
manually by choosing ![whale menu](images/whale-x.png){: .inline} → **Check
for Updates**.
- **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** &mdash; 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](images/prefs-fileshare.png)
**Note**: Administrators have the ability to lock some configuration options. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
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:
- [Namespaces](https://docs.docker.com/docker-for-mac/osxfs/#namespaces){: target="_blank" class="_"} in the topic on
[osxfs file system sharing](https://docs.docker.com/docker-for-mac/osxfs/){: target="_blank" class="_"}.
- [Volume mounting requires file sharing for any project directories outside of
`/Users`](mactroubleshooting/#volume-mounting-requires-file-sharing-for-any-project-directories-outside-of-users){: target="_blank" class="_"}.
### 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](images/prefs-disk.png)
### Advanced
On the Advanced tab, you can limit resources available to Docker.
![Advanced Preference
settings-advanced](images/prefs-advanced.png)
**Note**: Administrators have the ability to lock some configuration options. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
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](images/prefs-proxies.png)
![macOS Proxy Settings](images/proxy-settings.png)
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](https://docs.docker.com/engine/reference/run/#restart-policies---restart){: target="_blank" class="_"}.
<p id="daemon-experimental-mode" />
### 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](images/prefs-daemon-basic.png)
**Note**: Administrators have the ability to lock some configuration options. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
#### Experimental features
Docker Desktop Enterprise has experimental features enabled
on Docker Engine, as described in [Docker Experimental Features
README](https://github.com/docker/docker-ce/blob/master/components/cli/experimental/README.md){: target="_blank" class="_"}. 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.)
```bash
{% raw %}$ docker version -f {{.Server.Experimental}}{% endraw %}
true
```
#### Insecure registries
You can set up a custom and insecure [registry](https://docs.docker.com/registry/introduction){: target="_blank" class="_"} to store your public or private images (instead of
using [Docker Hub](https://hub.docker.com/){: target="_blank" class="_"} or
[Docker Trusted Registry](https://docs.docker.com/ee/dtr/){: target="_blank" class="_"}. Add URLs for
your insecure registries and registry mirrors on which to host your images.
See also:
- [How do I add custom CA
certificates?](https://docs.docker.com/docker-for-windows/faqs/#how-do-i-add-custom-ca-certificates){: target="_blank" class="_"}
- [How do I add client
certificates](https://docs.docker.com/docker-for-windows/faqs/#how-do-i-add-client-certificates){: target="_blank" class="_"}
#### 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 commandline
reference](https://docs.docker.com/engine/reference/commandline/dockerd){: target="_blank" class="_"}.
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](images/prefs-daemon-adv.png)
### 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. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
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`:
```bash
$ 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](https://docs.docker.com/docker-for-mac/kubernetes/#override-the-default-orchestrator){: target="_blank" class="_"}
and click the **Apply** button.
![Enable Kubernetes](images/prefs-kubernetes.png)
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](images/kubernetes-install-complete.png)
The status of Kubernetes shows in the Docker menu and the context points to
`docker-for-desktop`.
![Docker Menu with Kubernetes](images/kube-context.png)
- 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](https://docs.docker.com/docker-for-mac/kubernetes){: target="_blank" class="_"}.
### Reset
Select ![whale menu](images/whale-x.png){: .inline} -> **Preferences** from the
menu bar, then click **Reset** to reset factory defaults, restart the Docker
daemon, or uninstall.
![Uninstall or reset Docker](images/prefs-reset.png)
Reset settings are:
* **Restart** - Select to restart the Docker daemon.
* **Remove all data** - This option removes/resets all Docker data _without_ a
reset to factory defaults (which would cause you to lose settings).
* **Reset to factory defaults** - Choose this option to reset all options on
Docker Desktop Enterprise to its initial state, the same as when it was first installed.
* **Uninstall** - Choose this option to remove Docker Desktop Enterprise from your
system.
> 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:
>
>```shell
>$ /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.
## 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.](images/app-design-start.png "Application Designer")
The list of available templates is provided:
![You can tab through the available application templates. A description of each template is provided.](images/app-design-choose.png "Available templates for application creation")
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.](images/app-design-custom.png "Customizing your application")
You can then name your application and customize the disk location:
![You can also customize the name and location of your application.](images/app-design-custom2.png "Naming and specifying a location for your application")
When you select **Assemble**, your application is created.
![When you assemble your application, a status screen is displayed.](images/app-design-test.png "Assembling your application")
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.](images/app-design-run.png "Running your 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.
## 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.
```bash
$ 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](macconfig.md#directory-structures-for-certificates){: target="_blank" class="_"}.
> **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](http://container-solutions.com/adding-self-signed-registry-certs-docker-mac/){: target="_blank" class="_"}.
### 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](#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](https://docs.docker.com/engine/security/certificates){: target="_blank" class="_"} 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](https://www.debian-administration.org/article/316/An_introduction_to_bash_completion_part_1){:target="_blank"
class="_"} 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](http://brew.sh/){:target="_blank"
class="_"}:
```bash
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](http://zsh.sourceforge.net/Doc/Release/Completion-System.html){:target="_blank"
class="_"} 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](http://brew.sh/){:target="_blank"
class="_"}:
```bash
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
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 495 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 495 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@ -1,392 +0,0 @@
---
title: "Troubleshooting Mac issues"
summary: task
visibleto: employees # logged in with any Docker ID that has @docker.com email as primary email for Docker ID
author: paige.hargrave
platform:
- mac
tags:
- troubleshooting # pick from kbase list: https://github.com/docker/kbase/blob/master/README.md#prerequisites
---
# Troubleshooting Docker Desktop Enterprise on Mac
Here is information about how to diagnose and troubleshoot problems, send logs
and communicate with the Docker Desktop Enterprise team, use our forums and Knowledge Hub,
browse and log issues on GitHub, and find workarounds for known problems.
## Docker Knowledge Hub
Check out the [Docker Knowledge
Hub](http://success.docker.com/){:target="_blank"
class="_"} for knowledge base articles, FAQs, and
technical support for various subscription levels.
## Diagnose problems, send feedback, and create GitHub issues
### In-app diagnostics
If you encounter problems for which you do not find solutions in this
documentation, on [Docker Desktop for Mac issues on
GitHub](https://github.com/docker/for-mac/issues){:target="_blank"
class="_"}, or the [Docker for Mac
forum](https://forums.docker.com/c/docker-for-mac){:target="_blank"
class="_"}, we can help you troubleshoot
the log data.
Choose ![whale menu](images/mac/whale-x.png){: .inline} → **Diagnose & Feedback**
from the menu bar.
![Diagnose & Feedback](images/mac/diagnose-feedback.png)
Once the diagnostics are available, you can upload them and obtain a
**Diagnostic ID**, which must be provided when communicating with the Docker
team. For more information on our policy regarding personal data you can read
[how is personal data handled in Docker
Desktop](https://docs.docker.com/docker-for-mac/faqs/#how-is-personal-data-handled-in-docker-desktop){:target="_blank"
class="_"}.
![Diagnostics & Feedback with
ID](images/mac/diagnose-feedback-id.png)
If you click **Report an issue**, this opens [Docker Desktop Enterprise issues on
GitHub](https://github.com/docker/for-mac/issues/){:target="_blank"
class="_"} in your web browser in a
"create new issue" template, to be completed before submission. Do not forget to
copy/paste your diagnostic ID.
![issue template](images/mac/issues-template.png)
### Diagnosing from the terminal
On occasions it is useful to run the diagnostics yourself, for instance if
Docker Desktop Enterprise cannot start.
First locate the `com.docker.diagnose` tool. If you installed Docker Desktop Enterprise in
the Applications directory, then it is
`/Applications/Docker.app/Contents/MacOS/com.docker.diagnose`.
Then to create *and upload* diagnostics, run:
```sh
$ /Applications/Docker.app/Contents/MacOS/com.docker.diagnose gather -upload
```
After the diagnostics have finished, you should have the following output,
containing your diagnostics ID:
```sh
Diagnostics Bundle: /tmp/B8CF8400-47B3-4068-ADA4-3BBDCE3985D9/20180726143610.zip
Diagnostics ID: B8CF8400-47B3-4068-ADA4-3BBDCE3985D9/20180726143610 (uploaded)
```
The diagnostics ID (here B8CF8400-47B3-4068-ADA4-3BBDCE3985D9/20180726143610) is
composed of your user ID (D1F48686-F045-4708-85E3-0635B729A596) and a timestamp
(20180525-145051). Be sure to provide us with the full diagnostics ID, not just
the user ID.
Don't hesitate browsing the content of these diagnostics:
```sh
$ open /tmp/D1F48686-F045-4708-85E3-0635B729A596/20180525-145051.zip
```
<a name="logs"></a>
## Check the logs
In addition to using the diagnose and feedback option to submit logs, you can
browse the logs yourself. The following documentation is about macOS 10.12
onwards; for older versions, see [older
documentation](https://docs.docker.com/v17.12/docker-for-mac/troubleshoot/#logs){:target="_blank"
class="_"}.
#### In a terminal
To watch the live flow of Docker Desktop Enterprise logs at the command line, run this from
your favorite shell.
```bash
$ 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:
```
$ show --debug --info --style syslog --last 1d --predicate "$pred" >/tmp/logs.txt
```
#### In the Console app
Macs provide a built-in log viewer, named "Console", which you can use to check
Docker logs.
The Console lives in `/Applications/Utilities`; you can search for it with
Spotlight Search.
To read the Docker app log messages, in the top left corner of the window, type
"docker" and press Enter. Then select the "Any" button that appeared on its
left, and select "Process" instead.
![Mac Console search for Docker app](images/mac/console.png)
You can use the Console Log Query to search logs, filter the results in various
ways, and create reports.
<a name="troubleshoot"></a>
## Troubleshooting topics
### Make sure certificates are set up correctly
Docker Desktop Enterprise ignores certificates listed under insecure registries, and does
not send client certificates to them. Commands like `docker run` that attempt to
pull from the registry produces error messages on the command line, like this:
```
Error response from daemon: Get http://192.168.203.139:5858/v2/: malformed HTTP response "\x15\x03\x01\x00\x02\x02"
```
As well as on the registry. For example:
```
2017/06/20 18:15:30 http: TLS handshake error from 192.168.203.139:52882: tls: client didn't provide a certificate
2017/06/20 18:15:30 http: TLS handshake error from 192.168.203.139:52883: tls: first record does not look like a TLS handshake
```
For more about using client and server side certificates, see [Adding TLS
certificates](macconfig.md#add-tls-certificates){:target="_blank"
class="_"} in the Getting Started topic.
### Docker Desktop Enterprise does not start if Mac user account and home folder are renamed after installing the app
See [Do I need to reinstall Docker Desktop Enterprise if I change the name of my macOS
account?](https://docs.docker.com/docker-for-mac/faqs/#do-i-need-to-reinstall-docker-for-mac-if-i-change-the-name-of-my-macos-account){:target="_blank"
class="_"}
in the FAQs.
### Volume mounting requires file sharing for any project directories outside of `/Users`
If you are using mounted volumes and get runtime errors indicating an
application file is not found, access to a volume mount is denied, or a service
cannot start, such as when using [Docker Compose](https://docs.docker.com/compose/gettingstarted){:target="_blank"
class="_"},
you might need to enable [file sharing](macconfig/#file-sharing){:target="_blank"
class="_"}.
Volume mounting requires shared drives for projects that live outside of the
`/Users` directory. Go to ![whale menu](images/mac/whale-x.png){: .inline} →
**Preferences** → **File sharing** and share the drive that contains the
Dockerfile and volume.
### Incompatible CPU detected
Docker Desktop Enterprise requires a processor (CPU) that supports virtualization and, more
specifically, the [Apple Hypervisor
framework](https://developer.apple.com/library/mac/documentation/DriversKernelHardware/Reference/Hypervisor/){:target="_blank"
class="_"}.
Docker Desktop Enterprise is only compatible with Macs that have a CPU that supports the
Hypervisor framework. Most Macs built in 2010 and later support it, as described
in the Apple Hypervisor Framework documentation about supported hardware:
*Generally, machines with an Intel VT-x feature set that includes Extended Page
Tables (EPT) and Unrestricted Mode are supported.*
To check if your Mac supports the Hypervisor framework, run this command in a
terminal window.
```bash
sysctl kern.hv_support
```
If your Mac supports the Hypervisor Framework, the command prints
`kern.hv_support: 1`.
If not, the command prints `kern.hv_support: 0`.
See also, [Hypervisor Framework
Reference](https://developer.apple.com/library/mac/documentation/DriversKernelHardware/Reference/Hypervisor/){:target="_blank"
class="_"}
in the Apple documentation, and Docker Desktop Enterprise [System Requirements](install.md){:target="_blank"
class="_"}.
### Workarounds for common problems
* If Docker Desktop Enterprise fails to install or start properly:
* Make sure you quit Docker Desktop Enterprise before installing a new version of the
application (![whale menu](images/mac/whale-x.png){: .inline} → **Quit
Docker**). Otherwise, you get an "application in use" error when you try to
copy the new app from the `.dmg` to `/Applications`.
* Restart your Mac to stop / discard any vestige of the daemon running from
the previously installed version.
* Run the uninstall commands from the menu.
* If `docker` commands aren't working properly or as expected, you may need to
unset some environment variables, to make sure you are not using the legacy
Docker Machine environment in your shell or command window. Unset the
`DOCKER_HOST` environment variable and related variables.
* If you use bash, use the following command: `unset ${!DOCKER_*}`
* For other shells, unset each environment variable individually as described
in [Setting up to run Docker Desktop for
Mac](https://docs.docker.com/docker-for-mac/docker-toolbox/#setting-up-to-run-docker-desktop-for-mac){:target="_blank"
class="_"} in [Docker Desktop for Mac
vs. Docker Toolbox](https://docs.docker.com/docker-for-mac/docker-toolbox){:target="_blank"
class="_"}.
* Network connections fail if the macOS Firewall is set to "Block all incoming
connections". You can enable the firewall, but `bootpd` must be allowed
incoming connections so that the VM can get an IP address.
* For the `hello-world-nginx` example, Docker Desktop Enterprise must be running to get to
the webserver on `http://localhost/`. Make sure that the Docker whale is
showing in the menu bar, and that you run the Docker commands in a shell that
is connected to the Docker Desktop Enterprise Engine (not Engine from Toolbox).
Otherwise, you might start the webserver container but get a "web page not
available" error when you go to `localhost`. For more on distinguishing
between the two environments, see [Docker Desktop for Mac vs. Docker
Toolbox](https://docs.docker.com/docker-for-mac/docker-toolbox){:target="_blank"
class="_"}.
<p></p>
* If you see errors like `Bind for 0.0.0.0:8080 failed: port is already
allocated` or `listen tcp:0.0.0.0:8080: bind: address is already in use`:
* These errors are often caused by some other software on the Mac using those
ports.
* Run `lsof -i tcp:8080` to discover the name and pid of the other process and
decide whether to shut the other process down, or to use a different port in
your docker app.
## Known issues
* IPv6 is not (yet) supported on Docker Desktop Enterprise.
A workaround is provided that auto-filters out the IPv6 addresses in DNS
server lists and enables successful network access. For example,
`2001:4860:4860::8888` would become `8.8.8.8`. To learn more, see these
issues on GitHub and Docker Desktop for Mac forums:
* [Network timeout when top two DNS servers in /etc/resolv.conf are IPv6
addresses](https://github.com/docker/for-mac/issues/9){:target="_blank"
class="_"}
* [ERROR: Network timed out while trying to connect to
index.docker.io](https://forums.docker.com/t/error-network-timed-out-while-trying-to-connect-to-index-docker-io/17206){:target="_blank"
class="_"}
<p></p>
* You might encounter errors when using `docker-compose up` with Docker Desktop Enterprise
(`ValueError: Extra Data`). We've identified this is likely related to data
and/or events being passed all at once rather than one by one, so sometimes
the data comes back as 2+ objects concatenated and causes an error.
* Force-ejecting the `.dmg` after running `Docker.app` from it can cause the
whale icon to become unresponsive, Docker tasks to show as not responding in
the Activity Monitor, and for some processes to consume a large amount of CPU
resources. Reboot and restart Docker to resolve these issues.
* Docker does not auto-start on login even when it is enabled in ![whale
menu](images/mac/whale-x.png){: .inline} → **Preferences**. This is related to a
set of issues with Docker helper, registration, and versioning.
<p></p>
* Docker Desktop Enterprise uses the [`HyperKit` hypervisor]
(https://github.com/docker/hyperkit){:target="_blank"
class="_"} in macOS 10.10 Yosemite and higher. If
you are developing with tools that have conflicts with `HyperKit`, such as
[Intel Hardware Accelerated Execution Manager
(HAXM)](https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager/){:target="_blank"
class="_"},
the current workaround is not to run them at the same time. You can pause
`HyperKit` by quitting Docker Desktop Enterprise temporarily while you work with HAXM.
This allows you to continue work with the other tools and prevent `HyperKit`
from interfering.
* If you are working with applications like [Apache
Maven](https://maven.apache.org/){:target="_blank"
class="_"} that expect settings for `DOCKER_HOST` and
`DOCKER_CERT_PATH` environment variables, specify these to connect to Docker
instances through Unix sockets. For example:
```bash
export DOCKER_HOST=unix:///var/run/docker.sock
```
* `docker-compose` 1.7.1 performs DNS unnecessary lookups for
`localunixsocket.local` which can take 5s to timeout on some networks. If
`docker-compose` commands seem very slow but seem to speed up when the network
is disabled, try appending `127.0.0.1 localunixsocket.local` to the file
`/etc/hosts`. Alternatively you could create a plain-text TCP proxy on
localhost:1234 using:
```
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:1234:1234 bobrik/socat TCP-LISTEN:1234,fork UNIX-CONNECT:/var/run/docker.sock
```
and then `export DOCKER_HOST=tcp://localhost:1234`.
<a name="bind-mounted-dirs"></a>
* There are a number of issues with the performance of directories bind-mounted
with `osxfs`. In particular, writes of small blocks, and traversals of large
directories are currently slow. Additionally, containers that perform large
numbers of directory operations, such as repeated scans of large directory
trees, may suffer from poor performance. Applications that behave in this way
include:
- `rake`
- `ember build`
- Symfony
- Magento
- Zend Framework
- PHP applications that use [Composer](https://getcomposer.org){:target="_blank"
class="_"} to install
dependencies in a ```vendor``` folder<br><br>
As a work-around for this behavior, you can put vendor or third-party library
directories in Docker volumes, perform temporary file system operations
outside of `osxfs` mounts, and use third-party tools like Unison or `rsync` to
synchronize between container directories and bind-mounted directories. We are
actively working on `osxfs` performance using a number of different
techniques. To learn more, see the topic on [Performance issues, solutions,
and roadmap](https://docs.docker.com/docker-for-mac/osxfs/#performance-issues-solutions-and-roadmap){:target="_blank"
class="_"}.
* If your system does not have access to an NTP server, then after a hibernate
the time seen by Docker Desktop Enterprise may be considerably out of sync with the host.
Furthermore, the time may slowly drift out of sync during use. To manually
reset the time after hibernation, run:
```bash
docker run --rm --privileged alpine hwclock -s
```
Or, to resolve both issues, you can add the local clock as a low-priority
(high stratum) fallback NTP time source for the host. To do this, edit the
host's `/etc/ntp-restrict.conf` to add:
```
server 127.127.1.1 # LCL, local clock
fudge 127.127.1.1 stratum 12 # increase stratum
```
Then restart the NTP service with:
```bash
sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist
sudo launchctl load /System/Library/LaunchDaemons/org.ntp.ntpd.plist
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 495 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@ -1,24 +0,0 @@
---
title: "Docker Desktop Enterprise"
summary: task
visibleto: employees # logged in with any Docker ID that has @docker.com email as primary email for Docker ID
author: paige.hargrave
platform:
- mac
- windows
tags:
- installing # pick from kbase list: https://github.com/docker/kbase/blob/master/README.md#prerequisites
notoc: true
---
Docker Desktop Enterprise documentation for Windows
---------------------------------------------------
- [Install Docker Desktop Enterprise](../install-guide/install.md)
- [Getting started](getting-started/README.md)
- [Environment configuration file (administrators only)](admin-config/README.md)
- [Troubleshooting](troubleshooting/README.md)
- [Frequently asked questions](../faq/faq.md)
- <a href="https://docs.docker.com/engine/" target="_blank">Docker command line reference</a>
- <a href="https://docs.docker.com/compose/" target="_blank">Docker Compose documentation</a>
- <a href="https://docs.docker.com/engine/docker-overview/#container-format" target="_blank">Docker Engine documentation</a>

View File

@ -1,169 +0,0 @@
---
title: "Post-installation"
summary: task
visibleto: employees # logged in with any Docker ID that has @docker.com email as primary email for Docker ID
author: paige.hargrave
platform:
- windows
tags:
- installing # pick from kbase list: https://github.com/docker/kbase/blob/master/README.md#prerequisites
---
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 `admin-settings.json` file. If set to `false`, users without elevated access privileges can change this setting from the UI or by directly editing
`admin-settings.json`. If this setting is omitted, the default value is `false'???
- `value`: Specifies the value of the parameter. The default value, contained in the initial `admin-settings.json` file that is installed with Docker Desktop Enterprise, is used when first running Docker Desktop Enterprise and after a reset to factory defaults. If this setting is omitted, the default value is used.
#### Parameters and settings
The following `admin-settings.json` code and table provide the required syntax and descriptions for parameters and values:
```json
{
"configurationFileVersion": 1,
"engine": {
"locked": false,
"value": "linux"
},
"exposeDockerAPIOnTCP2375": {
"locked": false,
"value": false
},
"dockerCliOptions": {
"stackOrchestrator": {
"locked": false,
"value": "swarm"
}
},
"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
},
"diskPath": {
"locked": false,
"value": null
},
"diskSizeMiB": {
"locked": false,
"value": 64000000000
},
"hypervCIDR": {
"locked": false,
"value": "192.168.65.0/24"
},
"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": false,
"value": [ "C", "D" ]
}
}
```
| 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. |
| `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. |
| `diskPath` | **Warning:** Do not lock this parameter as it can potentially break the version pack switch. |
| `diskSizeMiB` | Specifies the amount of disk storage in MiB (1 MiB = 1048576 bytes) allocated for images and containers. |
| `hypervCIDR` | Specifies the subnet used for both Hyper-V 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](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) |
| (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](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) |
| (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` | Locks the drives users are allowed to share, 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. |

View File

@ -1,602 +0,0 @@
---
title: "Getting started with Docker Desktop Enterprise on Windows"
summary: task
visibleto: employees # logged in with any Docker ID that has @docker.com email as primary email for Docker ID
author: paige.hargrave
platform:
- windows
tags:
- deploy # pick from kbase list: https://github.com/docker/kbase/blob/master/README.md#prerequisites
- management
---
# Getting started with Docker Desktop Enterprise 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:
```shell
> docker --version
Docker version 18.03.0-ce, build 0520e24
```
3. Pull the [hello-world image](https://hub.docker.com/r/library/hello-world/){: target="_blank" class="_"} from Docker Hub and run a container:
```shell
> 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:
```shell
> docker image ls
```
5. List the `hello-world` _container_ (that exited after displaying "Hello from Docker!"):
```shell
> docker container ls --all
```
6. Explore the Docker help pages by running some help commands:
```shell
> 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](https://hub.docker.com/r/_/ubuntu/){: target="_blank" class="_"} and run an interactive terminal inside the spawned container:
```shell
> 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](https://github.com/docker/for-win/issues/223){: target="_blank" class="_"}.
2. You are in the container. At the root `#` prompt, check the `hostname` of the container:
```shell
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):
```shell
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.
```shell
> 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](https://hub.docker.com/_/nginx/){: target="_blank" class="_"} web server that we name, `webserver`:
```shell
> 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](images/nginx-homepage.png)
7. List only your _running_ containers:
```shell
> 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`:
```shell
> docker container stop webserver
```
9. Remove all three containers by their names -- the latter two names will differ for you:
```shell
> 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, updates, version channels, 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. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
1. Open Docker Desktop Enterprise by right-clicking the Docker icon in the Notifications area (or System tray):
![Showing hidden apps in the taskbar](images/whale-icon-systray-hidden.png)
2. Select **Settings...** to open the Settings dialog:
![Docker Desktop Enterprise popup menu](images/docker-menu-settings.png)
### General
On the **General** tab of the Settings dialog, you can configure when to start and update Docker.
![Settings](images/settings-general.png)
**Note**: Administrators have the ability to lock some configuration options. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
* **Start Docker when you log in** - Automatically start the Docker Desktop Enterprise
application upon Windows system login.
* **Automatically check for updates** - By default, Docker Desktop Enterprise
automatically checks for updates and notifies you when an update is available.
Click **OK** to accept and install updates (or cancel to keep the current
version). You can manually update by choosing **Check for Updates** from the
main Docker menu.
* **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 may also sometimes
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](#switch-between-windows-and-linux-containers).
![Shared drives](images/settings-shared-drives.png)
**Note**: Administrators have the ability to lock some configuration options. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
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
>
* Shared drives are only required for mounting volumes in [Linux containers](#switch-between-windows-and-linux-containers),
not for Windows containers. For Linux containers, you need to share the drive
where the Dockerfile and volume are located. If you get errors such as `file not found`
or `cannot start service` you may need to enable shared drives. See [Volume mounting requires shared drives for Linux containers](windowstroubleshooting.md#volume-mounting-requires-shared-drives-for-linux-containers){: target="_blank" class="_"}.
>
* If possible, avoid volume mounts from the Windows host, and instead mount on
the Linux VM, or use a [data volume](https://docs.docker.com/storage/volumes/){: target="_blank" class="_"}
(named volume) or [data container](https://docs.docker.com/storage/volumes/){: target="_blank" class="_"}.
There are a number of issues with using host-mounted volumes and network paths
for database files. See [Volume mounts from host paths use a nobrl option to override database locking](windowstroubleshooting.md#volume-mounts-from-host-paths-use-a-nobrl-option-to-override-database-locking){: target="_blank" class="_"}.
>
* Docker Desktop Enterprise sets permissions to read/write/execute for users, groups and others [0777 or a+rwx](http://permissions-calculator.org/decode/0777/){: target="_blank" class="_"}.
This is not configurable. See [Permissions errors on data directories for shared volumes](windowstroubleshooting.md#permissions-errors-on-data-directories-for-shared-volumes){: target="_blank" class="_"}.
>
* Ensure the domain user has access to shared drives, as described in [Verify domain user has permissions for shared drives](windowstroubleshooting.md#verify-domain-user-has-permissions-for-shared-drives-volumes){: target="_blank" class="_"}.
>
* You can share local drives with your _containers_ but not with Docker Machine
nodes. See the FAQ, [Can I share local drives and filesystem with my Docker Machine VMs?](https://docs.docker.com/docker-for-windows/faqs/#can-i-share-local-drives-and-filesystem-with-my-docker-machine-vms){: target="_blank" class="_"}.
>
#### 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](images/shared-drive-firewall-blocked.png)
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](http://stackoverflow.com/questions/42203488/settings-to-windows-firewall-to-allow-docker-for-windows-to-share-drive/43904051#43904051){: target="_blank" class="_"}
#### 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](#shared-drives) and available to
containers. Alternatively, you can opt not to share it by selecting **Cancel**.
![Shared drive on demand](images/shared-drive-on-demand.png)
### Advanced
The Linux VM restarts after changing the settings on the **Advanced** tab. This takes a few seconds.
![CPU and Memory settings](images/settings-advanced.png)
**Note**: Administrators have the ability to lock some configuration options. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
* **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](images/settings-network.png)
**Note**: Administrators have the ability to lock some configuration options. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
* **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](windowstroubleshooting.md#networking-issues){: target="_blank" class="_"} 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](images/settings-proxies.png)
**Note**: Administrators have the ability to lock some configuration options. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
When you start a container, your proxy settings propagate into the containers. For example:
```ps
> 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](https://docs.docker.com/engine/reference/run/#restart-policies---restart){: target="_blank" class="_"}.
<p id="daemon-experimental-mode" />
### 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](images/settings-daemon-basic.png)
**Note**: Administrators have the ability to lock some configuration options. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
#### Experimental mode
Docker Desktop Enterprise has the experimental version
of Docker Engine enabled, described in the [Docker Experimental Features README](https://github.com/docker/cli/blob/master/experimental/README.md){: target="_blank" class="_"} 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:
```shell
> 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](https://docs.docker.com/registry/introduction){: target="_blank" class="_"} on the **Basic**
Daemon settings.
Normally, you store public or private images in [Docker Hub](https://hub.docker.com/){: target="_blank" class="_"}
and [Docker Trusted Registry](https://docs.docker.com/ee/dtr/){: target="_blank" class="_"}. Here, you
can use Docker to set up your own [insecure registry](https://docs.docker.com/registry/insecure/){: target="_blank" class="_"}.
Simply add URLs for insecure registries and registry mirrors on which to host your images.
See [How do I add custom CA certificates?](https://docs.docker.com/docker-for-windows/faqs/#how-do-i-add-custom-ca-certificates){: target="_blank" class="_"}
and [How do I add client certificates?](https://docs.docker.com/docker-for-windows/faqs/#how-do-i-add-client-certificates){: target="_blank" class="_"} in the FAQs.
#### Daemon configuration file
The **Advanced** daemon settings provide the original option to directly edit
the JSON configuration file for the [daemon](https://docs.docker.com/engine/reference/commandline/dockerd){: target="_blank" class="_"}.
> Updating these settings requires a reconfiguration and reboot of the Linux VM.
![Docker Daemon](images/settings-daemon-advanced.png)
For a full list of options on the Docker daemon, see [daemon](https://docs.docker.com/engine/reference/commandline/dockerd){: target="_blank" class="_"}, and also sub-topics:
* [Daemon configuration file](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file){: target="_blank" class="_"}
* [Linux configuration file](https://docs.docker.com/engine/reference/commandline/dockerd/#linux-configuration-file){: target="_blank" class="_"}
* [Windows configuration file](https://docs.docker.com/engine/reference/commandline/dockerd/#windows-configuration-file){: target="_blank" class="_"}
### 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](images/settings-kubernetes.png)
**Note**: Administrators have the ability to lock some configuration options. No error message is displayed if you attempt to change the value of a locked configuration option, but the value will remain unchanged.
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`:
```bash
> 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](images/docker-menu-context-switch.png)
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
**Apply and restart** 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](https://docs.docker.com/docker-for-windows/kubernetes){: target="_blank" class="_"}.
### Reset
On the Reset tab, you can restart Docker or reset its configuration.
![Reset](images/settings-reset.png)
* **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
Visit our [Troubleshooting](windowstroubleshooting.md){: target="_blank" class="_"} guide for more details.
Log on to our [Docker Desktop for Windows forum](https://forums.docker.com/c/docker-for-windows){: target="_blank" class="_"} to get help from the community, review current user topics, or join a discussion.
Log on to [Docker Desktop for Windows issues on GitHub](https://github.com/docker/for-win/issues){: target="_blank" class="_"} 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.
## 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.](images/app-design-start.png "Application Designer")
The list of available templates is provided:
![You can tab through the available application templates. A description of each template is provided.](images/app-design-choose.png "Available templates for application creation")
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.](images/app-design-custom.png "Customizing your application")
You can then name your application and customize the disk location:
![You can also customize the name and location of your application.](images/app-design-custom2.png "Naming and specifying a location for your application")
When you select **Assemble**, your application is created.
![When you assemble your application, a status screen is displayed.](images/app-design-test.png "Assembling your application")
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.](images/app-design-run.png "Running your 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.
## 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](images/docker-menu-switch.png)
For more information on Windows containers, refer to this documentation:
- Microsoft documentation on [Windows containers](https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/index){: target="_blank" class="_"}.
- [Build and Run Your First Windows Server Container (Blog Post)](https://blog.docker.com/2016/09/build-your-first-docker-windows-server-container/){: target="_blank" class="_"}
gives a quick tour of how to build and run native Docker Windows containers on Windows 10 and Windows Server 2016 evaluation releases.
- [Getting Started with Windows Containers (Lab)](https://github.com/docker/labs/blob/master/windows/windows-containers/README.md){: target="_blank" class="_"}
shows you how to use the [MusicStore](https://github.com/aspnet/MusicStore/blob/master/README.md){: target="_blank" class="_"}
application with Windows containers. The MusicStore is a standard .NET application and,
[forked here to use containers](https://github.com/friism/MusicStore){: target="_blank" class="_"}, is a good example of a multi-container application.
- To understand how to connect to Windows containers from the local host, see:
[Limitations of Windows containers for `localhost` and published ports](windowstroubleshooting.md#limitations-of-windows-containers-for-localhost-and-published-ports){: target="_blank" class="_"}
> **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:
>
* [General](#general)
* [Proxies](#proxies)
* [Docker daemon](#daemon)
* [Diagnose and Feedback](#diagnose--feedback)
* [Reset](#reset)
>
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?](https://docs.docker.com/docker-for-windows/faqs/#how-do-i-add-custom-ca-certificates){: target="_blank" class="_"}
and [How do I add client certificates?](https://docs.docker.com/docker-for-windows/faqs/#how-do-i-add-client-certificates){: target="_blank" class="_"}
in the FAQs.
## Docker Hub
Select **Sign in /Create Docker ID** from the Docker Desktop Enterprise menu to access your [Docker Hub](https://hub.docker.com/){: target="_blank" class="_"} account. Once logged in, you can access your Docker Hub repositories directly from the Docker Desktop Enterprise menu.
See these [Docker Hub topics](https://docs.docker.com/docker-hub/){: target="_blank" class="_"} to learn more:
* [Organizations and Teams in Docker Hub](https://docs.docker.com/docker-hub/orgs/){: target="_blank" class="_"}
* [Builds and Images](https://docs.docker.com/docker-hub/official_images/){: target="_blank" class="_"}
## Where to go next
* Try out the walkthrough at [Orientation and setup](https://docs.docker.com/get-started/){: target="_blank" class="_"}.
* Dig in deeper with [Docker Labs](https://github.com/docker/labs/){: target="_blank" class="_"} example walkthroughs and source code.
* Refer to the [Docker CLI Reference Guide](https://docs.docker.com/develop/sdk/){: target="_blank" class="_"}.
* Refer to [Troubleshooting Docker Desktop Enterprise on Windows](windowstroubleshooting.md){: target="_blank" class="_"} if you experience problems.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 495 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 495 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Some files were not shown because too many files have changed in this diff Show More