已弃用:NATS Streaming Server已被弃用。关键错误修复和安全修复将持续到2023年6月。需要持久化功能的NATS应用应使用JetStream。
nats-streaming是NATS消息系统的高性能流服务器,提供云原生环境下的消息流处理能力,支持持久化消息存储和订阅机制。
流服务器本身与之前版本向后兼容,但v0.15.0+版本嵌入了NATS Server 2.0。如果使用嵌入式NATS服务器并尝试路由到v0.14.3及更早版本的服务器,会因NATS Server路由协议变更而失败。但可以将v0.15.0+连接到现有NATS集群,实现v0.15.0+与v0.14.3-流服务器的混合部署。
适用于需要可靠消息传递和流处理的云原生应用,如日志收集、事件驱动架构、微服务间通信等场景。注意:由于已弃用,新应用应优先考虑JetStream。
由于Windows Docker镜像构建限制,不带参数运行时将启动基于内存存储的NATS Streaming服务器,监听4222端口,监控端口8222。如需指定额外参数或修改选项,需显式指定可执行文件名:
bashdocker run -p 4223:4223 -p 8223:8223 nats-streaming nats-streaming-server -p 4223 -m 8223
如需指定入口点:
bashdocker run --entrypoint c:/nats-streaming-server/nats-streaming-server -p 4222:4222 -p 8222:8222 nats-streaming
向NATS Streaming服务器提供参数时,直接在命令行传递即可。例如,将监听端口和监控端口分别改为4223和8223:
bashdocker run -p 4223:4223 -p 8223:8223 nats-streaming -p 4223 -m 8223
如需指定入口点:
bashdocker run --entrypoint /nats-streaming-server -p 4222:4222 -p 8222:8222 nats-streaming
bash# 后台运行NATS Streaming服务器 # 暴露客户端端口4222和HTTP监控端口8222 docker run -d -p 4222:4222 -p 8222:8222 nats-streaming
带交互模式运行(非后台)的输出示例:
[1] 2022/10/11 14:57:50.404688 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.25.2 [1] 2022/10/11 14:57:50.404739 [INF] STREAM: ServerID: fbZJjwGYLBpNM5I8z23NSN [1] 2022/10/11 14:57:50.404741 [INF] STREAM: Go version: go1.19.2 [1] 2022/10/11 14:57:50.404743 [INF] STREAM: Git commit: [9e599667] [1] 2022/10/11 14:57:50.406004 [INF] Starting nats-server [1] 2022/10/11 14:57:50.406009 [INF] Version: 2.9.3 [1] 2022/10/11 14:57:50.406011 [INF] Git: [25e82d7] [1] 2022/10/11 14:57:50.406013 [INF] Name: NDQOBTB34ECZWAKAJAREPEXQPXGKUEJEZINCHV2CIHGGJQCSCVPQPU5W [1] 2022/10/11 14:57:50.406015 [INF] ID: NDQOBTB34ECZWAKAJAREPEXQPXGKUEJEZINCHV2CIHGGJQCSCVPQPU5W [1] 2022/10/11 14:57:50.406423 [INF] Listening for client connections on 0.0.0.0:4222 [1] 2022/10/11 14:57:50.406679 [INF] Server is ready [1] 2022/10/11 14:57:50.434935 [INF] STREAM: Recovering the state... [1] 2022/10/11 14:57:50.434945 [INF] STREAM: No recovered state [1] 2022/10/11 14:57:50.435271 [INF] STREAM: Message store is MEMORY [1] 2022/10/11 14:57:50.435303 [INF] STREAM: ---------- Store Limits ---------- [1] 2022/10/11 14:57:50.435306 [INF] STREAM: Channels: 100 * [1] 2022/10/11 14:57:50.435308 [INF] STREAM: --------- Channels Limits -------- [1] 2022/10/11 14:57:50.435310 [INF] STREAM: Subscriptions: 1000 * [1] 2022/10/11 14:57:50.435311 [INF] STREAM: Messages : 1000000 * [1] 2022/10/11 14:57:50.435313 [INF] STREAM: Bytes : 976.56 MB * [1] 2022/10/11 14:57:50.435315 [INF] STREAM: Age : unlimited * [1] 2022/10/11 14:57:50.435316 [INF] STREAM: Inactivity : unlimited * [1] 2022/10/11 14:57:50.435318 [INF] STREAM: ---------------------------------- [1] 2022/10/11 14:57:50.435320 [INF] STREAM: Streaming Server is ready
bashdocker run -d -p 4222:4222 -p 8222:8222 nats-streaming -store file -dir datastore
bashdocker run -d --name=nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 nats
bashdocker run -d --link nats-main nats-streaming -store file -dir datastore -ns nats://nats-main:4222
| 参数 | 说明 | 默认值 |
|---|---|---|
-cid, --cluster_id <string> | 集群ID | test-cluster |
-st, --store <string> | 存储类型 | MEMORY (可选: MEMORY|FILE|SQL) |
--dir <string> | 文件存储根目录 | - |
-mc, --max_channels <int> | 最大通道数(0表示无限制) | 100 |
-msu, --max_subs <int> | 每通道最大订阅数 | 1000 |
-mm, --max_msgs <int> | 每通道最大消息数 | *** |
-mb, --max_bytes <size> | 每通道消息总大小 | 976.56 MB |
-ma, --max_age <duration> | 消息最大存储时长 | unlimited |
-mi, --max_inactivity <duration> | 通道最大不活动时间 | unlimited |
-ns, --nats_server <string> | 外部NATS服务器URL | 嵌入式NATS服务器 |
-sc, --stan_config <string> | 流服务器配置文件路径 | - |
| 参数 | 说明 |
|---|---|
--clustered <bool> | 启用集群模式 |
--cluster_node_id <string> | 集群节点ID |
--cluster_bootstrap <bool> | 引导集群(自选举为领导者) |
--cluster_peers <string, ...> | 集群节点ID列表 |
--cluster_log_path <string> | 日志复制数据存储目录 |
| 参数 | 说明 |
|---|---|
--file_compact_enabled <bool> | 启用文件压缩 |
--file_compact_frag <int> | 文件碎片压缩阈值 |
--file_sync <bool> | 启用File.Sync刷新 |
--file_slice_max_msgs <int> | 每文件切片最大消息数 |
| 参数 | 说明 | 默认值 |
|---|---|---|
-a, --addr <string> | 绑定地址 | 0.0.0.0 |
-p, --port <int> | 客户端端口 | 4222 |
-m, --http_port <int> | HTTP监控端口 | - |
-c, --config <string> | NATS配置文件 | - |
完整命令行选项可通过运行 docker run nats-streaming --help 查看。
查看https://github.com/nats-io/nats-streaming-server/blob/master/LICENSE%E3%80%82%E6%AD%A4%E9%95%9C%E5%83%8F%E5%8F%AF%E8%83%BD%E5%8C%85%E5%90%AB%E5%85%B6%E4%BB%96%E8%BD%AF%E4%BB%B6%EF%BC%8C%E5%85%B6%E8%AE%B8%E5%8F%AF%E8%AF%81%E4%BF%A1%E6%81%AF%E5%8F%AF%E5%9C%A8https://github.com/docker-library/repo-info/tree/master/repos/nats-streaming%E4%B8%AD%E6%89%BE%E5%88%B0%E3%80%82%E4%BD%BF%E7%94%A8%E6%AD%A4%E9%95%9C%E5%83%8F%E9%9C%80%E7%A1%AE%E4%BF%9D%E7%AC%A6%E5%90%88%E6%89%80%E6%9C%89%E5%8C%85%E5%90%AB%E8%BD%AF%E4%BB%B6%E7%9A%84%E8%AE%B8%E5%8F%AF%E8%A6%81%E6%B1%82%E3%80%82
有关NATS Streaming服务器的详细配置说明,请参考官方文档。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务