在Raspberry Pi上Dockerize MongoDB v3.4?

时间:2018-02-01 17:39:51

标签: node.js mongodb docker raspberry-pi docker-image

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?

2 个答案:

答案 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

这个想法是

  1. 寻找Dockerfile of MongoDB 3.4并将其内容改编为我们的Dockerfile。
  2. 创建我们的Dockerfile以为RPI构建ARM映像。

    FROM resin/rpi-raspbian # Since resin is providing some useful arm arch images
    
    # Your adapted content from 
    # MongoDB 3.4 Dockerfile
    # ....
    
  3. 按照上述tutorial中的说明创建.travis.yml

  4. 转到您最喜欢的CI服务并将您的git repo链接到它。
  5. 让CI Build,并将图像推送到docker hub
  6. 将图片从泊坞窗集线器拉到RPI。
  7. 另一种解决方案

    是从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客户端驱动程序进行连接,这是我发现起作用的最新版本。