【问题标题】:Mounted volume is empty inside container安装的卷在容器内是空的
【发布时间】:2016-11-29 17:58:18
【问题描述】:

我有一个像这样的docker-compose.yml

db:
  image: mongo:latest
  ports:
    - "27017:27017"
server:
  image: artificial/docker-sails:stable-pm2
  command: sails lift
  volumes:
    - server/:/server
  ports:
    - "1337:1337"
  links:
    - db

server/ 相对于docker-compose.yml 文件的文件夹。但是,当我 docker exec -it CONTAINERID /bin/bash 并检查 /server 时,它是空的。

我做错了什么?

【问题讨论】:

  • 尝试给出完整的绝对路径

标签: docker docker-compose


【解决方案1】:

除了这里的答案,它可能与 Docker Setting 中的驱动器共享有关。在 Windows 上,我发现需要启用驱动器共享。

如果它已经启用并且您最近更改了 PC 的密码,您需要禁用驱动器共享(并单击“应用”)并重新启用它(然后单击“应用”) .在此过程中,系统将提示您输入 PC 的新密码。在此过程之后,再次运行您的 docker 命令(运行或撰写)

【讨论】:

  • 谢谢!这触发了重新输入我的凭据的对话框。现在可以了!
  • 天哪,这终于解决了。我以为我快疯了。如果可以的话,我会给你一个赏金。
  • 在我关闭 VPN 后为我工作
  • 图片的命令:docker run --rm -v c:/Users:/data alpine ls /data.
  • 这对我在 mac 上的 docker 不起作用。即使在明确允许我正在挂载的目录共享文件后,容器中的目录仍然是空的。我最终不得不将文件夹移动到用户的主目录中以使其正常工作(请参阅 Csongor Halmai 的回答)。
【解决方案2】:

尝试使用:

volumes:
  - ./server:/server

而不是 server/ -- 在某些情况下 Docker 不喜欢尾部斜杠。

【讨论】:

  • 这实际上是解决问题的方法,谢谢:)
【解决方案3】:

根据 docker 卷文档,

https://docs.docker.com/engine/tutorials/dockervolumes/#/mount-a-host-directory-as-a-data-volume

主机目录可以是绝对路径或名称值。如果你 提供主机目录的绝对路径,Docker 绑定到 您指定的路径。如果您提供名称,Docker 会创建一个命名卷 用那个名字

【讨论】:

  • 好的补充,当尝试通过使用相对路径将目录挂载到容器中时,这可能会令人困惑docker run -v myDir:/containerdir ...,因为它将默默地创建一个名为的 docker 卷(如答案中所引用) myDir 并绑定它,但它不会使 myDir 的内容在容器中可用。在这种情况下,使用绝对路径有效,例如,docker run --volume $(pwd)/myDir:/containerdir ...
【解决方案4】:

当我想从命令行挂载目录时遇到了类似的问题:

docker run -tid -p 5080:80  -v /d/my_project:/var/www/html/my_project nimmis/apache-php5

容器已成功启动,但挂载目录为空。

原因是挂载的目录必须在用户的主目录下。所以,我在c:\Users\<username> 下创建了一个符号链接,它挂载到我的项目文件夹d:\my_project 并挂载了那个:

 docker run -tid -p 5080:80  -v /c/Users/<username>/my_project/:/var/www/html/my_project nimmis/apache-php5

【讨论】:

    【解决方案5】:

    我不知道其他人是否也犯了同样的错误,但主机目录路径必须从 /home 开始

    所以我的 msitake 是在我的 docker-compose 中我错误地指定了以下内容:

    services:
        myservice:
            build: .
            ports:
                - 8888:8888
            volumes:
              - /Desktop/subfolder/subfolder2:/app/subfolder

    当主机路径应该是 /home 的完整路径时。就像是:

    services:
        myservice:
            build: .
            ports:
                - 8888:8888
            volumes:
              - home/myuser/Desktop/subfolder/subfolder2:/app/subfolder

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      相关资源
      最近更新 更多