Windows Docker mongo 容器不适用于卷挂载

2024-04-02

我有以下 docker 命令

docker run -v //c/data:/data/db mongo

我从 docker / mongo 收到以下错误响应

MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=8706cbf1b78f
db version v3.4.2
git version: 3f76e40c105fc223b3e5aac3e20dcd026b83b38b
OpenSSL version: OpenSSL 1.0.1t  3 May 2016
allocator: tcmalloc
modules: none
build environment:
    distmod: debian81
    distarch: x86_64
    target_arch: x86_64
options: {}
wiredtiger_open config: create,cache_size=478M,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
WiredTiger error (1) [1489982988:687653][1:0x7fec9df0ccc0], connection: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
Assertion: 28595:1: Operation not permitted src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
exception in initAndListen: 28595 1: Operation not permitted, terminating
shutdown: going to close listening sockets...
removing socket file: /tmp/mongodb-27017.sock
shutdown: going to flush diaglog...
now exiting
shutting down with code:100

现在,当我删除卷时,mongo 可以工作,但我需要保留我的数据,因此我需要以某种方式安装该卷,只是不确定此时我做错了什么。

我确实看到文件出现在我的文件夹中,但不确定为什么会收到 100 错误


为了解决这个问题,您可以使用类似的工具rsync在 Mongo 运行时将数据库文件移动到映射目录中。潜在的错误与 Windows 映射卷和容器内的绑定路径之间的延迟有关。将工作卸载到 rsync 可以将延迟与 Mongo 的运行时要求分开。

Example

创建一个基本的Dockerfile像这样:

FROM mongo:latest

RUN apt-get update && \ 
    apt-get install -y \
        rsync

ADD init.sh /init.sh

Where init.sh is:

#!/bin/bash

migrate_db() {
  while true
  do
    rsync -avh /data/db/* /data/mapped-db
    sleep 5
  done
}

migrate_db &

#Execute a command
mongod --smallfiles --logpath=/dev/null --verbose &

#Wait
wait $!

然后,在启动容器时,只需从./init.sh身为你的ENTRYPOINT.

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

Windows Docker mongo 容器不适用于卷挂载 的相关文章

随机推荐

  • 如何让一个 Perl 脚本查看另一个 Perl 脚本中的变量?

    我有一个越来越大的 Perl 脚本 因此我想将其分解为多个脚本 也就是说 我想取出一些大的哈希声明并将它们放入另一个文件中 如何使原始脚本能够查看和使用现在在其他脚本中声明的变量 这让我抓狂 因为我已经有一段时间没有使用 Perl 了 而且
  • 使 XmlReaderSettings CheckCharacters 适用于 xml 字符串

    我有一个来自 Adob e PDF AcroForms 的 xml 字符串 它显然允许命名以数字字符开头的表单字段 我正在尝试将此字符串解析为 XDocument XDocument xDocument XDocument Parse xm
  • 查找字符串中最后一次出现的子字符串,并将其替换

    所以我有一长串相同格式的字符串 我想找到最后一个 每个字符中的一个 并将其替换为 我尝试过使用 rfind 但我似乎无法正确利用它来做到这一点 这应该可以做到 old string this is going to have a full
  • 带有 NSTask 的沙箱

    我启用了沙箱并使用 sbin ping使用 NSTask task setLaunchPath sbin ping task setArguments NSArray arrayWithObjects c10 iPAddress nil 一
  • Qt 颜色选择器小部件?

    我有一个QDialog向用户提供一些选项供其选择的子类 这些选项之一是颜色 我见过QColorDialog https stackoverflow com a 1972272 2062384 我需要一些更简单的东西 这也是一个常规小部件 这
  • 尽管所有测试都通过,但 TeamCity NUnit 构建步骤失败

    我正在设置 TeamCity 来运行一些 NUnit 测试 TeamCity 报告所有测试均已通过 但报告构建失败 并显示错误消息 新构建状态为 NUnit 错误 build status text 深入查看构建日志 我可以看到加载测试中的
  • 带有 AngularJS 指令的类似 Google 的搜索框

    我正在编写一个应用程序 其 UI 方面几乎与 Google 完全相同 我到达登陆页面 我有一个搜索框 提交后会将您引导至结果页面 在这里 您有相同的搜索框和其他指令 您可以在其中切换模式 例如 网络 图像 目前我有 在登陆页面上 带有 ac
  • 循环遍历一个范围以创建嵌套数据树

    我需要创建一个零件号列表 其中显示用于创建第一零件的所有其他子零件 例如部分12345是通过组合构建的abc and def 我有一个顶级部分的列表 以及第二个列表 其中有两列 左侧显示顶级 右侧显示子部分 e g Top Level Pa
  • 如何在 Spring Boot 3 上运行 Swagger 3

    使用带有 Java17 和 Spring Boot 3 0 0 的全新 Spring Initialzr 以及 Springfox Swagger 3 的 pom xml 的额外补充 我一生都无法让 Swagger 页面工作 相反 我得到了
  • UItextView 阿拉伯文文本右对齐

    在 UItextView inputView 上使用我的自定义阿拉伯语键盘 我用阿拉伯语文本填充我的 textView 但无法使书面文本向右对齐 需要帮助将文本向右对齐 BOOL textViewShouldBeginEditing UIT
  • TestFlight Live、QuincyKit 和 Crashlytics 之间的比较

    我将在 AppStore 上启动我的应用程序 我想跟踪崩溃情况并尽快修复它们 如果可能的话 最好还收集一些有关用户活动和其他有用信息的附加信息 为此 我寻找了一些崩溃报告工具 我发现的最有趣的工具是 试飞直播 https testfligh
  • 我的锚链接不会从页面顶部开始

    我不确定发生了什么 我有两个页脚 一个页脚是侧边栏 另一个页脚是页面底部的常规页脚 我底部页脚中的锚标记链接到我的 关于 页面 将我带到页面底部而不是从顶部开始 而侧边栏页脚中的锚标记将我带到页面中间 加载时 其他锚链接也会将我带到页面的中
  • Android 清单文件中的 android:immersive 属性是什么?

    我正在为 Google Glass 开发一个应用程序 但我的活动遇到了问题 当我有 7 到 10 秒没有与他们互动时 他们就结束了 屏幕关闭后 我轻敲玻璃再次唤醒它 我的活动就会消失 我就可以开机了ok glass屏幕 我进行了很多搜索 但
  • NgxMatDatetimePicker 不可分配给 MatDatepickerBase 类型

    今天我使用创建了一个新的 Angular 项目角度 11 0 0 然后我安装了 angular material components datetime picker这是我的 package json 文件中读取的内容的一部分 angula
  • 如何传递对象参数来获取 Web api 中的方法?

    如何将对象参数传递给 get 方法 我搜索了很多 例如如何将参数传递给asp net web api get方法 https stackoverflow com questions 45766147 how to pass paramete
  • Insert 语句中的记录数 (Oracle)

    我想报告 Oracle 插入语句中插入的记录数 我是从语句插入的 因此我可以运行两次选择并进行计数 但我宁愿将其全部保留在一个语句中 有办法吗 在 PL SQL 中执行 INSERTSQL ROWCOUNT给出插入的行数 在 C 中执行 I
  • 使用 Angular 材质按列过滤谓词表

    我想使用谓词过滤器按列过滤我的 mat table 结果 我已经使用了一个简单的过滤器 但它过滤了所有列中的所有数据 我搜索类似的主题 但我不知道如何使用它 我尝试对所有列重复我的代码 但不起作用 请参阅下面的代码
  • 如何在 iPhone 通讯录中搜索特定电话号码?

    我正在开发一个使用 bonjour 连接到另一部 iPhone 的应用程序 它的功能之一是当我连接到其他设备时 它会自动检查我是否有其他人的电话号码 所以我的问题是如何检查我的地址簿中其他设备提供的电话号码 这是从我的地址簿方法之一中提取的
  • 如何以编程方式获取 Linux 中设备/分区的 uuid?

    我对 Linux 编程非常陌生 我的问题是 有没有办法以编程方式读取 Linux 中设备或分区的 UUID 是否有用于用户空间应用程序的 C C API 我发现了一些命令sudo vol id uuid dev sda1 sudo blki
  • Windows Docker mongo 容器不适用于卷挂载

    我有以下 docker 命令 docker run v c data data db mongo 我从 docker mongo 收到以下错误响应 MongoDB starting pid 1 port 27017 dbpath data