我将docker设置为集群模式,并执行了以下操作
echo "'admin'" | docker secret create password -
docker service create \
--network="host" \
--secret source=password,target=password \
-e PASSWORD='/run/secrets/password' \
<image>
我无法通过docker服务传递通过环境变量创建的密码机密。
请帮我解决问题
问候 萨蒂扬韦什
答案 0 :(得分:2)
您误解了Docker机密的概念。 创建机密的全部目的是避免将敏感信息放入环境变量中。
在您的示例中,PASSWORD
环境变量将仅带有值/run/secrets/password
,该值是文件名,而不是密码是admin
。
一个有效的docker机密案例是,您的docker-image从该文件读取密码。 检出文档here,尤其是有关MySQL的示例:
环境变量MYSQL_PASSWORD_FILE和MYSQL_ROOT_PASSWORD_FILE指向文件/ run / secrets / mysql_password和/ run / secrets / mysql_root_password。首次初始化系统数据库时,mysql映像将从这些文件中读取密码字符串。
简而言之:您的docker映像应读取文件/run/secrets/password