【问题标题】:docker failed to mount local volume mount no such file or directorydocker 挂载本地卷失败 mount no such file or directory
【发布时间】:2022-07-25 20:57:51
【问题描述】:

我正在尝试像这样运行我的图像:

version: '3.8'
services:
  gamit:
    image: myimage
    volumes:
      - app:/app
volumes:
  app:
    driver: local
    driver_opts:
      type: none
      device: ./app
      o: bind

起初我的目标是在我的docker-compose.yml 文件附近有一个app 目录,(app 目录)应该从容器内部保留一个app 目录(它已经包含一些重要数据)。我的部署场景假设这个目录最初在主机上是空的,然后跟上容器内部的变化。当我使用docker compose up 运行它时,docker-compose.yml 附近的app 目录仍然是空的。我注意到 /var/lib/docker/volumes/myimage/_data 被创建并填充了来自容器的数据(我从另一个 stackoverflow 问题中假设我的 device: ./app 选项设置了主机目录的位置)。然后我删除了/var/lib/docker/volumes/myimage/ 目录,现在它给我一个错误docker failed to mount local volume mount no such file or directory。 我的总体目标是最初使用空的app 目录运行docker compose up,从容器内部填充它,然后在容器内部进行所有更改。

【问题讨论】:

  • 您通常不应该更改/var/lib/docker 中的任何内容,并且删除那里的卷目录几乎肯定会导致您现在看到的错误。你能改用较短的volumes: ['./app:/app'] bind-mount 语法吗?
  • 这是题外话吗?您可以在 serverfault.com 上询问
  • @DavidMaze 已尝试使用较短的 volumes: ['./app:/app'] 绑定挂载语法运行。它在我的docker-compose.yml 文件附近创建了一个空的app 目录,并且容器内的app 目录变为空。我的目标是让这个目录包含来自容器内部的数据。

标签: docker docker-compose


【解决方案1】:

在 ubuntu 20.04 中,Docker 版本 20.10.17 和 Docker compose 版本 v2.6.0

我尝试使用:${PWD}/app 而不是 ./app。像这样:

version: '3.8'
services:
  gamit:
    image: myimage
    volumes:
      - app:/app
volumes:
  app:
    driver: local
    driver_opts:
      type: none
      device: ${PWD}/app
      o: bind

它对我来说很好用。正如我所知道的本地卷在 Docker 中,您需要有一个绝对路径来安装。 ${PWD} 环境变量显示项目的当前路径。但有时 ${PWD} 在某些版本的 Docker 或某些版本的 Docker Compose 中不能正常工作!

https://docs.docker.com/engine/install/linux-postinstall/有合适的信息

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 2016-11-01
    相关资源
    最近更新 更多