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

如何从现有Docker Swarm集群的stack中提取docker-compose.yml配置?

问题解决方案

一、从现有Stack导出对应YML配置的自动化方法

有两种可行的自动化方案,优先推荐Portainer直接导出的方式,无需额外配置工具:

Portainer界面导出

即便你这个Stack不是通过Portainer创建的,Portainer也能读取Swarm集群的全量运行时配置生成对应YML:

  • 登录Portainer后进入对应Swarm集群的「Stacks」列表,点击目标Stack进入详情页
  • 切换到「Editor」标签页,Portainer会自动拉取当前Stack下所有服务的实时运行配置,生成符合标准的Docker Compose YML文件,直接复制内容或者点击导出按钮保存即可,生成的配置会包含你部署后对服务做的所有调整,比原始YML更贴合当前实际运行状态。

命令行导出

如果你需要在终端操作,可以用工具批量拉取配置生成YML:

  • 先安装docker-stack-gen工具,执行命令 docker-stack-gen <你的Stack名称> > docker-compose.yml 即可生成对应配置文件
  • 你也可以自己编写jq脚本处理docker stack inspect <Stack名称>的输出,按照Compose格式规则拼接即可。

二、无需docker stack deploy关联新服务到现有Stack的方法

Docker Swarm的Stack归属完全通过服务标签标记实现,不需要依赖原始YML,也不需要执行docker stack deploy命令,操作方式如下:

Portainer界面操作

新建服务时加对应标签即可:

  • 新建服务的配置页面,找到「Labels」配置项,新增一条标签:
    键:com.docker.stack.namespace
    值:你要关联的目标Stack的名称
  • 完成服务创建后,该服务会自动被归类到目标Stack下,Portainer可以正常识别这个关联关系。

命令行操作

创建服务时加上--label参数即可,示例命令:
docker service create --label com.docker.stack.namespace=my_target_stack nginx:alpine
执行后创建的nginx服务会自动归属于名称为my_target_stack的现有Stack。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 11:51:01