为什么Docker会尝试创建我正在安装的文件夹?如果我cd到C:\ Users \ szx \ Projects
docker run --rm -it -v "${PWD}:/src" ubuntu /bin/bash
此命令退出以下错误:
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.
我在Windows 10 Home上使用Docker Toolbox。
答案 0 :(得分:8)
更改Windows密码后出现此错误。我必须进入Docker设置并在“共享驱动器”下执行“重置凭据”,然后重新启动Docker。
答案 1 :(得分:6)
我的麻烦是重新安装到容器中的已安装保险丝的卷(例如sshfs
等)。我并没有帮助保险丝座与容器内的用户拥有相同的所有权。
我认为根本的问题是docker
/ root
的监督过程在设置容器时也需要掌握保险丝座。
最终,它通过allow_other
选项帮助安装了保险丝。请注意,这将打开对任何用户的访问权限。最好使用allow_root
–未经测试,由于其他原因被阻止。
答案 2 :(得分:5)
升级到2.2.0.0(42247)后,我在Docker(Windows)上遇到了此问题。问题出在我在docker命令的参数中提供的文件夹名称中的大小写。
答案 3 :(得分:3)
我也遇到了这个问题。 我曾经运行以下命令与容器共享文件夹
Product.counter_culture_fix_counts
# will automatically fix counts for all counter caches defined on Product
但是它不能再工作了。
我正在使用Windows 10作为主机。 我的泊坞窗最近已升级到“ 19.03.5 build 633a0e”。 我最近确实更改了Windows密码。
我按照说明重新共享了“ C”驱动器,并重新启动了docker甚至重新启动了计算机,但是它不起作用:-(。 突然,我发现文件浏览器中的文件夹为“ C:\ SeleniumPlus ”,因此我运行了
docker run ... -v c:/seleniumplus:/dev/seleniumplus ...
它确实起作用了。因此,当我们在最新的docker (“ 19.03.5 build 633a0e”)中指定Windows共享文件夹时,它区分大小写。
答案 4 :(得分:2)
有确切的错误。就我而言,在切换到目录时,我使用c而不是C。
答案 5 :(得分:2)
对于运行mac / osx并遇到此问题的任何人,我重新启动了docker桌面以解决此问题。
答案 6 :(得分:1)
确保文件夹已与Docker嵌入式VM共享。这与用于桌面安装的各种docker类型不同。相信使用Toolbox,您可以在VirtualBox配置中找到共享文件夹。您还应该注意,这些目录区分大小写。调试的一种方法是尝试:
docker run --rm -it -v "/:/host" ubuntu /bin/bash
并查看文件系统在“ / host”下的外观。
答案 7 :(得分:1)
如果您与一个单独的Windows用户一起共享卷(通常是C :):您需要确保它可以访问您正在使用的文件夹-包括他们的父母,直到您的主目录。
还要确保对共享文件夹禁用了EFS(加密文件系统)。
另请参阅我的答案here。
答案 8 :(得分:0)
你以前用过这个容器了吗?您可以尝试在重新执行命令之前删除所有docker-volume。
docker volume rm `(docker volume ls -qf dangling=true)`
我在本地尝试了您的命令(MacOS),没有任何错误。
答案 9 :(得分:0)
当另一个正在运行的容器已经在使用docker run命令中安装的文件夹时,我遇到了这个错误。请检查是否相同,如果不需要,则停止容器。最好的解决方案是通过使用以下命令来使用音量-
docker卷创建
然后,如果需要由多个容器使用,请挂载此创建的卷。
答案 10 :(得分:0)
对于在基于linux的操作系统中有此问题的任何人,请尝试重新安装docker映像使用的远程文件夹。这在ubuntu中对我有帮助:
sudo mount -a
答案 11 :(得分:0)
我正在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
它对我来说绑定绑定源/usr/share/zoneinfo/UTC
很有用。
答案 12 :(得分:0)
使用docker开发时,我遇到了同样的问题。在将项目文件夹移动到本地后,Docker无法挂载带有亲戚路径列出的文件,而是尝试建立目录。
修剪docker卷/图像/容器无法解决问题。只需重新启动docker-desktop即可完成工作。
答案 13 :(得分:0)
我在 Ubuntu 20.04 LTS 的 CryFS 加密目录中使用 Docker 时遇到了这个问题。同样的情况可能发生在其他类似 UNIX 的操作系统中。
问题是默认情况下,root
无法访问 CryFS 挂载的虚拟目录,但 Docker 以 root
的身份运行。解决方案是通过编辑 FUSE
为 /etc/fuse.conf
挂载的卷启用 root 访问权限:只需注释掉其中的 use_allow_other
设置即可。然后使用命令 cryfs <secretdir> <opendir> -o allow_root
挂载加密目录(其中 <secretdir>
和 <opendir>
分别是加密目录和解密虚拟目录的 FUSE
挂载点)。>
感谢 author of this comment on GitHub 提醒我注意 -o allow_root
选项。
答案 14 :(得分:0)
我在 Windows 10 上运行 docker 桌面(docker 引擎 v20.10.5)并遇到了类似的错误。我继续从 docker-desktop UI 中删除了现有的图像,删除了有问题的文件夹(对我来说,删除文件夹是一个选项,因为我只是在做一些本地测试),删除现有的容器,重新启动 docker 并且它工作了< /p>