来自守护进程的错误响应:rpc 错误:代码 = InvalidArgument desc = 只允许更新标签

Rya*_*der 5 docker docker-swarm

我有

Error response from daemon: rpc error: code = InvalidArgument desc = only updates to Labels are allowed
Run Code Online (Sandbox Code Playgroud)

重新部署堆栈时

docker stack deploy -c docker-compose.yml --with-registry-auth monitoring
Run Code Online (Sandbox Code Playgroud)

Moh*_*asm 15

不幸的是,正如Ryabchenko Alexander所说,docker配置无法更新,请参阅 moby 问题

在一种方法中,您可以使用命令删除使用新配置的服务docker service rm service_name

然后删除配置docker config rm config_name并重新部署堆栈以更新配置并重新创建删除的服务。

更新:如果有必要没有停机,请参阅此评论

  • 这种方法比删除整个堆栈更好! (3认同)

Erf*_*fun 8

建议的删除堆栈/服务方法会带来停机时间

幸运的是,有一个无需停机即可解决此问题的巧妙解决方法。只需为您的配置/秘密设置一个名称,并在每次运行命令时借助环境变量更改该名称docker stack deploy

version: '3.7'
services:
  nginx:
    image: nginx:alpine
    configs:
      - source: nginxconf
        target: /etc/nginx/foobar.conf
configs:
  nginxconf:
    name: nginx.conf-${CONFIG_VERSION:-0}
    file: ./nginx.conf
Run Code Online (Sandbox Code Playgroud)

对于下一个部署,首先更改该变量,然后运行docker stack deploy

CONFIG_VERSION=1 docker stack deploy -c docker-compose.yml mystack
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多。