在Rancher中使用不同但是持久的卷来扩展Docker容器

我目前正试图弥合持久,但独特的卷之间的差距,同时扩大与Rancher的容器(或者Docker撰写,因为这是一个更抽象的问题)。

以Minecraft服务器为例,我在Rancher / Compose中定义了一个使用命名卷作为其数据/世界目录的服务(例如-v minecraft_data:/ data,其中Minecraft图像从这个/ data目录加载其世界文件) 。 我使用这种命名卷的原因是,我希望它在服务升级(例如,我正在更改映像版本,或者想要更改一些环境variables)之间持续存在,这对于匿名卷来说是不可能的。

现在,当试图扩展我的服务时,我要么获取多个容器访问相同的数据(对于许多用例不是很好),要么在使用匿名卷时失去服务可升级性。

有什么工具,最佳实践或模式可以帮助解决这个问题吗?

在当前版本的牧场主(v1.4)中,可以在环境基础设施级别插入存储驱动程序 。 这使您可以创build作用于环境,堆栈或容器的卷。

对于你的用例,这听起来像每个容器的范围是你所需要的。 使用rancher-compose你可以这样做:

 version: '2' services: foo: image: busybox volumes: - bar:/var/lib/storage command: /bin/sh -c 'while true; do sleep 500; done' volumes: bar: per_container: true 

然后, rancher-compose up -d将创build一个容器和一个唯一卷的堆栈和服务。 rancher scale foo=2会使用自己的卷创build另一个容器等。您还可以为每个卷指定卷存储驱动程序,如rancher-ebsrancher-nfs及其各自的选项。

我想你想要的是有整个项目的不同实例。 scale意味着相同的克隆,但是如果他们有不同的数据,它们是不一样的。

我将使用不同的项目名称来启动不同的实例: https : //docs.docker.com/compose/overview/#multiple-isolated-environments-on-a-single-host