For a temporary workaround, uninstall the anti-virus software, or
add Docker to the exclusions/exceptions in your antivirus software.
### Permissions errors on data directories for shared volumes
#### Cause
When sharing files from Windows, Docker Desktop sets permissions on [shared volumes](/manuals/desktop/settings-and-maintenance/settings.md#file-sharing)
to a default value of [0777](https://chmodcommand.com/chmod-0777/)
(`read`, `write`, `execute` permissions for `user` and for `group`).
The default permissions on shared volumes are not configurable.
#### Solution
If you are
working with applications that require different permissions, either:
- Use non-host-mounted volumes
- Find a way to make the applications work with the default file permissions
### Unexpected syntax errors, use Unix style line endings for files in containers
#### Cause
Docker containers expect Unix-style line `\n` endings, not Windows style: `\r\n`. This includes files referenced at the command line for builds and in RUN commands in Docker files.
Keep this in mind when authoring files such as shell scripts using Windows
tools, where the default is likely to be Windows style line endings. These
commands ultimately get passed to Unix commands inside a Unix based container
(for example, a shell script passed to `/bin/sh`). If Windows style line endings
are used, `docker run` fails with syntax errors.
#### Solution
- Convert files to Unix-style line endings using:
```console
$ dos2unix script.sh
```
- In VS Code, set line endings to `LF` (Unix) instead of `CRLF` (Windows).
### Path conversion errors on Windows
#### Cause
Unlike Linux, Windows requires explicit path conversion for volume mounting.
On Linux, the system takes care of mounting a path to another path. For example, when you run the following command on Linux:
```console
$ docker run --rm -ti -v /home/user/work:/work alpine
```
It adds a `/work` directory to the target container to mirror the specified path.
#### Solution
Update the source path. For example, if you are using
the legacy Windows shell (`cmd.exe`), you can use the following command:
```console
$ docker run --rm -ti -v C:\Users\user\work:/work alpine
```
This starts the container and ensures the volume becomes usable. This is possible because Docker Desktop detects
the Windows-style path and provides the appropriate conversion to mount the directory.
Docker Desktop also allows you to use Unix-style path to the appropriate format. For example:
```console
$ docker run --rm -ti -v /c/Users/user/work:/work alpine ls /work
```
### Docker commands failing in Git Bash
#### Error message
```console
$ docker run --rm -ti -v C:\Users\user\work:/work alpine
docker: Error response from daemon: mkdir C:UsersUserwork: Access is denied.
```
```console
$ docker run --rm -ti -v $(pwd):/work alpine
docker: Error response from daemon: OCI runtime create failed: invalid mount {Destination:\Program Files\Git\work Type:bind Source:/run/desktop/mnt/host/c/Users/user/work;C Options:[rbind rprivate]}: mount destination \Program Files\Git\work not absolute: unknown.
```
#### Cause
Git Bash (or MSYS) provides a Unix-like environment on Windows. These tools apply their own
preprocessing on the command line.
This affects `$(pwd)`, colon-separated paths, and tilde (`~`)
Also, the `\` character has a special meaning in Git Bash.
#### Solution
- Disable Git Bash path conversion temporarily. For example, run the command with MSYS path conversion disable:
```console
$ MSYS_NO_PATHCONV=1 docker run --rm -ti -v $(pwd):/work alpine
```
- Use proper path formatting:
- Use double forward and backslashes (`\\` `//`) instead of single (`\` `/`).
- If referencing `$(pwd)`, add an extra `/`:
Portability of the scripts is not affected as Linux treats multiple `/` as a single entry.
### Docker Desktop fails due to Virtualization not working
#### Error message
A typical error message is "Docker Desktop - Unexpected WSL error" mentioning the error code