具有目标 Windows 本地文件夹的 Docker 命名卷

2024-03-15

在 docker-compose 文件中,我想创建一个命名卷,该卷将以本地驱动器为目标进行测试。对于生产,我们将使用 NFS。

我创建了如下撰写文件,

version: '3.3'
services:

  test:
    build: .
    volumes:
      - type: volume
        source: data_volume
        target: /data
    networks:
      - network

volumes:
  data_volume:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: c:/data

networks:
  network:
    driver: overlay
    attachable: true

当我运行 docker-compose up 时,出现以下错误:

for test_test_1  Cannot create container for service test: failed to mount local volume: 
mount c:/data:/var/lib/docker/volumes/test_data_volume/_data, flags: 0x1000: no such file 
or directory

即使出现错误,它仍然会创建命名卷。所以当我检查它时,

{
    "CreatedAt": "2019-10-07T09:10:14Z",
    "Driver": "local",
    "Labels": {
        "com.docker.compose.project": "test",
        "com.docker.compose.version": "1.24.1",
        "com.docker.compose.volume": "data_volume"
    },
    "Mountpoint": "/var/lib/docker/volumes/test_data_volume/_data",
    "Name": "test_data_volume",
    "Options": {
        "device": "c:/data",
        "o": "bind",
        "type": "none"
    },
    "Scope": "local"
}

我仍然不确定为什么 Mountpoint 会瞄准该位置。 我知道我可以在没有命名卷的情况下实现这一目标(我已经做到了),但对于项目的未来,我们肯定需要命名卷。

有什么建议如何实现这一目标吗?


同样在这里。使用 Docker Desktop for Windows,我尝试挂载本地路径E:\Project\MyWebsite\code到指定卷但失败。这是我解决这个问题的方法。

首先,我将路径更改为“.”:

volumes:
    website:
        driver: local
        driver_opts:
            type: none
            device: "."
            o: bind

这次docker-compose up运行成功,因此我登录到 shell 并检查了挂载的目录:

bash-5.0# ls -l
total 62
lrwxrwxrwx    1 root     root            11 Oct  1 15:15 E -> /host_mnt/e
drwxr-xr-x    2 root     root         14336 Sep 11 15:27 bin
drwxr-xr-x    4 root     root          2048 Apr 19  2017 dev
lrwxrwxrwx    1 root     root            11 Oct  1 15:15 e -> /host_mnt/e
drwxr-xr-x    1 root     root           180 Sep 30 11:53 etc
drwxr-xr-x    2 root     root          2048 Sep 11 15:27 home
drw-r--r--    4 root     root            80 Oct  8 22:52 host_mnt
drwxr-xr-x    1 root     root            60 Sep 30 11:53 lib
drwxr-xr-x    5 root     root          2048 Sep 11 15:27 media
...
drwxrwxrwt    1 root     root            40 Oct 11 19:37 tmp
drwxr-xr-x    1 root     root            80 Sep 11 15:27 usr
drwxr-xr-x   13 root     root          2048 Sep 11 15:27 var

显然不是 Windows 卷,可能是 Docker 创建的一些 Linux VM。但路径/host_mnt/e and /host_mnt/E似乎有指示性,所以我尝试改变docker-compose定义为:

volumes:
    website:
        driver: local
        driver_opts:
            type: none
            device: "/host_mnt/e/Project/MyWebsite/code"
            o: bind

它成功了!看起来命名卷的工作方式与 Windows 的顺序方式不同。

This /host_mnt/e除非您之前授予了对该驱动器号的访问权限,否则该驱动器号可能不会存在。但这对您来说不应该是问题,因为您已经尝试了安装有效的本地驱动器的常规方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有目标 Windows 本地文件夹的 Docker 命名卷 的相关文章

随机推荐

  • 使用 pd.read_clipboard 复制多索引数据帧?

    Given a 像这样的数据框 https stackoverflow com questions 17921010 how to query multiindex index columns values in pandas C A B
  • Swift Codable:使用未知键解码字典

    Codable当您了解 JSON 数据的关键格式时 这会非常有用 但是如果您不知道密钥怎么办 我目前面临这个问题 通常我希望 JSON 数据像这样返回 id lt 123 gt data id
  • 如何用颜色填充位图对象中的封闭区域

    给区域内的点赋予颜色来填充区域 类似于油漆桶功能中的 绘图 这 NET Framework 中 没有直接的等效项 但我希望使用 C 来做到这一点 是否可以 这是一个非常简单的洪水填充算法 应该可以帮助您入门 void Form1 Paint
  • 在不知道父元素的情况下访问多维数组元素

    我有返回以下多维数组的函数 我无法控制数组的形成方式 我正在尝试访问 结果 元素 这个问题是 父元素的名称不断变化 Result 元素的位置始终相同 因为名称为 Result 是否可以在不知道父元素名称的情况下访问该元素 Array sHe
  • UITableViewCell 异步加载图像问题 - Swift

    在我的应用程序中 我构建了自己的异步图像加载类 我传入一个对象 然后它检查缓存 NSCache 是否有图像 如果没有 它将检查文件系统是否已保存图像 如果图像尚未保存 它将在后台下载图像 NSOperations 帮助 到目前为止 效果很好
  • 带和不带 ( ) 的构造函数调用之间的区别

    我是 C 初学者 想了解为什么 return std list
  • Netbeans 7.1 和 python

    我曾经使用 Netbeans 6 9 进行 Python 开发 以及 Java 和 PHP 我有一个很酷的 PHP 调试器 带有 xDebug 还有良好的 Python 支持 没有任何抱怨 我搬到另一台计算机下载了最新的 netbeans
  • 相当于“Dim As String * 1”VB6 到 VB.NET

    我有一些VB6代码需要迁移到VB NET 我想询问一下这行代码 看看是否有办法在 NET中实现它 Dim strChar1 As String 1 智能感知不断告诉我声明即将结束 这就是所谓的 固定长度 字符串 VB NET 中没有完全等效
  • Java中通过Proxy发送SOAP消息

    我需要知道如何设置代理并确认它正在工作 我制作了一个如下所示的测试程序 您可以在其中指定代理地址和端口号 我在以下位置找到了地址和端口 http www freeproxylists net http www freeproxylists
  • MongoDB:查找字段名称以以下开头的对象

    查询 MongoDB 从给定的集合 参见下面的示例 中 我只需要列出包含字段的对象 其中字段名称以 need 开头 包含三个对象的集合示例 1 id 1 need some A need more 1 website id 12345678
  • 从网络加载(并显示).XIB

    我希望能够下载 通过 NSURLConnection 请求 XIB 文件 并将其呈现在视图中 我已经实现了 NSURLConnection 当然 当连接完成时 我留下了一个代表 XIB 文件的 XML 数据的 NSString 示例 只是许
  • Gradle:未指定资源类型(在“text”处,值为“@{user.name}”)。数据绑定不起作用

    我试图将适当的数据绑定功能添加到我的项目中 但由于某种原因它仍然失败 build gradle文件看起来像这样 apply plugin com android application buildscript repositories ma
  • Java 变量如何与其自身不同?

    我想知道这个问题是否可以用 Java 解决 我是该语言的新手 这是代码 class Condition you can change in the main public static void main String args int x
  • Java Swing 更新 JList

    我想知道是否有任何方法可以在用户添加或删除项目后以及用户对其进行排序后更新 Jlist 有什么方法可以编写标准化方法来根据数组或向量中的项目顺序以及当用户从 JList 所基于的数组中删除或添加对象时更新显示 谢谢 应该更新 ListMod
  • 异常处理实践顶层与每个函数

    我见过几种异常处理方法 我见过的两种最常见的模式是 在每个函数上尝试捕获 记录异常并重新抛出 在最顶层尝试捕获 如主函数 记录异常并重新抛出 如果有的话 哪一种是更好的做法 或者在什么情况下您会选择一种方法而不是另一种 这取决于您的应用程序
  • 当使用 fork() 时,getline() 会重复读取文件

    我正在开发一个简单的 shell 程序 一个命令行解释器 我想从文件中逐行读取输入 所以我使用了 getline 函数 第一次 程序工作正常 但是 当它到达文件末尾时 它没有终止 而是开始从头开始读取文件 并且无限运行 下面是 main 函
  • Python 和 sqlite3 - 导入和导出数据库

    我正在尝试编写一个脚本来导入数据库文件 我编写了导出文件的脚本 如下所示 import sqlite3 con sqlite3 connect sqlite db with open dump sql w as f for line in
  • Git:如何防止提交仅为调试目的而修改的文件?

    很多时候 我喜欢修改一些代码行以使调试更容易 但实际上我并不想提交它们 例如 我将通过注释掉某些代码行来禁用一些烦人的功能 例如广告 或者我将日志级别和过滤器设置为仅我关心的级别 或者我将强制条件为 true这样我想要运行的代码块实际上一直
  • Android 在 AlertDialog 中等待用户输入以继续

    我看到这里讨论了这个主题 但似乎不明白如何继续 In my onCreate我有代码检查它是否是应用程序的第一次运行firstRun getPref getBoolean firstRun true 如果是第一次运行该应用程序 则会显示一个
  • 具有目标 Windows 本地文件夹的 Docker 命名卷

    在 docker compose 文件中 我想创建一个命名卷 该卷将以本地驱动器为目标进行测试 对于生产 我们将使用 NFS 我创建了如下撰写文件 version 3 3 services test build volumes type v