注意:这是 cassandra 镜像 的 amd64 架构构建的“按架构”仓库——更多信息,请参见镜像文档中的“非 amd64 架构?”和***镜像 FAQ 中的“Git 中镜像的源代码已更改,该怎么办?”。
维护者:
Docker 社区
获取帮助:
Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow
Dockerfile 链接5.0.5, 5.0, 5, latest, 5.0.5-jammy, 5.0-jammy, 5-jammy, jammy
4.1.10, 4.1, 4, 4.1.10-jammy, 4.1-jammy, 4-jammy
4.0.18, 4.0, 4.0.18-jammy, 4.0-jammy
3.11.19, 3.11, 3, 3.11.19-jammy, 3.11-jammy, 3-jammy
3.0.32, 3.0, 3.0.32-jammy, 3.0-jammy
问题反馈地址:
[***]
支持的架构:(更多信息)
amd64、arm32v7、arm64v8、ppc64le、s390x
已发布镜像制品详情:
repo-info 仓库的 repos/cassandra/ 目录(历史记录)
(镜像元数据、传输大小等)
镜像更新:
official-images 仓库的 library/cassandra 标签
official-images 仓库的 library/cassandra 文件(历史记录)
本描述的来源:
docs 仓库的 cassandra/ 目录(历史记录)
Apache Cassandra 是一款开源分布式数据库管理系统,旨在跨多台普通服务器处理大量数据,提供高可用性且无单点故障。Cassandra 支持跨多个数据中心的集群,通过异步无主复制为所有客户端提供低延迟操作。
***.org/wiki/Apache_Cassandra
!logo
cassandra 服务器实例启动 Cassandra 实例非常简单:
console$ docker run --name some-cassandra --network some-network -d amd64/cassandra:tag
……其中 some-cassandra 是你要分配给容器的名称,tag 是指定你想要的 Cassandra 版本的标签。参见上文列表获取相关标签。
使用下文记录的环境变量,有两种集群场景:同一台机器上的实例和不同机器上的实例。对于同一台机器,按上述方式启动实例即可。要启动其他实例,只需告知每个新节点第一个节点的位置。
console$ docker run --name some-cassandra2 -d --network some-network -e CASSANDRA_SEEDS=some-cassandra amd64/cassandra:tag
对于不同机器(例如,云服务提供商上的两台虚拟机),你需要告知 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 amd64/cassandra: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 amd64/cassandra:tag
cqlsh 连接到 Cassandra以下命令启动另一个 Cassandra 容器实例,并针对你的原始 Cassandra 容器运行 cqlsh(Cassandra 查询语言 shell),允许你对数据库实例执行 CQL 语句:
console$ docker run -it --network some-network --rm amd64/cassandra cqlsh some-cassandra
有关 CQL 的更多信息,请参见 Cassandra 文档。
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、通过 Docker 配置、通过运行时绑定挂载等),具体细节留给读者自行探索。
要使用不同的文件名(例如,避免所有镜像提供的配置行为),可将 -Dcassandra.config=/path/to/cassandra.yaml 作为镜像的参数(即 docker run ... amd64/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_ENDPOINT_SNITCH 设置为使用 "GossipingPropertyFileSnitch",Cassandra 才会应用 cassandra-rackdc.properties,否则此变量无效。
CASSANDRA_RACK:此变量设置此节点的机架名称。它会设置 cassandra-rackdc.properties 的 rack 选项。你必须将 CASSANDRA_ENDPOINT_SNITCH 设置为使用 "GossipingPropertyFileSnitch",Cassandra 才会应用 cassandra-rackdc.properties,否则此变量无效。
CASSANDRA_ENDPOINT_SNITCH:此变量设置此节点将使用的端点探测器实现。它会设置 cassandra.yml 的 endpoint_snitch 选项。
重要提示:有多种方式存储 Docker 容器中运行的应用程序使用的数据。我们建议 cassandra 镜像的用户熟悉可用选项,包括:
让 Docker 通过 使用其自己的内部卷管理将数据库文件写入主机系统的磁盘 来管理数据库数据的存储。这是默认方式,对用户而言简单且相对透明。缺点是对于直接在主机系统(即容器外部)运行的工具和应用程序,可能难以定位这些文件。
在主机系统上(容器外部)创建数据目录,并 将其挂载到容器内可见的目录。这会将数据库文件放置在主机系统上的已知位置,便于主机系统上的工具和应用程序访问这些文件。缺点是用户需要确保目录存在,并且主机系统上的目录权限和其他安全机制配置正确。
以下是后者的基本步骤:
在主机系统的合适卷上创建数据目录,例如 /my/own/datadir。
如下启动 cassandra 容器:
console$ docker run --name some-cassandra -v /my/own/datadir:/var/lib/cassandra -d amd64/cassandra:tag
命令中的 -v /my/own/datadir:/var/lib/cassandra 部分将主机系统的 /my/own/datadir 目录挂载为容器内的 /var/lib/cassandra,Cassandra 默认会将数据文件写入该目录。
如果容器启动时没有初始化数据库,则会创建默认数据库。虽然这是预期行为,但这意味着在初始化完成前,容器不会接受传入连接。这可能在使用自动化工具(如 Docker Compose)同时启动多个容器时导致问题。
查看本镜像中包含的软件的 许可信息。
与所有 Docker 镜像一样,这些镜像可能还包含其他软件,这些软件可能采用其他许可协议(例如基础发行版中的 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429