问题描述
我正在运行具有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进行标识。
这意味着以它的名字命名秘密很可能无法解决问题。我开始怀疑,此错误消息没有描述实际发生的事情(或至少没有完全描述)。