Масштабирование контейнеров Docker в Rancher с разными, но постоянными томами

В настоящее время я пытаюсь преодолеть разрыв между постоянными, но уникальными томами при масштабировании контейнеров с помощью Rancher (альтернативно Docker Compose, поскольку это более абстрактный вопрос).

Возьмем в качестве примера сервер Minecraft. У меня есть служба, определенная в Rancher/Compose, которая использует именованный том в качестве своего каталога данных/мира (например, -v minecraft_data:/data, где образ Minecraft загружает свои файлы мира из этого каталога /данных) . Причина, по которой я использую такой именованный том, заключается в том, что я хочу, чтобы он сохранялся между обновлениями службы (например, я меняю версию образа или хочу изменить некоторые переменные среды), что было бы невозможно с анонимным томом.

Теперь, когда я пытаюсь масштабировать свою службу, я либо получаю несколько контейнеров, обращающихся к одним и тем же данным (что не очень хорошо для многих случаев использования), либо теряю возможность обновления службы при использовании анонимных томов.

Существуют ли какие-либо инструменты, лучшие практики или шаблоны, которые могут помочь в решении этой проблемы?


person RikuXan    schedule 02.04.2016    source источник


Ответы (2)


В текущих версиях 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, с соответствующими параметрами.

person Scott Anderson    schedule 21.02.2017
comment
Это также возможно сделать в графическом интерфейсе Rancher? Из документации по объему тома (docs.rancher. com/rancher/v1.4/en/rancher-services/), кажется, мне нужно установить драйвер хранилища, отличный от простого локального хранилища, чтобы получить эту опцию. - person RikuXan; 23.02.2017
comment
Вы можете создавать тома с областью действия среды из графического интерфейса после добавления драйвера из каталога. Чтобы получить для каждого контейнера, пока это только вариант в синтаксисе компоновки (начиная с 1.4) - person Scott Anderson; 23.02.2017

Я думаю, что вы хотите иметь разные экземпляры всего проекта. scale подразумевает идентичные клоны, но если у них разные данные, то они не идентичны.

Вместо использования масштаба я бы запускал разные экземпляры с разными именами проектов: https://docs.docker.com/compose/overview/#multiple-isolated-environments-on-a-single-host

person dnephin    schedule 04.04.2016
comment
Вероятно, это правда, я просто надеялся, что будет способ легко автоматизировать это так же, как работает масштабирование (т. Е. Контейнеры и тома получают порядковый номер). Я могу себе представить, что довольно скоро в стеке будет выглядеть несколько беспорядочно создание новой службы для каждого необходимого контейнера. - person RikuXan; 05.04.2016