Docker Swarm-创建新容器时的秘密问题

问题描述

我正在运行具有3个管理器节点和许多工作人员的Production Docker Swarm Cluster。

运行相同Docker和BTRFS版本的每个节点(经理,工作人员):

Server Version: 17.12.1-ce
Storage Driver: btrfs
Build Version: Btrfs v4.9.1
  Library Version: 102

我已部署了具有1个复制的服务。此服务使用机密。

"Secrets": [
{
    "File": {
        "Name": "/var/secret","UID": "0","GID": "0","Mode": 400
    },"SecretID": "vb8485hcixfhnqrp29m8lrfm2","SecretName": "supersecret"
}

这个秘密存在于Docker Swarm Manager Leader中:

{
    "ID": "vb8485hcixfhnqrp29m8lrfm2","Version": {
        "Index": 124153
    },"CreatedAt": "2020-08-17T12:22:29.656205519Z","UpdatedAt": "2020-08-17T12:22:29.656205519Z","Spec": {
        "Name": "supersecret","Labels": {}
    }
}

但是无法从此服务启动容器。当我尝试使用“ docker sevice update --force $ {service_name}”更新此服务时,总是退出容器,并显示错误:

Error response from daemon: unable to get secret from secret store: secret vb8485hcixfhnqrp29m8lrfm2 not found.

容器是/ var / lib / docker / container_ID /

中没有“ secrets”文件夹的创建者
drwx------. 1 root root    0 Aug 19 11:06 checkpoints
-rw-------. 1 root root 9305 Aug 19 11:41 config.v2.json
-rw-r--r--. 1 root root 1599 Aug 19 11:41 hostconfig.json
-rw-r--r--. 1 root root   13 Aug 19 11:41 hostname
-rw-r--r--. 1 root root  150 Aug 19 11:41 hosts
-rw-r--r--. 1 root root   48 Aug 19 11:41 resolv.conf
-rw-r--r--. 1 root root   71 Aug 19 11:41 resolv.conf.hash
drwx------. 1 root root    0 Aug 19 11:06 shm

我不知道该怎么办或出了什么问题。您的帮助将不胜感激。

解决方法

作为对

的回应

您是否尝试通过机密名称而不是ID来引用机密?老实说,即使有一个稳定的自我声明名称,我也绝不会通过随机生成的ID来引用机密。 –梅丁

根据Docker API文档:

SecretName是此引用所引用的秘密的名称,但这是 仅用于查找/显示目的。参考中的秘密 将通过其ID进行标识。

这意味着以它的名字命名秘密很可能无法解决问题。我开始怀疑,此错误消息没有描述实际发生的事情(或至少没有完全描述)。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...