快速参考
-
由……维护: (注:原文中“Maintained by:”后面应该会有具体的维护者信息,若有完整内容,翻译会更加准确。这里仅根据给定的部分进行了翻译。)
ArangoDB (该词可能是一个特定的数据库名称或产品名称,在没有更多上下文的情况下,直接按照原文进行翻译) -
哪里可以获得帮助:
Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow
支持的标签及各自的 Dockerfile 链接
快速参考(续)
-
已发布的图像伪影细节:
repo-info repo 的repos/arangodb/目录(历史记录)
(图像元数据、传输大小等) -
图像更新:
官方图像仓库的library/arangodb标签
官方图像存储库的library/arangodb文件(历史记录) -
此描述的来源:
文档库的arangodb/目录(历史记录)
什么是 ArangoDB?
ArangoDB 是一个可扩展的图数据库系统,可通过连接数据更快地创造价值。它具有原生图、集成搜索引擎和 JSON 支持,通过单一查询语言实现。
ArangoDB 可在任何地方运行:本地部署、云端以及作为托管云服务:ArangoGraph 洞察平台。

ArangoDB 的关键特性
原生图存储数据和关系,即使存在多个级别的连接,也能实现更快的查询,并且能够提供传统关系型和文档数据库系统根本无法实现的更深入见解。
文档存储 您图形中的每个节点都是一个 JSON 文档:灵活、可扩展,并且可以轻松从您现有的文档数据库中导入。
ArangoSearch 是一个原生集成的跨平台索引、文本搜索和排名引擎,用于信息检索,针对速度和内存进行了优化。
ArangoDB 文档
如何使用此图像
启动一个 ArangoDB 实例
为了启动 ArangoDB 实例,运行:
docker run -d -p 8529:8529 -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name arangodb-instance arangodb
默认情况下,Docker 会为镜像选择与您的主机 CPU 匹配的处理器架构。如果并非如此,例如,因为您将 DOCKER_DEFAULT_PLATFORM 环境变量设置为不同的架构,您可以将 --platform 标志传递给 docker run 命令,以指定容器的适当操作系统和架构。对于 x86 - 64,使用 linux/amd64 。在 ARM 上,特别是对于没有所需 AVX 指令集扩展仿真的 Apple 芯片,使用 linux/arm64/v8 :
docker run -d -p 8529:8529 -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name arangodb-instance --platform linux/arm64/v8 arangodb
这会创建并启动作为后台进程的 arangodb Docker 实例。会打印该进程的标识符。默认情况下,ArangoDB 在端口 8529 上监听请求。
为了获取 ArangoDB 监听的 IP,运行:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' arangodb-instance
初始化服务器语言
在使用 Docker 时,您需要在首次运行时通过以下方式之一指定要将服务器初始化为的语言:
-
在
docker run命令中将环境变量LANG设置为一个区域设置,例如,将-e LANG=sv设置为瑞典区域设置。 -
使用设置语言的
arangod.conf配置文件并将其挂载到容器中。例如,在您的主机系统上创建一个配置文件,在其中您在顶部设置icu-language = sv(在任何[section]之前),然后像docker run -v /your-host-path/arangod.conf:/etc/arangodb3/arangod.conf ...一样将该文件挂载在默认配置文件之上。
请注意,您不能仅使用命令行上的启动选项(如 docker run ... arangodb --icu-language sv )来设置语言。
如果您未明确指定语言,则在 ArangoDB v3.11 及之前版本中默认是 en_US ,从 ArangoDB v3.12 起默认是 en_US_POSIX 。
使用该实例
要从应用程序使用正在运行的实例,请链接容器:
docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name my-app --link arangodb-instance:db-link arangodb
此操作使用名为 arangodb-instance 的实例,并将其链接到应用程序容器中。该应用程序容器包含环境变量,可用于访问数据库。
DB_LINK_PORT_8529_TCP=tcp://172.17.0.17:8529
DB_LINK_PORT_8529_TCP_ADDR=172.17.0.17
DB_LINK_PORT_8529_TCP_PORT=8529
DB_LINK_PORT_8529_TCP_PROTO=tcp
DB_LINK_NAME=/naughty_ardinghelli/db-link
将端口暴露给外部世界
如果您想将端口暴露到外部世界,请运行:
docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d arangodb
ArangoDB 在端口 8529 上监听请求,且镜像包含 EXPOSE 8529 。 -p 8529:8529 在主机上暴露此端口。
选择一种认证方法
ArangoDB 镜像提供了几种身份验证方法,在使用 docker run 时可以通过环境变量(-e)进行指定
-
ARANGO_RANDOM_ROOT_PASSWORD=1启动时生成一个随机的根密码。该密码将打印到标准输出(稍后可使用
docker logs进行检查) -
ARANGO_NO_AUTH=1禁用身份验证。适用于测试。
警告:在生产环境中这样做会暴露您的所有数据。请确保 ArangoDB 无法从互联网直接访问!
-
ARANGO_ROOT_PASSWORD=somepassword指定您自己的根密码。
注意:这种指定登录的方式仅适用于单服务器安装。对于集群,系统启动后,您必须通过根用户以空密码为用户进行配置。
命令行选项
您可以通过将参数附加到 Docker 命令的末尾来将参数传递到 ArangoDB 服务器:
docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 arangodb --help
入口点脚本默认启动 arangod 二进制文件并转发您的参数。
您也可以启动其他二进制文件,例如 ArangoShell:
docker run -it arangodb arangosh --server.database myDB ...
请注意,如果 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
欲了解更多信息,请参阅有关配置的 ArangoDB 文档。
限制资源利用
arangod 会检查以下环境变量,这些变量可用于限制其应使用的内存量和 CPU 核心数:
-
ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY(在 v3.6.3 中引入)此变量可用于覆盖系统中存在的总 RAM 量的自动检测。可以指定一个十进制数(以字节为单位)。此外,如果附加
G或g,则该值乘以2^30。如果附加M或m,则该值乘以2^20。如果附加K或k,则该值乘以2^10。也就是说,64G表示 64 千兆字节。在服务器启动时,检测到的 RAM 总量会作为 INFO 消息进行记录。如果设置了该变量,则会显示被覆盖的值。根据此值计算出各种默认大小(例如 RocksDB 缓冲区缓存大小)。
设置此选项在两种情况下尤其有用:
- 如果
arangod在容器中运行且其 cgroup 具有 RAM 限制,那么应在此环境变量中指定此限制,因为目前它未被自动检测到。 - 如果
arangod与同一台机器上的其他服务一起运行,从而与它们共享 RAM,则应使用此环境变量限制内存量。 ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES(在 v3.7.1 中引入)
此变量可用于覆盖系统中存在的 CPU 核心数量的自动检测。
在服务器启动时,检测到的 CPU 核心数量会作为 INFO 消息进行记录。如果设置了该变量,则会显示被覆盖的值。基于此值计算各种线程的默认值。
如果
arangod在容器中运行或与同一机器上的其他服务一起运行,且不应使用所有可用的 CPU,则设置此选项很有用。 - 如果
持久数据
从 3.2 版到 3.6 版,ArangoDB 支持两种不同的存储引擎。您可以在使用环境变量 ARANGO_STORAGE_ENGINE 实例化容器时进行选择。使用 mmfiles ,您可以选择经典存储引擎(在 3.7 及更高版本中不可用), rocksdb 将选择基于 RocksDB 的存储引擎。从 3.4 版开始,默认选择是 rocksdb 。
ArangoDB 使用卷 /var/lib/arangodb3 作为数据库目录来存储集合数据,并使用卷 /var/lib/arangodb3-apps 作为应用程序目录来存储任何扩展。这些目录被标记为 Docker 卷。
见 docker inspect --format "{{ .Config.Volumes }}" arangodb 以获取所有卷册。
关于持久性和 Docker 容器的一个很好的解释可以在这里找到:Docker 深入探讨:卷,为什么 Docker 数据容器是好的
使用主机目录
您可以将容器的卷映射到主机上的一个目录,以便在容器的多次运行之间保留数据。此路径 /tmp/arangodb 通常不是存储您的持久文件的正确位置 - 它只是一个示例!
unix> mkdir /tmp/arangodb
unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d \
-v /tmp/arangodb:/var/lib/arangodb3 \
arangodb
这将使用主机的 /tmp/arangodb 目录作为容器内 ArangoDB 的数据库目录。
使用数据容器
或者,您可以创建一个容纳数据的容器。
docker create --name arangodb-persist arangodb true
并在您的 ArangoDB 容器中使用此数据容器。
docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --volumes-from arangodb-persist -p 8529:8529 arangodb
如果想节省一些字节,您可以选择使用 busybox 或 alpine 来仅创建卷容器。请注意,在这种情况下,您需要提供所使用的卷。例如
docker run -d --name arangodb-persist -v /var/lib/arangodb3 busybox true
用作基础镜像
如果您将该图像用作基础图像,请确保将任何 CMD 以 exec 形式进行包装。否则,默认的入口点将无法完成其引导工作。
在推导图像时,您可以通过将文件放入 /docker-entrypoint-initdb.d/ 来控制实例化。
*.sh- 以.sh 结尾的文件将作为 bash 脚本运行。*.js- 文件将通过 arangosh 执行。您可以通过ARANGOSH_ARGS环境变量指定其他的 arangosh 参数。dumps/- 在该目录中,您可以放置使用 arangodump 生成的包含数据库转储的子目录。它们可以使用 arangorestore 进行恢复。
许可证
ArangoDB 社区版的官方 Docker 镜像受 ArangoDB 社区许可证的约束。用于商业目的的使用在单个集群的生产环境中限于 100GB 的数据集大小,且最多三个集群。
社区版的源代码在商业源代码许可证 1.1(BUSL - 1.1)下可用。始终允许复制、修改、重新分发、非商业性使用以及在非生产环境中的商业性使用。此外,只要您未创建商业衍生作品或提供,或未将其包含在商业产品、应用程序或服务中,您可以将 BUSL 许可的 ArangoDB 源代码用于任何目的(包括生产)。在特定版本首次公开分发的四周年之际,许可证将更改为宽松的 Apache 2.0 开源许可证。
截至 ArangoDB 3.11 版本,ArangoDB 是根据 Apache 2.0 许可证授权的。
ArangoDB 包含根据各自许可协议的第三方软件。
与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。
一些能够自动检测到的额外许可信息可能会在 repo-info 存储库的 arangodb/ 目录中找到。
对于任何预构建图像的使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。