Docker secret 作为环境变量传递

标签 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 服务传递通过环境变量创建的密码 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/

相关文章:

构建时的 Docker secret

docker - Docker撰写覆盖主机变量

docker - Burp Suite:无法拦截来自Docker镜像应用程序的流量

kubernetes - 使用除文件名以外的 --from-file 时如何设置 kubernetes key 名称?

非 root 用户的 docker secret

docker - 如何远程连接到 docker swarm?

docker-compose 没有 swarm 的 secret

docker - Docker 容器中的 DNS 服务器

linux - Arch linux [Armv7] docker 安装

docker - Azure App Service的最佳部署替代方案