在 Raspberry Pi 上 Dockerize MongoDB v3.4?
Dockerize MongoDB v3.4 on Raspberry Pi?
。看来 MongoDB v3.4 不能安装在 32 位系统上所以不能安装在我的树莓派 运行ning Raspbian 上。
我尝试 运行 带有 Docker 的 64 位图像(这可能吗?)。但是当我尝试拉取官方 mongo docker 回购时:https://hub.docker.com/_/mongo/。
它说清单列表条目中没有 linux/arm 的匹配清单。
我也尝试拉自定义 rpi-mongodb
图像,但它们都是 运行 2.4 版本的 MongoDB... 我的服务器不能 运行 这个版本
如何在我的 Raspberry Pi 上 运行 MongoDB v3.4?
由于Raspberry Pi的架构是ARM,所以只有为ARM架构构建的镜像才能在RPI上使用。而且这些 ARM 图像的数量非常少。
唯一的选择就是自己建立一个新的形象。问题是我们不能通过常规方式(Dockerfile:FROM another-than-ARM-arch-img
)在我们 PC 的 arch 机器上构建。主要技巧是使用 CI 服务器(例如 Travis)来构建您的 Dockerfile
(我们必须在构建代理中注册 QEMU)。
我已经成功构建了OpenMediaVault docker image for RPI based on this tutorial。
想法是
- 正在寻找 Dockerfile of MongoDB 3.4 并将其内容调整为我们的 Dockerfile。
创建我们的 Dockerfile 以构建 RPI 的 ARM 映像。
FROM resin/rpi-raspbian # Since resin is providing some useful arm arch images
# Your adapted content from
# MongoDB 3.4 Dockerfile
# ....
创建一个.travis.yml
,如tutorial所述。
- 转到您最喜欢的 CI 服务,然后 link 您的 git 存储库。
- 让 CI 构建,并将图像推送到 docker hub
- 将图像从 docker 集线器拉到您的 RPI。
另一个解决方案
是从Resin.io构建docker个镜像。这个解决方案有一个缺点是我们不能将构建的图像推送到 docker hub 并将其拉到其他地方。我只是让你 doc here 因为它会让我的回答太长。
如果旧版本可以 (2.4.10)...
将此 git 存储库克隆到本地 raspberry pi(首先安装 git),然后 运行 根据网络上的自述文件构建 docker页面以创建 docker 图像,然后从该图像创建/启动/运行 一个 docker 容器:
Git repository for mongodb Dockerfile
构建映像并从中启动容器后,您应该能够直接登录到 mongodb 容器并与 mongo 客户端交互以发出与数据库,例如:
docker exec -i -t yourMongodbContainerName /bin/bash
唯一发现的问题是停止容器,但失败了。 Docker 在超时后终止容器(更长的超时同样处理)。这 'unclean shutdown' 意味着容器的重新启动失败,因为 mongodb 抱怨锁定文件处于错误状态。您可以在日志中看到这一点:
docker logs yourMongodbContainerName
故障可以通过 1. 确保没有应用程序访问数据库之前 2. 停止 mongodb 容器然后 3. 删除位于 /data/db/ 的容器中的锁定文件(通常映射到docker 主机使用 -v 因为容器显然是临时的)最后 4. 重新启动 mongodb 容器作为重新部署的一部分。
mongodb 的版本是 2.4.10。我正在通过 nodejs 连接,来自 npm 的 2.2.35 客户端驱动程序是我发现的最新版本。
它说清单列表条目中没有 linux/arm 的匹配清单。
我也尝试拉自定义 rpi-mongodb
图像,但它们都是 运行 2.4 版本的 MongoDB... 我的服务器不能 运行 这个版本
如何在我的 Raspberry Pi 上 运行 MongoDB v3.4?
由于Raspberry Pi的架构是ARM,所以只有为ARM架构构建的镜像才能在RPI上使用。而且这些 ARM 图像的数量非常少。
唯一的选择就是自己建立一个新的形象。问题是我们不能通过常规方式(Dockerfile:FROM another-than-ARM-arch-img
)在我们 PC 的 arch 机器上构建。主要技巧是使用 CI 服务器(例如 Travis)来构建您的 Dockerfile
(我们必须在构建代理中注册 QEMU)。
我已经成功构建了OpenMediaVault docker image for RPI based on this tutorial。
想法是
- 正在寻找 Dockerfile of MongoDB 3.4 并将其内容调整为我们的 Dockerfile。
创建我们的 Dockerfile 以构建 RPI 的 ARM 映像。
FROM resin/rpi-raspbian # Since resin is providing some useful arm arch images # Your adapted content from # MongoDB 3.4 Dockerfile # ....
创建一个
.travis.yml
,如tutorial所述。- 转到您最喜欢的 CI 服务,然后 link 您的 git 存储库。
- 让 CI 构建,并将图像推送到 docker hub
- 将图像从 docker 集线器拉到您的 RPI。
另一个解决方案
是从Resin.io构建docker个镜像。这个解决方案有一个缺点是我们不能将构建的图像推送到 docker hub 并将其拉到其他地方。我只是让你 doc here 因为它会让我的回答太长。
如果旧版本可以 (2.4.10)...
将此 git 存储库克隆到本地 raspberry pi(首先安装 git),然后 运行 根据网络上的自述文件构建 docker页面以创建 docker 图像,然后从该图像创建/启动/运行 一个 docker 容器:
Git repository for mongodb Dockerfile
构建映像并从中启动容器后,您应该能够直接登录到 mongodb 容器并与 mongo 客户端交互以发出与数据库,例如:
docker exec -i -t yourMongodbContainerName /bin/bash
唯一发现的问题是停止容器,但失败了。 Docker 在超时后终止容器(更长的超时同样处理)。这 'unclean shutdown' 意味着容器的重新启动失败,因为 mongodb 抱怨锁定文件处于错误状态。您可以在日志中看到这一点:
docker logs yourMongodbContainerName
故障可以通过 1. 确保没有应用程序访问数据库之前 2. 停止 mongodb 容器然后 3. 删除位于 /data/db/ 的容器中的锁定文件(通常映射到docker 主机使用 -v 因为容器显然是临时的)最后 4. 重新启动 mongodb 容器作为重新部署的一部分。
mongodb 的版本是 2.4.10。我正在通过 nodejs 连接,来自 npm 的 2.2.35 客户端驱动程序是我发现的最新版本。