Docker Compose 构建失败 - 文件共享已取消

113

我在Docker Desktop遇到了问题,目前正在Stackoverflow上以用户身份运行edge版本。在此之前,我遇到了“驱动器共享原因未知错误”问题,通过安装edge版本“解决”了该问题:Docker for Windows: Drive sharing failed for an unknown reason

现在,由于这个新版本的安装,我得到了一个新的错误,导致某些containers无法构建。这些容器都已经在其他几个系统上测试过并且工作正常。目前有4个容器中的3个无法构建,它们都产生了以下相同的错误:

ERROR: for db  Cannot create container for service db: status code not OK but 500: {"Message":"Unhandled exception: Filesharing has been cancelled"}
Encountered errors while bringing up the project.

完整错误信息:

Creating imt2291-part2_www_1 ...
Creating imt2291-part2_phpmyadmin_1 ... done
Creating imt2291-part2_db_1         ...
Creating imt2291-part2_test_1       ... error
Creating imt2291-part2_www_1        ... error
ERROR: for imt2291-part2_test_1  Cannot create container for service test: status code not OK but 500: {"Message":"Unhandled exception: Filesharing has been cancelled"}

ERROR: for imt2291-part2_www_1  Cannot create container for service www: status Creating imt2291-part2_db_1         ... error
lled"}

ERROR: for imt2291-part2_db_1  Cannot create container for service db: status code not OK but 500: {"Message":"Unhandled exception: Filesharing has been cancelled"}

ERROR: for test  Cannot create container for service test: status code not OK but 500: {"Message":"Unhandled exception: Filesharing has been cancelled"}

ERROR: for www  Cannot create container for service www: status code not OK but 500: {"Message":"Unhandled exception: Filesharing has been cancelled"}

ERROR: for db  Cannot create container for service db: status code not OK but 500: {"Message":"Unhandled exception: Filesharing has been cancelled"}
Encountered errors while bringing up the project.

有人遇到过这个问题并找到解决方法吗?


Docker 版本 2.2.2.0 (43066) edge 引擎 19.03.5 Compose 1.25.4 Windows 10 - infroz
5个回答

214

您需要更新Docker for Windows应用程序中的文件共享配置(2.2.0.0版本采用了更严格的默认安全硬化措施)。添加所有需要的文件夹,然后重新启动Docker for Windows。

示例


是的,可以使用RDC或VNC。设置存储在磁盘上@ C:\ Users <username> \ AppData \ Roaming \ Docker \ settings.xml-因此,如果您小心,可能可以通过文件共享来更改它们,但您可能仍然需要重新启动Docker Windows。 - antonyh
1
我也是一个Docker的初学者,遇到了同样的问题。在我的情况下,这是由Microsoft提供的ASP.NET MVC Core应用程序模板。我不知道哪些文件夹需要共享。我通过添加c:\和d:\来强制运行应用程序。经过一些尝试,我发现项目文件夹需要共享,以及c:\users<my user>。因为有很多文件夹,显然c:\users<my user>.docker是不够的,所以我无法进一步缩小范围。 - robsosno
未在网络驱动器上工作 - 复制到本地驱动器上后就可以了。 - Yoav R.

62

将 "文件共享" 改为 C 盘后,我的 Windows 机器开始正常工作了。我正在使用 Docker Desktop 2.3.0.3。

在此输入图片描述


8
以某种方式绑定确切的目录似乎没有奏效,但挂载整个 C:\ 驱动器成功了。很奇怪。 - Sanidhya Singh
将项目目录添加进去对我来说起了作用。 - Khuram Niaz
我认为这是不安全的,但它确实解决了我的问题。Docker 的加固需要允许绑定整个 C:\ 驱动器进行文件共享,这似乎有点可怕。有人知道如何避免这样做吗? - Veridian Dynamics
3
Rajoanula Alam,您不需要将整个C文件夹添加到共享文件夹中,只需将包含Dockerfile的父项目添加到共享文件即可。您可以通过单击“+”按钮来添加许多文件夹。 - velocity
1
尝试共享特定文件夹,路径中没有空格(以防万一这也是问题),但没有成功。只有添加C:\才有效。 - Andrei Sinitson

3
我正在使用Windows 10上的Docker,并遇到了同样的问题。 Oleg Nenashev和Rejoanul Alam建议的解决方法帮助了我。 将项目目录或C:/添加到Docker共享文件夹中可解决该问题。 入门的步骤6如下所述:

共享文件夹、卷和绑定挂载
如果您的项目不在用户目录之外(cd ~),则需要共享Dockerfile和所使用的卷的驱动器或位置。
如果您遇到运行时错误,指示找不到应用程序文件,拒绝卷挂载或服务无法启动,请尝试启用文件或驱动器共享。
对于生活在C:\ Users(Windows)或/ Users(Mac)之外的项目,卷装载需要共享驱动器,并且对于使用Linux容器的Docker桌面上的任何项目都是必需的。
有关更多信息,请参见Docker for Mac上的文件共享以及管理容器中数据的一般示例。
如果您在旧版Windows操作系统上使用Oracle VirtualBox,则可能会遇到共享文件夹问题,如VB故障单中所述。新的Windows系统符合Docker Desktop for Windows的要求,不需要VirtualBox。


1
我遇到了这个问题,我的环境是Windows。当问题发生时,我将文件共享路径更改为C:,而我的项目路径在G:中,因此命令docker-compose up失败,消息是: docker:守护进程的错误响应:状态代码不正确,但500 {"Message":"Unhandled exception: Filesharing has been cancelled"} 我认为文件共享必须包括您的项目路径。因为当我将我的文件共享路径设置为其他文件路径时,它不起作用,然而,当我将其更改为我的项目路径所在的路径时,docker-compose up成功!

在完成某事之后,我有机会将文件共享到C:从我的项目路径G:。然后,按照顺序重新启动并执行docker-compose down和docker-compose up命令,这些命令也成功运行! - catpanda

0

我遇到了同样的错误,Oleg Nenashev和Rejoanul Alam的答案帮助我解决了这个问题。

我的任务是在容器之间共享卷。

我有一个包含文件index.html的网站文件夹: enter image description here

打开Docker桌面设置,并在文件共享中写入您正在使用的文件夹的地址:enter image description here

之后,在命令提示符中打开此文件夹并添加必要的Docker命令: enter image description here

如果命令正确,并且您仔细执行了所有步骤,它必须正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接