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

时间:2020-08-19 09:49:08

标签: docker docker-swarm docker-swarm-mode

我正在运行具有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

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

1 个答案:

答案 0 :(得分:0)

作为对

的回应

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

根据Docker API文档:

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

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

相关问题