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

在Rancher中扩展Docker容器,使用不同但持久的卷,docker,docker-compose,rancher,Docker,Docker Compose,Rancher,我目前正试图在使用Rancher(或者Docker Compose,因为这更像是一个抽象的问题)扩展容器时,弥合持久但独特的卷之间的差距 以Minecraft服务器为例,我在Rancher/Compose中定义了一个服务,该服务使用命名卷作为其数据/世界目录(例如,-v Minecraft_data:/data,其中Minecraft映像从该/数据目录加载其世界文件)。我使用这样一个命名卷的原因是,我希望它在服务升级之间保持不变(例如,我正在更改映像版本,或者希望更改一些环境变量),这在匿名卷中

我目前正试图在使用Rancher(或者Docker Compose,因为这更像是一个抽象的问题)扩展容器时,弥合持久但独特的卷之间的差距

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

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


是否有任何工具、最佳实践或模式可以帮助解决此问题?

我认为您想要的是整个项目的不同实例<代码>缩放表示相同的克隆,但如果它们具有不同的数据,则它们不相同


我不使用scale,而是使用不同的项目名称启动不同的实例:

我认为您想要的是整个项目的不同实例<代码>缩放表示相同的克隆,但如果它们具有不同的数据,则它们不相同


我不使用scale,而是使用不同的项目名称启动不同的实例:

在当前版本的rancher(目前是v1.4)中,可以在环境基础设施级别插入。这允许您创建范围在环境、堆栈或容器上的卷

对于您的用例,听起来每个容器范围就是您所需要的。使用
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
将使用一个容器和一个唯一的卷创建堆栈和服务
rancher scale foo=2
将创建另一个具有自己卷的容器等。您还可以为每个卷指定卷存储驱动程序,如
rancher ebs
rancher nfs
及其各自的选项。

在rancher的当前版本中(此时为v1.4)可以在环境基础架构级别插入。这允许您创建范围在环境、堆栈或容器上的卷

对于您的用例,听起来每个容器范围就是您所需要的。使用
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
将使用一个容器和一个唯一的卷创建堆栈和服务
rancher scale foo=2
将创建另一个具有自己卷的容器,等等。您还可以为每个卷指定卷存储驱动程序,如
rancher ebs
rancher nfs
及其各自的选项。

这可能是正确的,我只是希望有一种方法可以像scale工作一样轻松地实现自动化(即容器和卷获得一个连续的数字)。我可以想象,很快为所需的每个容器创建一个新的服务时,堆栈中会显得有些混乱。这可能是真的,我只是希望有一种方法可以轻松地自动化,就像缩放一样(即容器和卷获得一个连续的数字)。我可以想象,很快为每一个需要的容器创建一个新的服务时,堆栈中看起来会有些混乱。在Rancher GUI中也可以这样做吗?通过阅读volume scope文档(),我似乎必须安装存储驱动程序,而不是简单的本地存储来获得该选项。从目录添加驱动程序后,您可以从GUI创建环境范围的卷。要获取每个容器,到目前为止(从1.4开始),它似乎只是compose语法中的一个选项。在Rancher GUI中也可以这样做吗?通过阅读volume scope文档(),我似乎必须安装存储驱动程序,而不是简单的本地存储来获得该选项。从目录添加驱动程序后,您可以从GUI创建环境范围的卷。要获取每个容器,到目前为止,它似乎只是compose语法中的一个选项(从1.4开始)