专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏

cassandra Docker 镜像 - 轩辕镜像

cassandra
library/cassandra
Apache Cassandra是一款开源的分布式存储系统。
1593 收藏0 次下载activelibrary镜像
🚀专业版镜像服务,面向生产环境设计
中文简介版本下载
🚀专业版镜像服务,面向生产环境设计

Cassandra Docker镜像技术文档

镜像概述与主要用途

Apache Cassandra 是一个开源分布式数据库管理系统,设计用于跨多台商用服务器处理大量数据,提供高可用性且无单点故障。该系统支持跨多个数据中心的集群部署,通过异步无主复制机制为所有客户端提供低延迟操作。作为分布式存储系统,Cassandra 适用于需要横向扩展、高吞吐量和容错能力的场景。

核心功能与特性

  • 分布式架构:跨多台服务器分布式存储数据,支持水平扩展,轻松应对数据量增长。
  • 高可用性与容错:无单点故障设计,节点故障不影响整体集群可用性,自动数据复制确保数据冗余。
  • 多数据中心支持:原生支持跨地域/数据中心部署,可配置数据中心和机架信息,优化数据分布与容错。
  • 异步无主复制:节点间通过 gossip 协议通信,异步复制数据,降低延迟并提升写入性能。
  • 灵活配置选项:支持自定义监听地址、广播地址、集群名称、令牌数量等关键参数,适配不同部署需求。
  • CQL 支持:通过 Cassandra Query Language (CQL) 进行数据操作,语法类 SQL,易于使用。

使用场景与适用范围

  • 大规模数据存储:适用于 TB/PB 级别的结构化或半结构化数据存储需求。
  • 高可用性需求:***、电商、物联网等对服务连续性要求极高的业务场景。
  • 跨地域部署:需要在多个数据中心/地域分布数据,实现低延迟访问和灾难恢复。
  • 写入密集型应用:社交媒体、日志收集、实时分析等写入吞吐量要求高的场景。
  • 横向扩展需求:业务增长快,需通过添加节点快速扩展存储和处理能力的系统。

支持的标签与 Dockerfile 链接

标签Dockerfile 链接
5.0.5, 5.0, 5, latest, 5.0.5-jammy, 5.0-jammy, 5-jammy, jammy5.0/Dockerfile
4.1.10, 4.1, 4, 4.1.10-jammy, 4.1-jammy, 4-jammy4.1/Dockerfile
4.0.18, 4.0, 4.0.18-jammy, 4.0-jammy4.0/Dockerfile
3.11.19, 3.11, 3, 3.11.19-jammy, 3.11-jammy, 3-jammy3.11/Dockerfile
3.0.32, 3.0, 3.0.32-jammy, 3.0-jammy3.0/Dockerfile

快速参考

  • 维护者:Docker 社区
  • 获取帮助:Docker Community Slack、Server Fault、Unix & Linux 或 Stack Overflow
  • 提交 issue:[***]
  • 支持的架构:amd64、arm32v7、arm64v8、ppc64le、s390x(更多信息)
  • 镜像 artifact 详情:repo-info 仓库的 repos/cassandra/ 目录(包含元数据、传输大小等)
  • 镜像更新:official-images 仓库的 library/cassandra 标签 及 配置文件
  • 文档来源:docs 仓库的 cassandra/ 目录

使用方法与配置说明

启动单个 Cassandra 服务实例

启动 Cassandra 实例的基本命令如下:

bash
docker run --name some-cassandra --network some-network -d cassandra:tag
  • --name some-cassandra:指定容器名称(可自定义)。
  • --network some-network:将容器加入自定义网络(建议使用,便于集群通信)。
  • -d:后台运行容器。
  • cassandra:tag:指定镜像标签(如 latest、5.0 等,见“支持的标签”)。
创建 Cassandra 集群

通过环境变量可配置两种集群场景:同机多节点和跨机多节点。

同机集群
  1. 启动第一个节点(种子节点):

    bash
    docker run --name some-cassandra --network some-network -d cassandra:tag
    
  2. 启动后续节点,指定种子节点为第一个节点的容器名:

    bash
    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。

  1. 服务器 A 启动种子节点,暴露 gossip 端口(7000)并指定广播地址:

    bash
    docker run --name some-cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.42.42.42 -p 7000:7000 cassandra:tag
    
  2. 服务器 B 启动节点,指定种子节点为服务器 A 的 IP,并暴露端口:

    bash
    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

使用 cqlsh(Cassandra 查询语言 shell)连接运行中的 Cassandra 容器:

bash
docker run -it --network some-network --rm cassandra cqlsh some-cassandra
  • -it:交互模式,分配终端。
  • --network some-network:与目标 Cassandra 容器在同一网络。
  • --rm:命令执行后自动删除临时容器。
  • some-cassandra:目标 Cassandra 容器名称(或 IP)。

更多 CQL 语法参考 Cassandra 官方文档。

容器 shell 访问与日志查看
进入容器 shell

通过 docker exec 进入运行中的容器:

bash
docker exec -it some-cassandra bash
查看 Cassandra 日志

通过 Docker 容器日志命令查看 Cassandra 服务日志:

bash
docker logs some-cassandra
配置 Cassandra
自定义配置文件(推荐)

最灵活的方式是通过挂载自定义 cassandra.yaml 文件覆盖默认配置:

bash
docker run --name some-cassandra -v /path/on/host/cassandra.yaml:/etc/cassandra/cassandra.yaml -d cassandra:tag

如需使用非默认配置文件名,可通过启动参数指定:

bash
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_ADDRESSThrift RPC 服务器绑定地址。0.0.0.0(通配地址)cassandra.yaml 的 rpc_address
CASSANDRA_START_RPC是否启动 Thrift RPC 服务器。falsecassandra.yaml 的 start_rpc
CASSANDRA_SEEDS集群启动时 gossip 协议的种子节点 IP 列表(逗号分隔)。自动添加当前节点 IPcassandra.yaml 的 seed_provider 中的 seeds
CASSANDRA_CLUSTER_NAME集群名称(所有节点必须一致)。Test Clustercassandra.yaml 的 cluster_name
CASSANDRA_NUM_TOKENS节点的令牌数量(影响数据分片)。256cassandra.yaml 的 num_tokens
CASSANDRA_DC节点所属数据中心名称(需配合 GossipingPropertyFileSnitch)。-cassandra-rackdc.properties 的 dc
CASSANDRA_RACK节点所属机架名称(需配合 GossipingPropertyFileSnitch)。-cassandra-rackdc.properties 的 rack
CASSANDRA_ENDPOINT_SNITCH节点使用的 endpoint snitch 实现(控制数据分布策略)。SimpleSnitchcassandra.yaml 的 endpoint_snitch

部署示例

docker-compose 集群配置示例

以下是使用 docker-compose.yml 启动 3 节点集群的示例:

yaml
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:

启动集群:

bash
docker-compose up -d

注意事项

数据存储位置

Cassandra 默认将数据存储在容器内的 /var/lib/cassandra。为避免数据丢失,建议通过卷挂载将数据持久化到主机:

bash
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/ 目录。
使用本镜像需确保遵守所有包含软件的相关许可证。

查看更多 cassandra 相关镜像 →
bitnami/cassandra logo
bitnami/cassandra
by VMware
认证
Bitnami安全镜像,用于部署和运行Cassandra分布式NoSQL数据库,提供安全加固的运行环境。
5250M+ pulls
上次更新:4 个月前
bitnamicharts/cassandra logo
bitnamicharts/cassandra
by VMware
认证
Bitnami提供的Apache Cassandra Helm Chart,用于在Kubernetes集群上部署开源分布式数据库Apache Cassandra,支持高可用性、无单点故障,适用于处理跨多服务器的大量数据。
11M+ pulls
上次更新:4 个月前
rook/cassandra logo
rook/cassandra
by rook
Apache Cassandra是一款开源、分布式的宽列存储NoSQL数据库管理系统,旨在高效处理大规模结构化数据,提供高可用性、线性可扩展性和分布式架构支持。
1M+ pulls
上次更新:3 年前
ubuntu/cassandra logo
ubuntu/cassandra
by Canonical
认证
Apache Cassandra是开源NoSQL分布式数据库,由Canonical维护长期版本,提供可扩展性和高可用性,适合关键任务数据存储,该镜像基于Ubuntu,已停止维护但现有标签仍可能接收安全更新。
350K+ pulls
上次更新:2 年前
amd64/cassandra logo
amd64/cassandra
by amd64
Apache Cassandra 是一款开源分布式数据库管理系统,旨在跨多台普通服务器处理大量数据,提供高可用性且无单点故障,支持多数据中心集群和异步无主复制。
1100K+ pulls
上次更新:1 个月前
arm64v8/cassandra logo
arm64v8/cassandra
by arm64v8
Apache Cassandra 是一个开源的分布式存储系统。
9100K+ pulls
上次更新:1 个月前

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

登录仓库拉取

通过 Docker 登录认证访问私有仓库

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

Docker Compose

Docker Compose 项目配置

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

宝塔面板

在宝塔面板一键配置镜像

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

极空间

极空间 NAS 系统配置服务

爱快路由

爱快 iKuai 路由系统配置

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

专属域名拉取

无需登录使用专属域名

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像支持哪些镜像仓库?

专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
library/cassandra
官方博客Docker 镜像使用技巧与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
提交工单
免费获取在线技术支持请 提交工单,官方QQ群:13763429 。
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
免费获取在线技术支持请提交工单,官方QQ群: 。
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
官方邮箱:点击复制邮箱
©2024-2026 源码跳动
官方邮箱:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.
轩辕镜像 官方专业版 Logo
轩辕镜像轩辕镜像官方专业版
首页个人中心搜索镜像
交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 13763429