当您向 swarm 添加配置时,Docker 会通过双向 TLS 连接将配置发送到 swarm 管理器。配置存储在经过加密的 Raft 日志中。整个 Raft 日志在其他管理器之间复制,确保配置的高可用性保证与其余 swarm 管理数据相同。
当您授予新创建或正在运行的服务对配置的访问权限时,该配置将作为文件安装在容器中。容器内挂载点的位置默认/在 Linux 容器中。在 Windows 容器中,配置全部挂载到C:\\ProgramData\\Docker\\configs所需位置并创建符号链接,默认为 C:\\.
您可以使用数字 ID 或用户或组的名称为配置设置所有权(uid和gid)。您还可以指定文件权限 ( mode)。Windows 容器将忽略这些设置。
如果未设置,则配置由运行容器命令的用户(通常root)和该用户的默认组(也通常root)拥有。
如果未设置,则配置具有全局可读权限 (mode 0444),除非umask在容器中设置了a ,在这种情况下,模式受该umask值的影响。
您可以随时更新服务以授予其访问其他配置的权限或撤销其对给定配置的访问权限。
如果节点是 swarm 管理器或者它正在运行已被授予访问配置的服务任务,则该节点只能访问配置。当容器任务停止运行时,共享给它的配置将从该容器的内存文件系统中卸载并从节点的内存中刷新。
如果节点在运行可以访问配置的任务容器时失去与 swarm 的连接,则任务容器仍然可以访问其配置,但在节点重新连接到 swarm 之前无法接收更新。
您可以随时添加或检查单个配置,或列出所有配置。您无法删除正在运行的服务正在使用的配置。有关在不中断正在运行的服务的情况下删除配置的方法,请参阅轮换配置。
要更轻松地更新或回滚配置,请考虑向配置名称添加版本号或日期。通过控制给定容器内配置的挂载点的能力,这变得更加容易。
要更新堆栈,请更改您的 Compose 文件,然后重新运行docker stack deploy -c. 如果您在该文件中使用新配置,您的服务就会开始使用它们。请记住,配置是不可变的,因此您无法更改现有服务的文件。相反,您创建一个新配置以使用不同的文件
您可以运行docker stack rm以停止应用程序并取下堆栈。这将删除由docker stack deploy具有相同堆栈名称创建的任何配置。这将删除所有配置,包括服务未引用的配置和docker service update –config-rm.