Docker Compose 挂载空卷

3

期望的行为

docker-compose up -d 应该正确挂载卷。

实际的行为

突然之间(两天前它完美地工作了,没有安装任何东西或更新操作系统),卷不再被挂载。没有看到任何错误消息,只有容器日志在抱怨命令找不到文件(因为空的卷覆盖了容器中复制的文件)。

如果我删除 ./service:/home/node/api 卷,那么 Docker 就会使用容器中的文件,一切正常。

信息

  • Docker 版本 18.03.0-ce,构建 0520e24302(Docker 工具箱 / boot2docker / virtualbox 5.2.12)
  • docker-compose 版本 1.20.1,构建 5d8c71b2
  • Windows 7 x64
  • Virtual box 分享文件夹.jpg

已尝试从 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,请在评论中询问。但是,说实话,这一天它就突然出现了,没有对系统进行任何更改,也没有涉及杀毒软件。

1个回答

3

为了以后参考,我最终找到了这个问题“突然”发生的原因。它与命令行和卷的相对路径有关,不支持大写字母。

This

注意相同的路径,但显示方式不同?那是我经验不足的结果。
第一个完美地工作了,虚拟机将工作目录映射到共享卷没有任何问题。我想这与 C:\Users\Fede 有大写字母有关,而第二个路径没有遵守。
因此,执行 cd $HOME 将带我到如下所示的 ~(主目录)路径:

enter image description here

现在终端路径已经正确设置,可以开始正确映射主机卷。 $ 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'

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