I have this problem。似乎MongoDB v3.4无法安装在32位系统上,因此不能在运行Raspbian的覆盆子上安装。 我试图用Docker运行64位图像(可能吗?)。但是当我试图拉动官方的mongo docker repo时:https://hub.docker.com/_/mongo/。
它表示清单列表条目中没有匹配的linux / arm清单。
我也试过提取自定义rpi-mongodb
图像,但它们都运行了2.4版本的MongoDB ......而我的服务器无法运行此版本
如何在Raspberry Pi上运行MongoDB v3.4?
答案 0 :(得分:1)
由于Raspberry Pi的架构是ARM,因此只有为ARM架构构建的映像才能用于RPI。而这些ARM图像的数量非常少。
唯一的选择是自己建立一个新的形象。问题是我们不能通过常规方式(Dockerfile:FROM another-than-ARM-arch-img
)来实现这一点并在我们的PC的拱形机器上构建。主要技巧是使用CI服务器(例如Travis)来构建您的Dockerfile
(我们必须在构建代理中注册QEMU)。
我已成功为基于OpenMediaVault docker image的RPI构建this tutorial。
创建我们的Dockerfile以为RPI构建ARM映像。
FROM resin/rpi-raspbian # Since resin is providing some useful arm arch images
# Your adapted content from
# MongoDB 3.4 Dockerfile
# ....
按照上述tutorial中的说明创建.travis.yml
。
是从Resin.io构建docker镜像。这个解决方案的一个缺点是我们无法将构建的映像推送到docker hub并将其拉到其他地方。我只是让你doc here因为它会使我的回答如此低落。
答案 1 :(得分:0)
如果可以使用旧版本(2.4.10)...
将此git存储库克隆到本地树莓派上(首先安装git),然后根据网页上的自述文件运行docker构建以创建docker映像,然后根据该映像创建/启动/运行docker容器:< / p>
Git repository for mongodb Dockerfile
一旦构建了映像并从中启动了一个容器,您应该能够直接登录到mongodb容器并与mongo客户端进行交互以发出与数据库对话的命令,例如:
docker exec -i -t yourMongodbContainerName /bin/bash
仅发现问题涉及停止容器,该容器失败。超时后,Docker将杀死该容器(更长的超时时间)。这种“不正常关机”意味着由于mongodb抱怨锁文件处于错误状态,因此无法重新启动容器。您可以在日志中看到它:
docker logs yourMongodbContainerName
可以通过以下方法管理故障:1.确保没有应用程序在此之前访问数据库2.停止mongodb容器,然后3.删除/ data / db /中容器中的锁定文件(通常使用-v映射到docker主机,因为容器是显然是暂时的)。4.重新启动mongodb容器作为重新部署的一部分。
mongodb的版本是2.4.10。我正在通过nodejs和npm的2.2.35客户端驱动程序进行连接,这是我发现起作用的最新版本。