警告: 这是基于开发中版本的Apache Cassandra 4.0.x预发布构建,目前不适合生产环境使用。此容器构建自https://hub.docker.com/r/datastax/cassandra%EF%BC%8C%E7%9B%B4%E8%87%B3%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8F%E6%94%AF%E6%8C%814.0%E7%89%88%E6%9C%AC%E3%80%82
此镜像基于Apache Cassandra 4.0.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-4_0_0:tag
...其中some-cassandra是你要分配给容器的名称,tag是指定你想要的Cassandra版本的标签。有关相关标签列表,请参见上文。
使用下文记录的环境变量,可以实现两种集群场景:同一台机器上的实例和不同机器上的实例。对于同一台机器,按上述方法启动实例。要启动其他实例,只需告诉每个新节点第一个节点的位置。
console$ docker run --name some-cassandra2 -d --network some-network -e CASSANDRA_SEEDS=some-cassandra datastax/cassandra-mgmtapi-4_0_0: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-4_0_0: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-4_0_0:tag
cqlsh连接到Cassandra以下命令启动另一个Cassandra容器实例,并针对原始Cassandra容器运行cqlsh(Cassandra查询语言shell),允许你对数据库实例执行CQL语句:
console$ docker run -it --network some-network --rm datastax/cassandra-mgmtapi-4_0_0: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文件。有多种方法可以将此文件提供给容器(通过简短的Dockerfile使用FROM + COPY,通过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应用cassandra-rackdc.properties,你必须将CASSANDRA_ENDPOINT_SNITCH设置为使用"GossipingPropertyFileSnitch",否则此变量将无效。
CASSANDRA_RACK:此变量设置此节点的机架名称。它会设置cassandra-rackdc.properties的rack选项。为了让Cassandra应用cassandra-rackdc.properties,你必须将CASSANDRA_ENDPOINT_SNITCH设置为使用"GossipingPropertyFileSnitch",否则此变量将无效。
CASSANDRA_ENDPOINT_SNITCH:此变量设置此节点将使用的snitch实现。它会设置cassandra.yml的endpoint_snitch选项。
重要提示:有多种方法可以存储Docker容器中运行的应用程序使用的数据。我们鼓励cassandra镜像的用户熟悉可用的选项,包括:
让Docker通过使用其自己的内部卷管理将数据库文件写入主机系统的磁盘来管理数据库数据的存储。这是默认选项,对用户来说简单且相当透明。缺点是对于直接在主机系统(即容器外部)运行的工具和应用程序来说,文件可能难以定位。
在主机系统上(容器外部)创建数据目录,并将其挂载到容器内可见的目录。这将数据库文件放置在主机系统上的已知位置,并使主机系统上的工具和应用程序易于访问这些文件。缺点是用户需要确保目录存在,并且主机系统上的目录权限和其他安全机制设置正确。
Docker文档是了解不同存储选项和变体的良好起点,有多个博客和论坛帖子讨论并提供该领域的建议。我们在此仅展示上述后一种选项的基本步骤:
在主机系统的合适卷上创建数据目录,例如/my/own/datadir。
像这样启动cassandra容器:
console$ docker run --name some-cassandra -v /my/own/datadir:/var/lib/cassandra -d datastax/cassandra-mgmtapi-4_0_0: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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务