Docker 组成挂载空卷

Docker compose mounting empty volumes

预期行为

docker-compose up -d 应该正确安装卷

实际行为

突然(两天前它运行良好,既没有安装任何东西也没有更新 OS),卷不再被挂载。看不到任何错误消息,只有容器日志抱怨该命令找不到文件(因为 "empty" 卷覆盖了容器的复制文件)。

如果我删除 ./service:/home/node/api 卷,然后 docker 使用容器中的文件,一切正常。

信息

已经尝试从 virtualbox 中删除 docker 机器并重新创建它,修剪所有卷/图像和容器。甚至重新安装 Docker 工具箱,但问题仍然存在。

一切都是 运行 具有管理员权限。

更多信息

docker-compose config 输出

services:
  api:
    build:
      context: C:\users\fede\documents\test\service
    container_name: api
    ports:
    - 3000:3000/tcp
    volumes:
    - /c/users/fede/documents/test/service:/home/node/api:rw
version: '3.0'

$ docker inspect api 输出:https://pastebin.com/1zQ3vjFi

文件

为了加快调试速度,我简化了一个示例应用程序,您可以在此处查看:https://github.com/Frondor/simple-node-app

我是 docker 的新手,但如果我可以提供其他东西以便再次在本地开始使用 docker,请在评论中提问。但老实说,这种情况每天都在发生,而无需对系统进行任何更改。不涉及反病毒。

为了将来参考,我终于找到了开始发生这种情况的原因 "suddenly"。它与不支持大写字母的卷的命令行和相对路径有关。

注意相同的路径,但显示不同?那是我经验不足的产物。

第一个完美运行,VM 将工作目录映射到共享卷没有任何问题。我想这与 C:\Users\Fede 有大写字母有关,第二条路径不支持。

这样做 cd $HOME 会将我带到 ~(主页)路径,如下所示:

现在终端路径设置正确,开始正确映射主机卷。

$ docker-compose config

services:
  api:
    build:
      context: C:\Users\Fede\documents\test\service
    container_name: api
    ports:
    - 3000:3000/tcp
    volumes:
    - /c/Users/Fede/documents/test/service:/home/node/api:rw
version: '3.0'