我将 docker 置于群模式并执行以下操作
echo "'admin'" | docker secret create password -
docker service create \
--network="host" \
--secret source=password,target=password \
-e PASSWORD='/run/secrets/password' \
<image>
我无法通过 docker 服务传递通过环境变量创建的密码 secret 。
请帮我找出我哪里出错了
问候
萨蒂扬维什
最佳答案
您误解了 docker secret 的概念。
创建 secret 的重点是避免将敏感信息放入环境变量中。
在您的示例中, PASSWORD
环境变量将简单地携带值 /run/secrets/password
,它是一个文件名,而不是密码 admin
。
docker secrets 的一个有效用法是,您的 docker-image 从该文件中读取密码。
查看文档 here 尤其是关于 MySQL 的示例:
the environment variables MYSQL_PASSWORD_FILE and MYSQL_ROOT_PASSWORD_FILE to point to the files /run/secrets/mysql_password and /run/secrets/mysql_root_password. The mysql image reads the password strings from those files when initializing the system database for the first time.
简而言之:您的 docker 镜像应该读取文件
/run/secrets/password
的内容
关于Docker secret 作为环境变量传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52492359/