docker - 在Rancher中扩展具有不同但持久卷的Docker容器

标签 docker docker-compose rancher

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

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

现在,当尝试扩大服务规模时,要么让多个容器访问相同的数据(在许多用例中都不好),要么在使用匿名卷时失去服务的可升级性。

是否有任何工具,最佳做法或模式可能有助于解决此问题?

最佳答案

在当前版本的rancher(当前为v1.4)中,可以在环境基础结构级别插入storage drivers。这使您可以创建在环境,堆栈或容器范围内的卷。

对于您的用例,听起来每个容器都需要。使用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-ebsrancher-nfs及其各自的选项。

关于docker - 在Rancher中扩展具有不同但持久卷的Docker容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36379879/

相关文章:

reactjs - 如何在Prod中使用Docker和Nginx运行React?

kubernetes - cloudflared 出现 "failed to sufficiently increase receive buffer size"错误

kubernetes - Rancher K8s Helm

php - 如何编写PHP代码以执行两个功能

python - 如何使用docker进行部署开发?

docker - 在此目录或任何 docker compose 中找不到合适的配置文件(解决方案中未添加 docker-compose 部分)

docker - 在Dockerfile和docker-compose.yml中编写什么以在docker环境中传递本地包

vagrant - "Job for system-cloudinit@-var-tmp-hostname.yml.service failed because a configured resource limit was exceeded"

python - 从 docker 容器中隐藏节点核心数

docker - node_modules 的 kubernetes 卷