ArangoDB 官方 Docker 镜像部署实战:实例启动、认证配置、资源限制与数据持久化

发布时间:2026/10/13 1:57:13
ArangoDB 官方 Docker 镜像部署实战:实例启动、认证配置、资源限制与数据持久化
文档【免费下载链接】docsDocumentation for Docker Official Images in docker-library项目地址https://gitcode.com/gh_mirrors/docs/docs点击查看免费下载导读本文以 docker-library 官方文档仓库中的 arangodb/content.md 为骨架系统讲解如何基于官方 Docker 镜像部署 ArangoDB 图数据库。读完你可以独立完成以下实战任务用一条docker run命令启动单机实例、通过环境变量完成语言初始化与三种认证方式的选择、向容器追加arangod/arangosh命令行参数、借助两个ARANGODB_OVERRIDE_*变量限制内存与 CPU 占用以及通过卷挂载、数据容器和initdb.d初始化脚本实现数据的持久化与自动化初始化。ArangoDB 是什么ArangoDB 是一个可扩展的图数据库系统其核心价值在于让开发者更快地从互联数据中挖掘价值原生图Native Graph、集成的搜索引擎和 JSON 文档支持通过单一查询语言AQL统一访问。它可以在多种环境运行本地On-prem、云端以及作为托管云服务ArangoGraph Insights Platform使用。官方 Docker 镜像文档对 ArangoDB 的三大关键特性做了精炼概括原生图Native Graph同时存储数据与数据间的关系即使涉及多层 join 也能获得更快的查询性能并能挖掘出传统关系型数据库和文档数据库难以实现的深层洞察。文档存储Document Store图中的每个节点都是一个 JSON 文档灵活、可扩展可以轻松地从已有文档数据库导入。ArangoSearch原生集成的跨平台索引、全文检索与排序引擎面向信息检索场景设计针对速度和内存占用做了优化。在继续部署之前可以先通过 arangodb/README.md 了解当前镜像的版本与架构信息目前官方发布的标签为3.12、3.12.12与latest支持的处理器架构为amd64与arm64v8这一信息与下文--platform linux/arm64/v8的用法直接对应。快速启动一个 ArangoDB 实例基础启动命令启动一个 ArangoDB 实例只需要一条命令docker run -d -p 8529:8529 -e ARANGO_RANDOM_ROOT_PASSWORD1 --name arangodb-instance arangodb各参数的含义如下-d以后台进程方式创建并启动容器命令执行后会打印该进程的标识符容器 ID。-p 8529:8529将容器的8529端口映射到宿主机默认情况下 ArangoDB 监听8529端口处理请求。-e ARANGO_RANDOM_ROOT_PASSWORD1启动时为 root 用户生成一个随机密码密码会打印到 stdout稍后可用docker logs查看。--name arangodb-instance为容器指定一个便于引用的名称。指定运行平台与架构默认情况下Docker 会选择与宿主机 CPU 架构匹配的镜像。如果实际运行平台与预期不符——例如你设置了DOCKER_DEFAULT_PLATFORM环境变量指向了其他架构——可以通过--platform标志显式指定容器的操作系统与架构对于 x86-64使用linux/amd64对于 ARM 平台尤其是缺少所需 AVX 指令集扩展仿真能力的 Apple Silicon应使用linux/arm64/v8。示例docker run -d -p 8529:8529 -e ARANGO_RANDOM_ROOT_PASSWORD1 --name arangodb-instance --platform linux/arm64/v8 arangodb这与 arangodb/README.md 中标注的官方支持架构amd64、arm64v8保持一致说明该镜像针对这两类架构均提供了官方构建产物。获取容器监听的 IP如果需要获取 ArangoDB 容器所监听的 IP 地址可以用docker inspect查询网络设置docker inspect --format {{ .NetworkSettings.IPAddress }} arangodb-instance该命令会直接输出容器的 IP便于应用层或调试工具连接。初始化服务器语言通过 Docker 使用 ArangoDB 时首次运行需要在以下两种方式中任选其一指定服务器初始化所使用的语言通过LANG环境变量在docker run命令中设置LANG为某个 locale例如-e LANGsv表示使用瑞典语 locale。通过arangod.conf配置文件在宿主机上创建一个配置文件在文件**顶部任何[section]之前**设置icu-language sv然后将其挂载并覆盖容器内的默认配置文件docker run -v /your-host-path/arangod.conf:/etc/arangodb3/arangod.conf ...如果未显式指定语言默认值如下ArangoDB v3.11 及更早版本默认为en_US从 v3.12 起默认为en_US_POSIX。连接并访问实例通过容器链接注入数据库访问信息要从应用容器访问正在运行的 ArangoDB 实例可以将两个容器链接起来docker run -e ARANGO_RANDOM_ROOT_PASSWORD1 --name my-app --link arangodb-instance:db-link arangodb该命令把名为arangodb-instance的实例以别名db-link链接进应用容器。链接建立后应用容器内会自动注入一组环境变量应用可以直接读取它们来访问数据库DB_LINK_PORT_8529_TCPtcp://172.17.0.17:8529 DB_LINK_PORT_8529_TCP_ADDR172.17.0.17 DB_LINK_PORT_8529_TCP_PORT8529 DB_LINK_PORT_8529_TCP_PROTOtcp DB_LINK_NAME/naughty_ardinghelli/db-link其中DB_LINK_PORT_8529_TCP_ADDR与DB_LINK_PORT_8529_TCP_PORT即数据库服务的主机与端口DB_LINK_NAME则记录了链接的容器名/别名。向外部世界暴露端口如果希望把 ArangoDB 的端口暴露给宿主机之外的网络运行docker run -e ARANGO_RANDOM_ROOT_PASSWORD1 -p 8529:8529 -d arangodb镜像本身已在 Dockerfile 中声明了EXPOSE 8529这里的-p 8529:8529将容器端口映射到宿主机端口外部即可通过宿主机 IP 的8529端口访问数据库。选择认证方式ArangoDB 镜像提供了多种认证方式均通过docker run时的-e环境变量指定环境变量行为与适用场景ARANGO_RANDOM_ROOT_PASSWORD1启动时生成随机 root 密码密码打印到 stdout之后可用docker logs查看。适合临时或自动化部署场景避免硬编码密码。ARANGO_NO_AUTH1禁用认证。仅适合本地测试。警告在生产环境这样做会暴露全部数据务必确保 ArangoDB 无法被互联网直接访问。ARANGO_ROOT_PASSWORDsomepassword指定你自己的 root 密码。适合需要可控、固定凭据的场景。需要特别注意的是以上通过环境变量指定登录的方式仅适用于单服务器single server安装。对于集群cluster部署需要在系统启动后通过空密码的 root 用户来进一步配置用户账户。命令行选项与 ArangoShell向 arangod 追加启动参数镜像的 entrypoint 脚本默认启动arangod二进制并把docker run命令末尾追加的参数原样转发给它docker run -e ARANGO_RANDOM_ROOT_PASSWORD1 arangodb --help例如上面的命令会启动arangod --help打印全部服务器启动选项。同理你可以在容器命令尾部追加任意arangod支持的命令行参数实现按需定制启动行为。启动其他二进制以 arangosh 为例除了arangod还可以通过覆盖命令的方式启动镜像内的其他二进制例如 ArangoShell交互式 Shelldocker run -it arangodb arangosh --server.database myDB ...这里-it提供交互式终端arangosh后跟的--server.database myDB ...等参数会直接传给 Shell 客户端。在同一容器内执行 arangosh如果arangod运行在一个容器、而你想用另一个容器中的arangosh去访问它需要额外配置容器间的网络。更简单的做法是直接在同一个容器内执行。先用docker ps查看运行中容器的 ID 与名称docker ps输出大致如下CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1234567890ab arangodb /entrypoint.sh aran… 2 hours ago Up 2 hours 0.0.0.0:8529-8529/tcp jolly_joker然后通过docker exec结合容器 ID 或名称在已有容器内执行命令docker exec -it jolly_joker arangosh这样即可直接进入运行中实例的 ArangoShell 交互界面。限制资源占用arangod启动时会检查以下两个环境变量用于限制它使用的内存总量与 CPU 核心数——这在容器环境与资源共享场景下尤其重要。ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORYv3.6.3 引入该变量用于覆盖系统总内存的自动检测结果。取值规则可以指定一个十进制数字单位默认为字节追加G或g后缀时数值乘以2^30追加M或m后缀时数值乘以2^20追加K或k后缀时数值乘以2^10。例如64G表示 64 吉字节64 × 2^30 字节。服务器启动时会把检测到的总内存以 INFO 级别日志打印出来如果设置了该变量则会打印覆盖后的值。多种默认尺寸例如 RocksDB 的 buffer cache 大小都是基于这个值计算得出的因此正确设置它对性能有直接影响。该选项在两种场景下特别有用容器 cgroup 存在内存限制时目前 cgroup 的 RAM 限制不会被自动检测因此需要手动把该限制写入此环境变量与同一台机器上的其他服务共享内存时通过该变量主动限定 ArangoDB 可用的内存上限避免挤占其他服务。ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORESv3.7.1 引入该变量用于覆盖系统CPU 核心数的自动检测结果。服务器启动时会把检测到的核心数以 INFO 日志打印若设置则显示覆盖值。各类线程相关的默认值都是基于该值计算的。当arangod运行在容器中或与同机其他服务共享 CPU、不希望占满所有核心时应设置该变量进行限制。数据持久化存储引擎选择ArangoDB 在 3.2 到 3.6 版本支持两种存储引擎可以在创建容器时通过环境变量ARANGO_STORAGE_ENGINE选择取值说明mmfiles经典存储引擎3.7 及以后的版本已不再提供。rocksdb基于 RocksDB 的存储引擎从 3.4 版本起为默认选择。镜像内置的数据卷ArangoDB 镜像使用以下两个目录作为 Docker 卷/var/lib/arangodb3数据库目录用于存储集合collection数据/var/lib/arangodb3-apps应用apps目录用于存储任何扩展。查看镜像声明的全部卷docker inspect --format {{ .Config.Volumes }} arangodb挂载宿主机目录可以把容器卷映射到宿主机目录使数据在容器重建之间得以保留。下面的/tmp/arangodb只是示例路径通常不是存放持久化文件的合适位置unix mkdir /tmp/arangodb unix docker run -e ARANGO_RANDOM_ROOT_PASSWORD1 -p 8529:8529 -d \ -v /tmp/arangodb:/var/lib/arangodb3 \ arangodb这样宿主机/tmp/arangodb目录就会作为 ArangoDB 容器内的数据库目录使用。使用数据容器另一种常见做法是创建一个专门持有数据的容器docker create --name arangodb-persist arangodb true然后让 ArangoDB 容器通过--volumes-from继承该数据容器的卷docker run -e ARANGO_RANDOM_ROOT_PASSWORD1 --volumes-from arangodb-persist -p 8529:8529 arangodb如果想节省几个字节的镜像体积也可以改用busybox或alpine这类极简镜像来创建纯卷容器——但此时需要自行声明所需的卷例如docker run -d --name arangodb-persist -v /var/lib/arangodb3 busybox true作为基础镜像使用如果以 ArangoDB 镜像作为基础镜像构建自己的镜像有两点必须注意CMD 必须使用 exec 形式包裹。否则默认的 entrypoint 将无法执行其引导bootstrapping工作导致初始化逻辑被跳过。通过/docker-entrypoint-initdb.d/目录控制初始化过程。在派生镜像时可以把以下三类文件放入该目录它们会在容器初始化阶段按规则被处理文件类型处理方式*.sh以 bash shell 脚本方式运行。*.js使用arangosh执行可以通过ARANGOSH_ARGS环境变量为 arangosh 指定额外参数。dumps/在dumps/目录下放置由arangodump生成的数据库 dump 子目录它们可被arangorestore恢复。这套机制让镜像即实例模板成为可能将建库脚本、初始化 JS 或完整的数据备份随镜像一起打包新容器一启动即自动完成数据初始化与恢复。镜像信息与维护说明从 arangodb/README.md 可以进一步了解镜像的维护信息该镜像由 ArangoDB 官方维护README 文件本身是由arangodb/目录下的其他文件如 arangodb/content.md、arangodb/maintainer.md、arangodb/README-short.txt 等经模板自动生成文件头部明确标注了DO NOT EDIT。此外arangodb/metadata.json 将该镜像归类于databases-and-storage类别arangodb/github-repo 记录了镜像构建仓库的地址供需要深入研究 Dockerfile 细节的读者参考。许可证说明使用官方 ArangoDB Docker 镜像前请仔细阅读 arangodb/license.md 与 arangodb/README.md 中的完整许可条款核心要点如下官方镜像中的 ArangoDBCommunity Edition受ArangoDB Community License约束生产环境数据集大小限制为 100 GB仅可用于内部业务目的不得用于任何商业用途不包含分发、嵌入其他产品、或与 ArangoDB Enterprise Edition 结合的权利。Community Edition 的源代码基于Business Source License 1.1BUSL-1.1复制、修改、再分发、非商业使用以及非生产环境下的商业使用始终被允许在不创建商业衍生作品/服务、或不将其纳入商业产品的前提下也可以在生产环境部署。某个具体版本首次公开发布满四周年后许可证自动转换为宽松的 Apache 2.0 开源许可证。截至 ArangoDB 3.11ArangoDB 采用Apache 2.0 License。与所有 Docker 镜像一样镜像内还可能包含其他软件如基础发行版中的 Bash 等各自适用相应许可证使用前请自行确认镜像内全部软件均符合你的合规要求。赞分享文档【免费下载链接】docsDocumentation for Docker Official Images in docker-library项目地址https://gitcode.com/gh_mirrors/docs/docs点击查看免费下载相关推荐网盘直链下载助手九大网盘直链交给自己的下载器网盘直链下载助手九大网盘直链交给自己的下载器 你点开网盘里的一个视频速度停在几十 KB/s换浏览器也一样。问题多半不在你的网络而在下载走的是官方客户端前端Eclipse Mosquitto 2.0 OpenSSL 版 Docker 镜像实战指南配置挂载、认证授权与数据持久化Eclipse Mosquitto 2.0 OpenSSL 版 Docker 镜像实战指南配置挂载、认证授权与数据持久化 导读 本文以 docker/2.0物联网消息队列后端网络/通信Apache CouchDB Docker 官方镜像实战指南从单节点启动到集群配置、数据持久化与安全加固Apache CouchDB Docker 官方镜像实战指南从单节点启动到集群配置、数据持久化与安全加固 Apache CouchDB 是 Docker Of文档上一篇uBlock Origin 完整使用指南3 分钟装好免费浏览器广告拦截器装完即用下一篇深入解析 Gradio JSON 组件从 gradio/json 前端渲染到 gr.JSON 后端数据流创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考