docker 1.12 swarm:Swarm是否有像kubernetes configMap这样的configuration存储

按照kubernetes文档: http ://kubernetes.io/docs/user-guide/configmap/

Kubernetes有一个ConfigMap API资源,用于保存可在pod中使用的configuration数据的键值对。

这看起来像一个非常有用的function,因为许多容器需要通过configuration文件和环境variables的组合来进行configuration

docker1.12 swarm中是否有类似的function?

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

唯一支持的是Docker中的外部env文件( 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 )。

这些configuration很好地保留了映像的外观,但是它们依赖于环境variables,所以你不能将整个configuration文件外部化(例如用于nginx或者Prometheus)。 另外,您无法单独更新部署/服务中的env文件,这可能与K8s一起使用。

解决方法:您可以使用env文件中的variables来构buildconfiguration文件。

我猜迟早Docker会添加这些function。 目前,Swarm还处于初期阶段,因此对于需要等待的高级用例(中长期来说,所有平台都会有类似的function),构build自己的hack / woraround,或者使用具有该function的K8s集成。

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