本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

Apache Cassandra 是一个开源分布式数据库管理系统,设计用于跨多台商用服务器处理大量数据,提供高可用性且无单点故障。该系统支持跨多个数据中心的集群部署,通过异步无主复制机制为所有客户端提供低延迟操作。作为分布式存储系统,Cassandra 适用于需要横向扩展、高吞吐量和容错能力的场景。
| 标签 | Dockerfile 链接 |
|---|---|
5.0.5, 5.0, 5, latest, 5.0.5-jammy, 5.0-jammy, 5-jammy, jammy | 5.0/Dockerfile |
4.1.10, 4.1, 4, 4.1.10-jammy, 4.1-jammy, 4-jammy | 4.1/Dockerfile |
4.0.18, 4.0, 4.0.18-jammy, 4.0-jammy | 4.0/Dockerfile |
3.11.19, 3.11, 3, 3.11.19-jammy, 3.11-jammy, 3-jammy | 3.11/Dockerfile |
3.0.32, 3.0, 3.0.32-jammy, 3.0-jammy | 3.0/Dockerfile |
amd64、arm32v7、arm64v8、ppc64le、s390x(更多信息)repos/cassandra/ 目录(包含元数据、传输大小等)library/cassandra 标签 及 配置文件cassandra/ 目录启动 Cassandra 实例的基本命令如下:
docker run --name some-cassandra --network some-network -d cassandra:tag
--name some-cassandra:指定容器名称(可自定义)。--network some-network:将容器加入自定义网络(建议使用,便于集群通信)。-d:后台运行容器。cassandra:tag:指定镜像标签(如 latest、5.0 等,见“支持的标签”)。通过环境变量可配置两种集群场景:同机多节点和跨机多节点。
启动第一个节点(种子节点):
docker run --name some-cassandra --network some-network -d cassandra:tag
启动后续节点,指定种子节点为第一个节点的容器名:
docker run --name some-cassandra2 --network some-network -d -e CASSANDRA_SEEDS=some-cassandra cassandra:tag
假设服务器 A IP 为 10.42.42.42,服务器 B IP 为 10.43.43.43。
服务器 A 启动种子节点,暴露 gossip 端口(7000)并指定广播地址:
docker run --name some-cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.42.42.42 -p 7000:7000 cassandra:tag
服务器 B 启动节点,指定种子节点为服务器 A 的 IP,并暴露端口:
docker run --name some-cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.43.43.43 -p 7000:7000 -e CASSANDRA_SEEDS=10.42.42.42 cassandra:tag
使用 cqlsh(Cassandra 查询语言 shell)连接运行中的 Cassandra 容器:
docker run -it --network some-network --rm cassandra cqlsh some-cassandra
-it:交互模式,分配终端。--network some-network:与目标 Cassandra 容器在同一网络。--rm:命令执行后自动删除临时容器。some-cassandra:目标 Cassandra 容器名称(或 IP)。更多 CQL 语法参考 Cassandra 官方文档。
通过 docker exec 进入运行中的容器:
docker exec -it some-cassandra bash
通过 Docker 容器日志命令查看 Cassandra 服务日志:
docker logs some-cassandra
最灵活的方式是通过挂载自定义 cassandra.yaml 文件覆盖默认配置:
docker run --name some-cassandra -v /path/on/host/cassandra.yaml:/etc/cassandra/cassandra.yaml -d cassandra:tag
如需使用非默认配置文件名,可通过启动参数指定:
docker run --name some-cassandra -d 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 节点集群的示例:
version: '3' services: cassandra-seed: image: 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: 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: 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:
启动集群:
docker-compose up -d
Cassandra 默认将数据存储在容器内的 /var/lib/cassandra。为避免数据丢失,建议通过卷挂载将数据持久化到主机:
docker run --name some-cassandra -v /host/datadir:/var/lib/cassandra -d cassandra:tag
/host/datadir:主机上的目录(需提前创建并设置权限)。/var/lib/cassandra:容器内数据目录。容器启动时,若未初始化数据库,会自动创建默认数据库。此过程中 Cassandra 不接受连接,可能导致自动化工具(如 docker-compose)启动多容器时出现连接失败。建议通过脚本检测节点状态(如 nodetool status),确认初始化完成后再进行后续操作。
Cassandra 软件使用 Apache 许可证。
镜像可能包含其他软件(如 Bash、基础系统组件等),其许可证可能不同。更多信息可参考 repo-info 仓库的 cassandra/ 目录。
使用本镜像需确保遵守所有包含软件的相关许可证。
免费版仅支持 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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429