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

Docker Stack部署报错:configs不允许content属性求助

问题

我的Docker版本为25.0.5(客户端和服务端一致),Docker Compose版本为v2.29.1,已完成Swarm初始化。使用如下简单Compose文件:

configs:
  cfg:
    content: This is my content

执行docker stack config或docker stack deploy命令时均报错:

# docker stack config -c cfg.yaml 
configs.cfg Additional property content is not allowed
# docker stack deploy -c cfg.yaml p1
configs.cfg Additional property content is not allowed

根据Docker官方文档,content和environment属性在Compose v2.23.1版本中新增,我当前使用的版本满足要求,且尝试v2.23.1、v2.23.2版本后仍出现相同错误。另外通过tcpdump发现,错误来自客户端(Docker Compose),未请求服务端。请问我忽略了什么?

附版本信息:

# docker version
Client:
 Version:           25.0.5
 API version:       1.44
 Go version:        go1.21.8
 Git commit:        5dc9bcc
 Built:             Tue Mar 19 15:04:17 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          25.0.5
 API version:      1.44 (minimum version 1.24)
 Go version:       go1.21.8
 Git commit:       e63daec
 Built:            Tue Mar 19 15:05:39 2024
 OS/Arch:          linux/amd64
 Experimental:     false
 containerd:
  Version:          v1.7.13
 GitCommit:        7c3aca7a610df76212171d200ca3811ff6096eb8
 runc:
  Version:          1.1.12
 GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
 GitCommit:        de40ad0
# docker compose version
Docker Compose version v2.29.1
#

解决方案

问题核心是**docker stack系列命令遵循Swarm原生栈配置规范,不支持Compose v2新增的content字段**——哪怕你的Compose版本达标也没用,因为docker stack是Docker客户端直接对接Swarm API的命令,并非由Compose CLI处理。

你有两种可行的解决方式:

方式1:改用docker compose deploy部署到Swarm

保留原Compose文件,执行以下命令(确保Swarm已初始化):

docker compose deploy -c cfg.yaml p1

docker compose deploy是Compose CLI提供的Swarm部署命令,完全支持Compose spec中新增的content字段。

方式2:预先创建Swarm Config,再在栈文件中引用

  1. 先通过命令行创建目标config:
echo "This is my content" | docker config create cfg -
  1. 修改Compose文件,将config声明为外部资源:
configs:
  cfg:
    external: true
  1. 再执行docker stack deploy完成部署:
docker stack deploy -c cfg.yaml p1

补充说明:你观察到错误来自客户端,是因为docker stack config在本地解析栈文件时,会严格按照Swarm规范校验字段,发现content不被允许后直接报错,不会发起服务端请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:08:11