快速参考
-
由……维护: (注:原文中“Maintained by:”后面应该会有具体的维护者信息,若有完整内容,翻译会更加准确。这里仅根据给定的部分进行了翻译。)
Apache CouchDB (该名称通常不进行逐字翻译,直接保留原文) -
哪里可以获得帮助:
Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow
支持的标签及各自的 Dockerfile 链接
快速参考(续)
-
已发布的图像伪影细节:
repo-info repo 的repos/couchdb/目录(历史记录)
(图像元数据、传输大小等) -
图像更新:
官方图像仓库的library/couchdb标签
官方图像存储库的library/couchdb文件(历史记录) -
此描述的来源:
文档库的couchdb/目录(历史记录)
什么是 Apache CouchDB?
Apache CouchDB™ 允许您在需要的地方访问您的数据,它定义了 Couch 复制协议,该协议由各种项目和产品实现,涵盖了从全球分布式服务器集群、移动电话到网络浏览器等各种可以想象到的计算环境。与 Couch 复制协议兼容的软件包括 PouchDB 和 Cloudant。
将您的数据安全地存储在您自己的服务器上,或任何领先的云提供商处。您的 Web 和原生应用程序喜爱 CouchDB,因为它原生支持 JSON 并为您的所有数据存储需求支持二进制。Couch 复制协议可让您的数据在服务器集群、移动电话和网络浏览器之间无缝流动,在保持高性能和强可靠性的同时,实现引人注目的离线优先用户体验。CouchDB 配备了对开发人员友好的查询语言,并可选择使用 MapReduce 进行简单、高效和全面的数据检索。

如何使用此图像
启动一个 CouchDB 实例
启动一个 CouchDB 实例很简单:
$ docker run -d --name my-couchdb couchdb:tag
其中 my-couchdb 是您想要为您的容器指定的名称,而 tag 是指定您想要的 CouchDB 版本的标签。有关标签,请参阅上面的列表。
从另一个 Docker 容器中的应用程序连接到 CouchDB
此图像公开了标准的 CouchDB 端口 5984 ,因此标准容器链接将使其自动对链接的容器可用。要将您的应用程序容器链接到 Cassandra 容器,请像这样启动您的应用程序容器:
$ docker run --name my-couchdb-app --link my-couchdb:couchdb -d app-that-uses-couchdb
将 CouchDB 暴露给外部世界
如果您想将端口暴露给外界,请运行
$ docker run -p 5984:5984 -d couchdb
警告:在您创建的任何数据库上建立管理员用户并正确设置权限之前,请勿执行此操作。
如果您打算将此 CouchDB 实例与集群中的其他实例联网,则需要映射其他端口;有关详细信息,请参阅 CouchDB 官方文档。
创建一个集群
启动您的多个 CouchDB 实例,然后按照 CouchDB 官方文档中的设置向导完成该过程。
对于 CouchDB 集群,您需要提供 NODENAME 设置以及 Erlang 会话令牌(cookie)。可以使用环境变量 ERL_FLAGS 对 Erlang 进行设置,例如 ERL_FLAGS=-setcookie "brumbrum" 。更多信息可在此处找到。
还有一个可用的 Kubernetes Helm 图表。
容器外壳访问、 remsh 以及查看日志
docker exec 命令允许您在 Docker 容器内运行命令。以下命令行将在您的 couchdb 容器内为您提供一个 bash shell:
$ docker exec -it my-couchdb bash
如果您需要直接访问 Erlang 运行时:
$ docker exec -it my-couchdb /opt/couchdb/bin/remsh
CouchDB 日志可通过 Docker 的容器日志获取:
$ docker logs my-couchdb
配置 CouchDB
为 couchdb 映像提供配置的最佳方法是向 CouchDB 提供一个自定义的 ini 文件,最好将其存储在 /opt/couchdb/etc/local.d/ 目录中。有许多方法可以将此文件提供给容器(通过带有 FROM + COPY 的短 Dockerfile ,通过 Docker Configs,通过运行时绑定挂载等),其详细信息留给读者作为练习。
请记住,CouchDB 的运行时重新配置将覆盖配置链中的最后一个文件,并且此 Docker 容器在启动时会创建 /opt/couchdb/etc/local.d/docker.ini 文件。
CouchDB 还使用 /opt/couchdb/etc/vm.args 来存储特定于 Erlang 运行时的更改。更改这些值不太常见。例如,如果您需要更改 epmd 端口,您也需要绑定挂载此文件。(注意:在 Windows 主机上无法绑定挂载文件。)
此外,提供了一些环境变量来设置非常常见的参数:
COUCHDB_USER和COUCHDB_PASSWORD将基于 ini 文件在文件/opt/couchdb/etc/local.d/docker.ini中创建一个具有给定用户名和密码的本地管理员用户。COUCHDB_SECRET将在文件/opt/couchdb/etc/local.d/docker.ini中设置 CouchDB 共享集群的秘密值。- 在文件
/opt/couchdb/etc/vm.args中,NODENAME会将容器内 CouchDB 节点的名称设置为couchdb@${NODENAME}。这用于集群目的,对于单节点设置可以忽略。 - Erlang 环境变量(如
ERL_FLAGS)将由 Erlang 本身使用。如需完整列表,请在此处查看
注意事项
数据存储于何处
重要提示:在 Docker 容器中运行的应用程序所使用的数据有几种存储方式。我们鼓励 couchdb 镜像的用户熟悉可用的选项,包括:
- 让 Docker 通过使用其自身内部的卷管理将数据库文件写入主机系统的磁盘来管理您的数据库数据的存储。这是默认设置,对用户来说简单且相当透明。缺点是,对于直接在主机系统(即在容器之外)上运行的工具和应用程序,这些文件可能很难定位。
- 在主机系统(容器外部)上创建一个数据目录,并将其挂载到容器内部可见的目录。这样可以将数据库文件放置在主机系统上的已知位置,并且便于主机系统上的工具和应用程序访问这些文件。缺点是用户需要确保该目录存在,并且例如主机系统上的目录权限和其他安全机制已正确设置。
Docker 文档是了解不同存储选项和变体的良好起点,并且有多个博客和论坛帖子在该领域进行讨论并提供建议。在这里,我们将仅为上述后一种选项展示基本过程:
- 在您的主机系统的合适卷上创建一个数据目录,例如
/home/couchdb/data。 -
像这样启动您的
couchdb容器:$ docker run --name some-%%REPO% -v /home/couchdb/data:/opt/couchdb/data -d couchdb:tag
命令的 -v /home/couchdb/data:/opt/couchdb/data 部分将底层主机系统中的 /home/couchdb/data 目录作为 /opt/couchdb/data 挂载到容器内部,默认情况下,CouchDB 会将其数据文件写入此处。
在安装完成之前,没有系统数据库
请注意,CouchDB 不再为您自动创建系统数据库,因为在启动时不知道这是单节点还是群集 CouchDB 安装。在群集中,必须在所有节点连接在一起后才能创建数据库。
如果您使用群集设置向导或群集设置 API,在您完成该过程时,这些数据库将为您创建。
如果您选择不使用群集设置向导或 API,则必须手动创建 _global_changes 、 _replicator 和 _users 。
管理员派对模式
该节点也将以管理员模式启动。务必创建一个管理员用户!集群设置向导或集群设置 API 将为您完成此操作。
您还可以使用两个环境变量 COUCHDB_USER 和 COUCHDB_PASSWORD 来设置管理员用户:
$ docker run -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password -d couchdb
请注意,如果您正在设置群集式 CouchDB,您将需要预先对该密码进行哈希处理,并在所有节点上使用完全相同的哈希文本,以确保在群集前面放置负载均衡器时会话能够正常工作。可以通过将容器与挂载为卷的 /opt/couchdb/etc/local.d 目录一起运行来完成哈希处理,从而允许 CouchDB 对您设置的密码进行哈希处理,然后将哈希版本复制出来并在将来使用此值。
使用持久的 CouchDB 配置文件
CouchDB 配置在 .ini 中的 /opt/couchdb/etc 文件中指定。查看 CouchDB 配置文档以了解有关 CouchDB 配置结构的更多信息。
如果您想使用自定义的 CouchDB 配置,可以在主机上的一个目录中创建您的配置文件,然后将该目录作为 /opt/couchdb/etc/local.d 挂载到 couchdb 容器内。
$ docker run --name my-couchdb -v /home/couchdb/etc:/opt/couchdb/etc/local.d -d couchdb
命令的 -v /home/couchdb/etc:/opt/couchdb/etc/local.d 部分将底层主机系统中的 /home/couchdb/etc 目录作为 /opt/couchdb/etc/local.d 挂载到容器内部,默认情况下,CouchDB 会将其动态配置文件写入此处。
您还可以将 couchdb 用作您自己的 CouchDB 实例的基础镜像,并提供您自己版本的 local.ini 配置文件:
示例 Dockerfile:
FROM couchdb
COPY local.ini /opt/couchdb/etc/
然后构建并运行
$ docker build -t you/awesome-couchdb .
$ docker run -d -p 5984:5984 you/awesome-couchdb
请记住,使用此方法,任何新写入的更改仍将出现在 /opt/couchdb/etc/local.d 目录中,因此仍建议将其映射到主机路径以实现持久性。
日志记录
默认情况下,从此映像运行的容器仅将日志记录到 stdout 。您可以在配置中启用将日志记录到文件。
抱歉,您提供的“For example in local.ini :”这段源文本中,“local.ini”的含义不太明确,难以进行准确的翻译。如果您能提供更多的上下文或解释,我将尽力为您提供更准确的简体中文翻译。目前仅能将“For example in”翻译为“例如在”,但“local.ini”无法进行有意义的翻译
[log]
writer = file
file = /opt/couchdb/log/couch.log
建议随后将此路径挂载到主机上的一个目录中,因为 CouchDB 日志可能会非常庞大。
许可证
Apache CouchDB 依据 Apache 许可证获得授权。
与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。
一些能够自动检测到的额外许可信息可能会在 repo-info 存储库的 couchdb/ 目录中找到。
对于任何预构建图像的使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。