
如果你使用 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 是一个开源分布式数据库管理系统,设计用于跨多台商用服务器处理大量数据,提供高可用性且无单点故障。该系统支持跨多个数据中心的集群部署,通过异步无主复制机制为所有客户端提供低延迟操作。作为分布式存储系统,Cassandra 适用于需要横向扩展、高吞吐量和容错能力的场景。
| 标签 | Dockerfile 链接 |
|---|---|
5.0.5, 5.0, 5, latest, 5.0.5-jammy, 5.0-jammy, 5-jammy, jammy | https://github.com/docker-library/cassandra/blob/793ea6b2a8097d629252fe77585775443b53e4c3/5.0/Dockerfile |
4.1.10, 4.1, 4, 4.1.10-jammy, 4.1-jammy, 4-jammy | https://github.com/docker-library/cassandra/blob/793ea6b2a8097d629252fe77585775443b53e4c3/4.1/Dockerfile |
4.0.18, 4.0, 4.0.18-jammy, 4.0-jammy | https://github.com/docker-library/cassandra/blob/793ea6b2a8097d629252fe77585775443b53e4c3/4.0/Dockerfile |
3.11.19, 3.11, 3, 3.11.19-jammy, 3.11-jammy, 3-jammy | https://github.com/docker-library/cassandra/blob/793ea6b2a8097d629252fe77585775443b53e4c3/3.11/Dockerfile |
3.0.32, 3.0, 3.0.32-jammy, 3.0-jammy | https://github.com/docker-library/cassandra/blob/793ea6b2a8097d629252fe77585775443b53e4c3/3.0/Dockerfile |
amd64、arm32v7、arm64v8、ppc64le、s390x(https://github.com/docker-library/official-images#architectures-other-than-amd64)启动 Cassandra 实例的基本命令如下:
bashdocker run --name some-cassandra --network some-network -d docker.xuanyuan.run/cassandra:tag
--name some-cassandra:指定容器名称(可自定义)。--network some-network:将容器加入自定义网络(建议使用,便于集群通信)。-d:后台运行容器。cassandra:tag:指定镜像标签(如 latest、5.0 等,见“支持的标签”)。通过环境变量可配置两种集群场景:同机多节点和跨机多节点。
同机集群
启动第一个节点(种子节点):
bashdocker run --name some-cassandra --network some-network -d docker.xuanyuan.run/cassandra:tag
启动后续节点,指定种子节点为第一个节点的容器名:
bashdocker run --name some-cassandra2 --network some-network -d -e CASSANDRA_SEEDS=some-cassandra docker.xuanyuan.run/cassandra:tag
跨机集群(如两台云服务器)
假设服务器 A IP 为 10.42.42.42,服务器 B IP 为 10.43.43.43。
服务器 A 启动种子节点,暴露 gossip 端口(7000)并指定广播地址:
bashdocker run --name some-cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.42.42.42 -p 7000:7000 docker.xuanyuan.run/cassandra:tag
服务器 B 启动节点,指定种子节点为服务器 A 的 IP,并暴露端口:
bashdocker run --name some-cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.43.43.43 -p 7000:7000 -e CASSANDRA_SEEDS=10.42.42.42 docker.xuanyuan.run/cassandra:tag
使用 cqlsh(Cassandra 查询语言 shell)连接运行中的 Cassandra 容器:
bashdocker run -it --network some-network --rm docker.xuanyuan.run/cassandra cqlsh some-cassandra
-it:交互模式,分配终端。--network some-network:与目标 Cassandra 容器在同一网络。--rm:命令执行后自动删除临时容器。some-cassandra:目标 Cassandra 容器名称(或 IP)。更多 CQL 语法参考 https://cassandra.apache.org/doc/latest/cql/index.html。
进入容器 shell
通过 docker exec 进入运行中的容器:
bashdocker exec -it some-cassandra bash
查看 Cassandra 日志
通过 Docker 容器日志命令查看 Cassandra 服务日志:
bashdocker logs some-cassandra
自定义配置文件(推荐)
最灵活的方式是通过挂载自定义 cassandra.yaml 文件覆盖默认配置:
bashdocker run --name some-cassandra -v /path/on/host/cassandra.yaml:/etc/cassandra/cassandra.yaml -d docker.xuanyuan.run/cassandra:tag
如需使用非默认配置文件名,可通过启动参数指定:
bashdocker run --name some-cassandra -d docker.xuanyuan.run/cassandra:tag -Dcassandra.config=/path/to/custom-config.yaml
环境变量配置
镜像支持通过环境变量修改 cassandra.yaml 及 cassandra-rackdc.properties 中的关键配置,如下表:
| 环境变量 | 描述 | 默认值 | 对应配置项 |
|---|---|---|---|
CASSANDRA_LISTEN_ADDRESS | 监听入站连接的 IP 地址。 | auto(容器启动时 IP) | cassandra.yaml 的 listen_address |
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 服务器。 | false | cassandra.yaml 的 start_rpc |
CASSANDRA_SEEDS | 集群启动时 gossip 协议的种子节点 IP 列表(逗号分隔)。 | 自动添加当前节点 IP | cassandra.yaml 的 seed_provider 中的 seeds |
CASSANDRA_CLUSTER_NAME | 集群名称(所有节点必须一致)。 | Test Cluster | cassandra.yaml 的 cluster_name |
CASSANDRA_NUM_TOKENS | 节点的令牌数量(影响数据分片)。 | 256 | cassandra.yaml 的 num_tokens |
CASSANDRA_DC | 节点所属数据中心名称(需配合 GossipingPropertyFileSnitch)。 | - | cassandra-rackdc.properties 的 dc |
CASSANDRA_RACK | 节点所属机架名称(需配合 GossipingPropertyFileSnitch)。 | - | cassandra-rackdc.properties 的 rack |
CASSANDRA_ENDPOINT_SNITCH | 节点使用的 endpoint snitch 实现(控制数据分布策略)。 | SimpleSnitch | cassandra.yaml 的 endpoint_snitch |
以下是使用 docker-compose.yml 启动 3 节点集群的示例:
yamlversion: '3' services: cassandra-seed: image: docker.xuanyuan.run/cassandra:latest container_name: cassandra-seed environment: - CASSANDRA_CLUSTER_NAME=MyCluster - CASSANDRA_NUM_TOKENS=256 - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch - CASSANDRA_DC=DC1 - CASSANDRA_RACK=Rack1 volumes: - cassandra-seed-data:/var/lib/cassandra ports: - "7000:7000" # Gossip 端口 - "9042:9042" # CQL 端口 cassandra-node1: image: docker.xuanyuan.run/cassandra:latest container_name: cassandra-node1 environment: - CASSANDRA_CLUSTER_NAME=MyCluster - CASSANDRA_SEEDS=cassandra-seed - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch - CASSANDRA_DC=DC1 - CASSANDRA_RACK=Rack1 volumes: - cassandra-node1-data:/var/lib/cassandra depends_on: - cassandra-seed cassandra-node2: image: docker.xuanyuan.run/cassandra:latest container_name: cassandra-node2 environment: - CASSANDRA_CLUSTER_NAME=MyCluster - CASSANDRA_SEEDS=cassandra-seed - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch - CASSANDRA_DC=DC1 - CASSANDRA_RACK=Rack2 volumes: - cassandra-node2-data:/var/lib/cassandra depends_on: - cassandra-seed volumes: cassandra-seed-data: cassandra-node1-data: cassandra-node2-data:
启动集群:
bashdocker-compose up -d
Cassandra 默认将数据存储在容器内的 /var/lib/cassandra。为避免数据丢失,建议通过卷挂载将数据持久化到主机:
bashdocker run --name some-cassandra -v /host/datadir:/var/lib/cassandra -d docker.xuanyuan.run/cassandra:tag
/host/datadir:主机上的目录(需提前创建并设置权限)。/var/lib/cassandra:容器内数据目录。容器启动时,若未初始化数据库,会自动创建默认数据库。此过程中 Cassandra 不接受连接,可能导致自动化工具(如 docker-compose)启动多容器时出现连接失败。建议通过脚本检测节点状态(如 nodetool status),确认初始化完成后再进行后续操作。
Cassandra 软件使用 https://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=blob;f=LICENSE.txt;hb=cassandra-3.11.1。
镜像可能包含其他软件(如 Bash、基础系统组件等),其许可证可能不同。更多信息可参考 https://github.com/docker-library/repo-info/tree/master/repos/cassandra。
使用本镜像需确保遵守所有包含软件的相关许可证。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 cassandra 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: