此镜像基于Apache Cassandra 3.11.x基础镜像构建,包含https://github.com/datastax/management-api-for-apache-cassandra%E5%92%8C%E4%BF%AE%E6%94%B9%E7%9A%84%E5%85%A5%E5%8F%A3%E7%82%B9%E3%80%82
获取帮助:
DataStax社区论坛
维护者:
https://github.com/datastax/management-api-for-apache-cassandra
Apache Cassandra是一个开源分布式数据库管理系统,旨在跨多台普通服务器处理大量数据,提供高可用性且无单点故障。Cassandra支持跨多个数据中心的集群,通过异步无主复制为所有客户端提供低延迟操作。
***.org/wiki/Apache_Cassandra
!https://raw.githubusercontent.com/docker-library/docs/fb8596d619703fc556e6d56e***d8bfdf***/cassandra/logo.png
cassandra服务器实例启动Cassandra实例非常简单:
console$ docker run --name some-cassandra --network some-network -d datastax/cassandra-mgmtapi-3_11_6:tag
其中some-cassandra是您要分配给容器的名称,tag是指定所需Cassandra版本的标签。请参考上方列表获取相关标签。
使用下文记录的环境变量,有两种集群场景:同一机器上的实例和不同机器上的实例。对于同一机器,按上述方法启动实例。要启动其他实例,只需告诉每个新节点第一个节点的位置。
console$ docker run --name some-cassandra2 -d --network some-network -e CASSANDRA_SEEDS=some-cassandra datastax/cassandra-mgmtapi-3_11_6:tag
对于不同机器(如云提供商上的两个VM),需要告诉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 datastax/cassandra-mgmtapi-3_11_6: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 datastax/cassandra-mgmtapi-3_11_6:tag
cqlsh连接到Cassandra以下命令启动另一个Cassandra容器实例,并针对原始Cassandra容器运行cqlsh(Cassandra查询语言shell),允许您对数据库实例执行CQL语句:
console$ docker run -it --network some-network --rm datastax/cassandra-mgmtapi-3_11_6:tag 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文件。有多种方式可将此文件提供给容器(通过包含FROM+COPY的简短Dockerfile、通过Docker配置、通过运行时绑定挂载等),具体细节留给读者自行实践。
要使用不同的文件名(例如,避免所有镜像提供的配置行为),请使用-Dcassandra.config=/path/to/cassandra.yaml作为镜像的参数(如docker run ... 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镜像的用户熟悉可用选项,包括:
Docker文档是了解不同存储选项和变体的良好起点,有多个博客和论坛帖子讨论并提供此领域的建议。我们在此仅展示上述后一种选项的基本过程:
在主机系统的合适卷上创建数据目录,例如/my/own/datadir。
像这样启动cassandra容器:
console$ docker run --name some-cassandra -v /my/own/datadir:/var/lib/cassandra -d datastax/cassandra-mgmtapi-3_11_6:tag
命令中的-v /my/own/datadir:/var/lib/cassandra部分将底层主机系统的/my/own/datadir目录挂载为容器内的/var/lib/cassandra,Cassandra默认会在此处写入数据文件。
如果容器启动时未初始化数据库,则会创建默认数据库。虽然这是预期行为,但这意味着在初始化完成前,它不会接受传入连接。这在使用自动化工具(如docker-compose)同时启动多个容器时可能会导致问题。
查看此镜像中包含的软件的许可证信息。
与所有Docker镜像一样,这些镜像可能还包含其他受其他许可证约束的软件(如基础发行版中的Bash等,以及主要包含软件的任何直接或间接依赖项)。
一些能够自动检测到的其他许可证信息可能位于https://github.com/docker-library/repo-info/tree/master/repos/cassandra%E4%B8%AD%E3%80%82
至于任何预构建镜像的使用,镜像用户有责任确保对此镜像的任何使用符合其中包含的所有软件的相关许可证。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务