Apache Cassandra是一款开源的分布式宽列存储NoSQL数据库管理系统,专为处理大规模结构化数据而设计。其核心定位是提供高可用性、线性可扩展性和容错能力,适用于需要在分布式环境中存储和管理海量数据的场景。该Docker镜像封装了Apache Cassandra的运行环境,简化了部署流程,支持快速搭建单节点或多节点集群,适用于开发、测试及生产环境。
采用无中心节点的分布式设计,数据自动分片并分布在多个节点,避免单点故障,支持集群动态扩缩容。
基于列族(Column Family)的数据模型,支持动态列扩展,适合存储半结构化数据,兼具关系型数据库的结构定义和NoSQL的灵活性。
通过副本机制(默认3副本)确保数据冗余,单个节点故障不影响集群可用性,支持自动故障检测和恢复。
集群性能随节点数量增加呈线性增长,可通过添加节点轻松扩展存储容量和处理能力。
采用基于Gossip协议的分布式一致性模型,支持可调的一致性级别(如ONE、QUORUM、ALL),平衡可用性与数据一致性。
原生支持跨数据中心部署,可配置数据副本跨区域分布,提升灾难恢复能力和全球访问性能。
优化写入路径,支持高吞吐量的写入操作,适合日志收集、物联网数据采集等写入密集型场景。
bashdocker run -d \ --name cassandra-node1 \ -p 9042:9042 \ # CQL客户端端口 -p 7000:7000 \ # 节点间通信端口 -e CASSANDRA_CLUSTER_NAME="MyCassandraCluster" \ # 集群名称 -e CASSANDRA_NODE_NAME="node1" \ # 节点名称 -v cassandra-data:/var/lib/cassandra \ # 数据持久化卷 cassandra:latest
yamlversion: '3' services: cassandra-seed: image: cassandra:latest container_name: cassandra-seed ports: - "9042:9042" environment: - CASSANDRA_CLUSTER_NAME=MyCluster - CASSANDRA_NODE_NAME=seed-node - CASSANDRA_SEEDS=cassandra-seed # 种子节点(自身) - CASSANDRA_LISTEN_ADDRESS=cassandra-seed # 监听地址(容器名) - CASSANDRA_RPC_ADDRESS=0.0.0.0 # 允许外部RPC连接 volumes: - seed-data:/var/lib/cassandra cassandra-node2: image: cassandra:latest container_name: cassandra-node2 depends_on: - cassandra-seed environment: - CASSANDRA_CLUSTER_NAME=MyCluster - CASSANDRA_NODE_NAME=node2 - CASSANDRA_SEEDS=cassandra-seed # 连接种子节点加入集群 - CASSANDRA_LISTEN_ADDRESS=cassandra-node2 - CASSANDRA_RPC_ADDRESS=0.0.0.0 volumes: - node2-data:/var/lib/cassandra volumes: seed-data: node2-data:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
CASSANDRA_CLUSTER_NAME | 集群名称 | Test Cluster |
CASSANDRA_NODE_NAME | 节点名称 | 容器主机名 |
CASSANDRA_SEEDS | 种子节点IP/主机名(集群发现入口) | 容器IP |
CASSANDRA_LISTEN_ADDRESS | 节点间通信监听地址 | 0.0.0.0 |
CASSANDRA_RPC_ADDRESS | CQL客户端RPC监听地址 | 0.0.0.0 |
CASSANDRA_BROADCAST_ADDRESS | 对外广播地址(跨主机集群需配置) | 容器IP |
CASSANDRA_REPLICATION_FACTOR | 默认副本数(单数据中心) | 1 |
| 端口 | 用途 | 备注 |
|---|---|---|
| 7000 | 节点间通信(非SSL) | 集群内节点发现与数据同步 |
| 7001 | 节点间通信(SSL) | 启用SSL时使用 |
| 9042 | CQL客户端端口 | cqlsh、应用程序连接端口 |
| 9160 | Thrift RPC端口(已过时) | 仅兼容旧版客户端 |
为避免容器删除导致数据丢失,需通过Docker卷挂载数据目录:
bash# 创建命名卷(推荐) docker volume create cassandra-data # 运行容器时挂载卷 docker run -d \ --name cassandra \ -v cassandra-data:/var/lib/cassandra \ # 数据存储目录 -v cassandra-config:/etc/cassandra \ # 配置文件目录(可选) cassandra:latest
使用cqlsh客户端连接运行中的容器:
bash# 进入容器内部执行cqlsh docker exec -it cassandra-node1 cqlsh # 或从外部通过9042端口连接(需本地安装cqlsh) cqlsh <容器IP> 9042
如需修改cassandra.yaml配置(如调整缓存大小、超时时间等),可通过卷挂载自定义配置文件:
bashdocker run -d \ --name cassandra \ -v /host/path/to/custom-cassandra.yaml:/etc/cassandra/cassandra.yaml \ cassandra:latest
关键配置项:
seed_provider:种子节点列表(集群发现)data_file_directories:数据文件存储路径commitlog_directory:提交日志路径read_request_timeout_in_ms:读请求超时时间(默认5000ms)
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429