Docker机密作为环境变量传递

时间:2018-09-25 07:00:42

标签: docker docker-secrets

我将docker设置为集群模式,并执行了以下操作

echo "'admin'" | docker secret create password -
docker service create \
--network="host" \
--secret source=password,target=password \
-e PASSWORD='/run/secrets/password' \
<image>

我无法通过docker服务传递通过环境变量创建的密码机密。

请帮我解决问题

问候 萨蒂扬韦什

1 个答案:

答案 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

的内容