
如果你使用 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 4.0.x预发布构建,目前不适合生产环境使用。此容器构建自https://hub.docker.com/r/datastax/cassandra%EF%BC%8C%E7%9B%B4%E8%87%B3%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8F%E6%94%AF%E6%8C%814.0%E7%89%88%E6%9C%AC%E3%80%82
此镜像基于Apache Cassandra 4.0.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-4_0_0:tag
...其中some-cassandra是你要分配给容器的名称,tag是指定你想要的Cassandra版本的标签。有关相关标签列表,请参见上文。
使用下文记录的环境变量,可以实现两种集群场景:同一台机器上的实例和不同机器上的实例。对于同一台机器,按上述方法启动实例。要启动其他实例,只需告诉每个新节点第一个节点的位置。
console$ docker run --name some-cassandra2 -d --network some-network -e CASSANDRA_SEEDS=some-cassandra datastax/cassandra-mgmtapi-4_0_0: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-4_0_0: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-4_0_0:tag
cqlsh连接到Cassandra以下命令启动另一个Cassandra容器实例,并针对原始Cassandra容器运行cqlsh(Cassandra查询语言shell),允许你对数据库实例执行CQL语句:
console$ docker run -it --network some-network --rm datastax/cassandra-mgmtapi-4_0_0: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文件。有多种方法可以将此文件提供给容器(通过简短的Dockerfile使用FROM + COPY,通过https://docs.docker.com/engine/swarm/configs/%EF%BC%8C%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%E6%8E%A2%E7%B4%A2%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应用cassandra-rackdc.properties,你必须将CASSANDRA_ENDPOINT_SNITCH设置为使用"GossipingPropertyFileSnitch",否则此变量将无效。
CASSANDRA_RACK:此变量设置此节点的机架名称。它会设置cassandra-rackdc.properties的rack选项。为了让Cassandra应用cassandra-rackdc.properties,你必须将CASSANDRA_ENDPOINT_SNITCH设置为使用"GossipingPropertyFileSnitch",否则此变量将无效。
CASSANDRA_ENDPOINT_SNITCH:此变量设置此节点将使用的snitch实现。它会设置cassandra.yml的endpoint_snitch选项。
重要提示:有多种方法可以存储Docker容器中运行的应用程序使用的数据。我们鼓励cassandra镜像的用户熟悉可用的选项,包括:
让Docker通过https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume%E6%9D%A5%E7%AE%A1%E7%90%86%E6%95%B0%E6%8D%AE%E5%BA%93%E6%95%B0%E6%8D%AE%E7%9A%84%E5%AD%98%E5%82%A8%E3%80%82%E8%BF%99%E6%98%AF%E9%BB%98%E8%AE%A4%E9%80%89%E9%A1%B9%EF%BC%8C%E5%AF%B9%E7%94%A8%E6%88%B7%E6%9D%A5%E8%AF%B4%E7%AE%80%E5%8D%95%E4%B8%94%E7%9B%B8%E5%BD%93%E9%80%8F%E6%98%8E%E3%80%82%E7%BC%BA%E7%82%B9%E6%98%AF%E5%AF%B9%E4%BA%8E%E7%9B%B4%E6%8E%A5%E5%9C%A8%E4%B8%BB%E6%9C%BA%E7%B3%BB%E7%BB%9F%EF%BC%88%E5%8D%B3%E5%AE%B9%E5%99%A8%E5%A4%96%E9%83%A8%EF%BC%89%E8%BF%90%E8%A1%8C%E7%9A%84%E5%B7%A5%E5%85%B7%E5%92%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%9D%A5%E8%AF%B4%EF%BC%8C%E6%96%87%E4%BB%B6%E5%8F%AF%E8%83%BD%E9%9A%BE%E4%BB%A5%E5%AE%9A%E4%BD%8D%E3%80%82
在主机系统上(容器外部)创建数据目录,并https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume%E3%80%82%E8%BF%99%E5%B0%86%E6%95%B0%E6%8D%AE%E5%BA%93%E6%96%87%E4%BB%B6%E6%94%BE%E7%BD%AE%E5%9C%A8%E4%B8%BB%E6%9C%BA%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E5%B7%B2%E7%9F%A5%E4%BD%8D%E7%BD%AE%EF%BC%8C%E5%B9%B6%E4%BD%BF%E4%B8%BB%E6%9C%BA%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E5%B7%A5%E5%85%B7%E5%92%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%98%93%E4%BA%8E%E8%AE%BF%E9%97%AE%E8%BF%99%E4%BA%9B%E6%96%87%E4%BB%B6%E3%80%82%E7%BC%BA%E7%82%B9%E6%98%AF%E7%94%A8%E6%88%B7%E9%9C%80%E8%A6%81%E7%A1%AE%E4%BF%9D%E7%9B%AE%E5%BD%95%E5%AD%98%E5%9C%A8%EF%BC%8C%E5%B9%B6%E4%B8%94%E4%B8%BB%E6%9C%BA%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E7%9B%AE%E5%BD%95%E6%9D%83%E9%99%90%E5%92%8C%E5%85%B6%E4%BB%96%E5%AE%89%E5%85%A8%E6%9C%BA%E5%88%B6%E8%AE%BE%E7%BD%AE%E6%AD%A3%E7%A1%AE%E3%80%82
Docker文档是了解不同存储选项和变体的良好起点,有多个博客和论坛帖子讨论并提供该领域的建议。我们在此仅展示上述后一种选项的基本步骤:
在主机系统的合适卷上创建数据目录,例如/my/own/datadir。
像这样启动cassandra容器:
console$ docker run --name some-cassandra -v /my/own/datadir:/var/lib/cassandra -d datastax/cassandra-mgmtapi-4_0_0: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
至于任何预构建镜像的使用,镜像用户有责任确保对该镜像的任何使用都符合其中包含的所有软件的相关许可证。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务