注意:这是*** cassandra 镜像的 s390x 架构专用仓库——更多信息,请参见镜像文档中的“除 amd64 外的架构?”以及镜像常见问题中的“镜像源在 Git 中已更改,现在该怎么办?”。
维护者:
Docker社区
获取帮助:
Docker社区Slack、Server Fault、Unix & Linux 或 Stack Overflow
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
问题反馈地址:
[***]
支持的架构:(更多信息)
amd64、arm32v7、arm64v8、ppc64le、s390x
镜像 artifact 详情:
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 s390x/cassandra:tag
其中 some-cassandra 是你为容器分配的名称,tag 是指定 Cassandra 版本的标签。请参见上文列表获取相关标签。
使用下文记录的环境变量,有两种集群场景:同一台机器上的实例和不同机器上的实例。对于同一台机器,按上述方法启动第一个实例。要启动其他实例,只需告知每个新节点第一个节点的位置。
console$ docker run --name some-cassandra2 -d --network some-network -e CASSANDRA_SEEDS=some-cassandra s390x/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 s390x/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 s390x/cassandra:tag
cqlsh 连接到 Cassandra以下命令启动另一个 Cassandra 容器实例,并针对原始 Cassandra 容器运行 cqlsh(Cassandra 查询语言 shell),允许你对数据库实例执行 CQL 语句:
console$ docker run -it --network some-network --rm s390x/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 Configs、通过运行时绑定挂载等),具体细节留给用户自行探索。
若要使用不同的文件名(例如,避免所有镜像提供的配置行为),可将 -Dcassandra.config=/path/to/cassandra.yaml 作为镜像的参数(如 docker run ... s390x/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:此变量设置此节点将使用的 snitch 实现。它会设置 cassandra.yml 中的 endpoint_snitch 选项。
重要提示:有多种方式存储 Docker 容器中运行的应用程序使用的数据。我们建议 cassandra 镜像的用户熟悉可用选项,包括:
以下是后者的基本步骤:
在主机系统的合适卷上创建数据目录,例如 /my/own/datadir。
如下启动 cassandra 容器:
console$ docker run --name some-cassandra -v /my/own/datadir:/var/lib/cassandra -d s390x/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