
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
此镜像基于Apache Cassandra 3.11.x基础镜像构建,包含https://github.com/datastax/management-api-for-apache-cassandra%E5%92%8C%E4%BF%AE%E6%94%B9%E7%9A%84%E5%85%A5%E5%8F%A3%E7%82%B9%E3%80%82
获取帮助:
DataStax社区论坛
维护者:
https://github.com/datastax/management-api-for-apache-cassandra
Apache Cassandra是一个开源分布式数据库管理系统,旨在跨多台普通服务器处理大量数据,提供高可用性且无单点故障。Cassandra支持跨多个数据中心的集群,通过异步无主复制为所有客户端提供低延迟操作。
***.org/wiki/Apache_Cassandra
!https://raw.githubusercontent.com/docker-library/docs/fb8596d619703fc556e6d56e***d8bfdf***/cassandra/logo.png
cassandra服务器实例启动Cassandra实例非常简单:
console$ docker run --name some-cassandra --network some-network -d datastax/cassandra-mgmtapi-3_11_6:tag
其中some-cassandra是您要分配给容器的名称,tag是指定所需Cassandra版本的标签。请参考上方列表获取相关标签。
使用下文记录的环境变量,有两种集群场景:同一机器上的实例和不同机器上的实例。对于同一机器,按上述方法启动实例。要启动其他实例,只需告诉每个新节点第一个节点的位置。
console$ docker run --name some-cassandra2 -d --network some-network -e CASSANDRA_SEEDS=some-cassandra datastax/cassandra-mgmtapi-3_11_6:tag
对于不同机器(如云提供商上的两个VM),需要告诉Cassandra要向其他节点广播的IP地址(因为容器地址位于docker桥接后面)。
假设第一台机器的IP地址是10.42.42.42,第二台是10.43.43.43,启动第一个实例并暴露gossip端口:
console$ docker run --name some-cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.42.42.42 -p 7000:7000 datastax/cassandra-mgmtapi-3_11_6:tag
然后在第二台机器上启动Cassandra容器,暴露gossip端口并将种子指向第一台机器:
console$ docker run --name some-cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.43.43.43 -p 7000:7000 -e CASSANDRA_SEEDS=10.42.42.42 datastax/cassandra-mgmtapi-3_11_6:tag
cqlsh连接到Cassandra以下命令启动另一个Cassandra容器实例,并针对原始Cassandra容器运行cqlsh(Cassandra查询语言shell),允许您对数据库实例执行CQL语句:
console$ docker run -it --network some-network --rm datastax/cassandra-mgmtapi-3_11_6:tag cqlsh some-cassandra
有关CQL的更多信息,请参见https://cassandra.apache.org/doc/latest/cql/index.html%E3%80%82
docker exec命令允许您在Docker容器内运行命令。以下命令将为您提供cassandra容器内的bash shell:
console$ docker exec -it some-cassandra bash
Cassandra服务器日志可通过Docker的容器日志查看:
console$ docker logs some-cassandra
为cassandra镜像提供配置的最佳方式是提供自定义的/etc/cassandra/cassandra.yaml文件。有多种方式可将此文件提供给容器(通过包含FROM+COPY的简短Dockerfile、通过https://docs.docker.com/engine/swarm/configs/%E3%80%81%E9%80%9A%E8%BF%87%E8%BF%90%E8%A1%8C%E6%97%B6%E7%BB%91%E5%AE%9A%E6%8C%82%E8%BD%BD%E7%AD%89%EF%BC%89%EF%BC%8C%E5%85%B7%E4%BD%93%E7%BB%86%E8%8A%82%E7%95%99%E7%BB%99%E8%AF%BB%E8%80%85%E8%87%AA%E8%A1%8C%E5%AE%9E%E8%B7%B5%E3%80%82
要使用不同的文件名(例如,避免所有镜像提供的配置行为),请使用-Dcassandra.config=/path/to/cassandra.yaml作为镜像的参数(如docker run ... cassandra -Dcassandra.config=/path/to/cassandra.yaml)。
镜像支持少量环境变量,这些变量将以某种方式修改/etc/cassandra/cassandra.yaml(但脚本正在修改YAML,因此本质上较为脆弱):
CASSANDRA_LISTEN_ADDRESS:控制侦听传入连接的IP地址。默认值为auto,会将cassandra.yaml中的listen_address选项设置为容器启动时的IP地址。此默认值在大多数用例中应适用。
CASSANDRA_BROADCAST_ADDRESS:控制向其他节点广播的IP地址。默认值为CASSANDRA_LISTEN_ADDRESS的值。它将设置cassandra.yaml中的broadcast_address和broadcast_rpc_address选项。
CASSANDRA_RPC_ADDRESS:控制thrift rpc服务器绑定的地址。如果未指定地址,将使用通配符地址(0.0.0.0)。它将设置cassandra.yaml中的rpc_address选项。
CASSANDRA_START_RPC:控制是否启动thrift rpc服务器。它将设置cassandra.yaml中的start_rpc选项。
CASSANDRA_SEEDS:gossip用于引导加入集群的新节点的逗号分隔IP地址列表。它将设置cassandra.yaml中seed_provider选项的seeds值。CASSANDRA_BROADCAST_ADDRESS将添加到传入的种子中,以便服务器也能与自身通信。
CASSANDRA_CLUSTER_NAME:设置集群名称,集群中所有节点必须相同。它将设置cassandra.yaml的cluster_name选项。
CASSANDRA_NUM_TOKENS:设置此节点的令牌数量。它将设置cassandra.yaml的num_tokens选项。
CASSANDRA_DC:设置此节点的数据库中心名称。它将设置cassandra-rackdc.properties的dc选项。必须将CASSANDRA_ENDPOINT_SNITCH设置为使用"GossipingPropertyFileSnitch",Cassandra才会应用cassandra-rackdc.properties,否则此变量无效。
CASSANDRA_RACK:设置此节点的机架名称。它将设置cassandra-rackdc.properties的rack选项。必须将CASSANDRA_ENDPOINT_SNITCH设置为使用"GossipingPropertyFileSnitch",Cassandra才会应用cassandra-rackdc.properties,否则此变量无效。
CASSANDRA_ENDPOINT_SNITCH:设置此节点将使用的snitch实现。它将设置cassandra.yml的endpoint_snitch选项。
重要提示:有多种方式存储Docker容器中运行的应用程序使用的数据。我们建议cassandra镜像的用户熟悉可用选项,包括:
Docker文档是了解不同存储选项和变体的良好起点,有多个博客和论坛帖子讨论并提供此领域的建议。我们在此仅展示上述后一种选项的基本过程:
在主机系统的合适卷上创建数据目录,例如/my/own/datadir。
像这样启动cassandra容器:
console$ docker run --name some-cassandra -v /my/own/datadir:/var/lib/cassandra -d datastax/cassandra-mgmtapi-3_11_6:tag
命令中的-v /my/own/datadir:/var/lib/cassandra部分将底层主机系统的/my/own/datadir目录挂载为容器内的/var/lib/cassandra,Cassandra默认会在此处写入数据文件。
如果容器启动时未初始化数据库,则会创建默认数据库。虽然这是预期行为,但这意味着在初始化完成前,它不会接受传入连接。这在使用自动化工具(如docker-compose)同时启动多个容器时可能会导致问题。
查看此镜像中包含的软件的https://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=blob;f=LICENSE.txt;hb=cassandra-3.11.1%E3%80%82
与所有Docker镜像一样,这些镜像可能还包含其他受其他许可证约束的软件(如基础发行版中的Bash等,以及主要包含软件的任何直接或间接依赖项)。
一些能够自动检测到的其他许可证信息可能位于https://github.com/docker-library/repo-info/tree/master/repos/cassandra%E4%B8%AD%E3%80%82
至于任何预构建镜像的使用,镜像用户有责任确保对此镜像的任何使用符合其中包含的所有软件的相关许可证。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务