为了获得最佳性能和可移植性,您应该避免将重要数据直接写入容器的可写层,而应使用数据卷或绑定挂载。这个原则也适用于服务。
您可以为 swarm 中的服务创建两种类型的挂载,volume挂载或 bind挂载。无论您使用哪种类型的挂载,请--mount在创建服务时使用标志进行配置 ,或 在更新现有服务时使用--mount-add或--mount-rm标志进行配置。如果不指定类型,则默认为数据卷。
数据卷
数据卷是独立于容器存在的存储。swarm 服务下数据卷的生命周期类似于容器下的生命周期。卷比任务和服务更有效,因此必须单独管理它们的移除。可以在部署服务之前创建卷,或者如果在特定主机上安排任务时它们不存在于特定主机上,则会根据服务上的卷规范自动创建它们。
要将现有数据卷与服务一起使用,请使用以下--mount标志:
如果在将任务调度到特定主机时不存在具有相同的卷,则创建一个。默认的卷驱动程序是local. 要在此按需创建模式中使用不同的卷驱动程序,请使用以下--mount标志指定驱动程序及其选项:
绑定挂载
绑定挂载是来自调度程序为任务部署容器的主机的文件系统路径。Docker 将路径挂载到容器中。在 swarm 为任务初始化容器之前,文件系统路径必须存在。
以下示例显示了绑定安装语法:
挂载读写绑定:
挂载只读绑定: