2016-08-05 45 views

回答

2

不幸的是,Docker(即使在1.12的群集模式下)也不支持你可以用ConfigMaps(也没有秘密)解决的各种用例。

唯一支持的是Docker( https://docs.docker.com/engine/reference/commandline/run/#/set-environment-variables-e-env-env-file)和Compose(https://docs.docker.com/compose/compose-file/#/env-file)中的外部env文件。

这些很好的保持配置不在图像中,但它们依赖于环境变量,因此您不能仅将整个配置文件外部化(例如用于nginx或Prometheus)。此外,您无法单独从部署/服务中更新env文件,这可能与K8s一起使用。

解决方法:您可以使用env文件中的变量来构建配置文件。

我猜迟早会有Docker会添加这些功能。目前,Swarm还处于初期阶段,因此对于需要等待的高级用例(所有平台的中期到长期都会有相似的功能),构建自己的Hack/Woraround,或者使用K8s集成。

旁注:对于秘密存储我会推荐Hashicorp的Vault。但是,对于配置,它可能不是正确的工具。

+0

更新:Docker Swarm现在支持1.13和更新的秘密。但我不认为ConfigMaps支持... –