Docker尝试mkdir我挂载的文件夹

szx*_*szx 26 docker docker-for-windows

Docker为什么要尝试创建要装载的文件夹?如果我CD到C:\ Users \ szx \ Projects

docker run --rm -it -v "${PWD}:/src" ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)

该命令退出并出现以下错误:

C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: error while creating mount source path '/c/Users/szx/Projects': mkdir /c/Users/szx/Projects: file exists.
Run Code Online (Sandbox Code Playgroud)

我正在Windows 10 Home上使用Docker Toolbox。

Mik*_*ike 33

对于运行 mac/osx 并遇到此问题的任何人,我重新启动了 docker 桌面以解决此问题。

  • @Cody - 因为“关闭并重新打开”可以解决很多问题 (6认同)
  • 2022 年仍然是一个问题,但这对我来说解决了。仅供参考,关闭 Docker 桌面应用程序和实际重新启动它之间是有区别的。重新启动修复了它,但是当我最初退出并重新打开时,这并没有帮助。 (3认同)
  • 你救了我的命! (2认同)
  • windows也是这样,重启docker就解决了! (2认同)

mel*_*ent 31

更改Windows密码后出现此错误。我必须进入Docker设置并在“共享驱动器”下执行“重置凭据”,然后重新启动Docker。


pic*_*rob 20

我的问题是安装保险丝的卷(例如sshfs,等)再次安装到容器中。我没有帮助保险丝底座与容器内的用户拥有相同的所有权。

我认为潜在的问题是docker/root监督过程在设置容器时也需要掌握保险丝安装。

最终它有助于安装带有allow_other选项的保险丝卷。请注意,这会为任何用户打开访问权限。更好的可能是allow_root- 未测试,因为其他原因被阻止。

  • 谢谢。我能够通过使用 `sshfs -o allowed_other` 和编辑 `/etc/fuse.conf` 来解决这个问题 (5认同)
  • “allow_root”选项似乎也能解决问题。 (4认同)

小智 7

我在 Linux 中工作(更准确地说,是 Windows 下的 WSL2),我的问题是我的主机上存在该文件夹的符号链接:

# docker run --rm -it -v /etc/localtime:/etc/localtime ...
docker: Error response from daemon: mkdir /etc/localtime: file exists. 


# ls -al /etc/localtime
lrwxrwxrwx 1 root root 25 May 23  2019 /etc/localtime -> ../usr/share/zoneinfo/UTC 
Run Code Online (Sandbox Code Playgroud)

它对我来说是绑定安装源的/usr/share/zoneinfo/UTC


BMi*_*tch 6

确保文件夹与 docker 嵌入式 VM 共享。这与用于桌面安装的各种类型的 docker 不同。有了toolbox,相信你可以在VirtualBox的配置中找到共享文件夹。您还应该注意这些目录区分大小写。调试的一种方法是尝试:

docker run --rm -it -v "/:/host" ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)

并查看“/host”下的文件系统是什么样的。


Vic*_*r F 6

升级到 2.2.0.0 (42247) 后,我在 Docker (Windows) 上遇到了这个问题。问题在于我在 docker 命令的参数中提供的文件夹名称中的大小写。


Mor*_*nor 5

您以前使用过这个容器吗?您可以尝试在重新执行命令之前删除所有 docker-volumes。

docker volume rm `(docker volume ls -qf dangling=true)`
Run Code Online (Sandbox Code Playgroud)

我在本地(MacOS)尝试了你的命令,没有任何错误。


Ome*_*viv 5

我在 WSL 中遇到了这个问题,可能是由于某些容器存活时间过长造成的。这里的建议都不适合我。最后,根据这篇博客文章,我设法使用以下命令修复它,这些命令完全擦除所有卷以重新开始。

docker-compose down
docker rm -f $(docker ps -a -q)
docker volume rm $(docker volume ls -q)
docker-compose up
Run Code Online (Sandbox Code Playgroud)

然后,我重新启动 WSL ( wsl --shutdown),重新启动docker desktop,并再次尝试我的命令。