You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何访问分离模式运行的Docker容器内的NATS CLI

问题根因

默认拉取的官方nats镜像为distroless极简构建版本,镜像内没有打包任何shell环境(bash、sh均不存在),也没有预装NATS CLI工具,所有尝试进入shell、调用常规系统命令的操作都会触发可执行文件不存在的报错。

操作指引

方案1:使用带CLI的镜像变体重建容器(本地测试推荐)

官方提供了预装完整NATS CLI、带基础shell环境的alpine标签镜像,适合本地试用调试场景:

  • 先删除当前创建的无shell容器:
docker rm -f my-nats
  • 用alpine版本镜像重新启动服务:
docker run --name my-nats -p 4222:4222 -d nats:alpine
  • CLI调用方式:
    • 不需要进入容器,直接在宿主机执行容器内的nats命令即可,例如检查服务连接状态:
docker exec my-nats nats server check connection
  • 需要连续执行多组CLI命令时,可以先进入容器内置的sh shell:
docker exec -ti my-nats sh

进入shell后直接输入nats即可唤起CLI工具,支持所有订阅、发布、服务管理操作。

方案2:保留现有运行容器,单独部署CLI客户端连接

如果不想中断当前运行的my-nats容器服务,可以单独启动临时的alpine版本NATS容器作为客户端,通过共享容器网络的方式连接现有服务,例如订阅test主题:

docker run --rm -ti --network container:my-nats nats:alpine nats sub test

将命令末尾的nats sub test替换为你需要执行的任意NATS CLI命令即可,执行完成后临时容器会自动销毁,不会残留冗余资源。

补充说明

默认的nats:latest镜像仅打包NATS服务核心二进制,做了极致的体积裁剪和攻击面收敛,仅适合不需要调试操作的生产部署场景。本地试用、需要频繁调用CLI操作的场景直接选用nats:alpine标签即可,镜像体积仅十余MB,不会产生额外的存储负担。

内容的提问来源于stack exchange,提问作者Yaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:03:25