Должен ли я использовать systemd или docker-compose, чтобы поддерживать контейнеры Docker в моей системе? - PullRequest
0 голосов
/ 24 сентября 2018

Мы говорим о контейнерах Docker, таких как sysdig, консул, fluentd, mesos-slave и т. Д., Которые мы используем практически на всех машинах.

В настоящее время мы используем Ubuntu Upstart и CoreOS Fleetctl.Мы переходим на Ubuntu 18.04 LTS и в настоящее время рассматриваем вопрос о том, следует ли преобразовать конфигурацию в:

  • Systemd или
  • Docker-compose

Systemd может сделатьпроверка работоспособности и автоматическое восстановление процессов, которые снова отключилисьЭто также больше всего похоже на Upstart, который мы интенсивно используем.Наши файлы конфигурации Upstart создаются из облачной конфигурации следующим образом:

- >
    /usr/local/bin/generate-docker-upstart fluentd registry/fluentd:1.0.1
    -e HOST=elasticsearch
    -e PORT=9200
    -e INDEX=fluentd
    -e NODE=`hostname -s`
    -e ROLE=app
    -e ENVIRONMENT={{Ref:Environment}}
    -e TENANT={{Ref:Tenant}}
    -p 24224:24224
    --name \$NAME \$IMAGE

Мы используем AWS CloudFormation для перевода виртуальных машин в оперативный режим.

Мы не можем использовать реальную инфраструктуру оркестровки контейнера (мы ужеиспользуйте Marathon / Mesos), поскольку эти службы должны быть запущены на каждом хосте и до запуска Marathon / Mesos.

Какое решение наиболее целесообразно?Преобразуйте эти файлы в systemd или начните использовать docker-compose, несмотря на то, что уже использовали Marathon на Mesos?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Отказ от ответственности: Я не разбираюсь в systemd, поэтому мой ответ будет суммировать некоторые особенности docker-compose и даст несколько указателей.

Вы сказали

Мы не можем использовать реальную инфраструктуру оркестровки контейнеров […] Какое решение наиболее целесообразно?Преобразуйте эти файлы в systemd или начните использовать docker-compose, несмотря на то, что уже использовали Marathon на Mesos?

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

Systemd может выполнять проверки работоспособности и автоматически возвращать процессы, которые были отключены.Это также больше всего похоже на Upstart, который мы интенсивно используем.Наши файлы конфигурации Upstart генерируются из облачной конфигурации следующим образом: […]

Возможно, у вас уже есть некоторые сведения о docker-compose, но просто для краткости, это можно рассматривать как "Интерфейс Docker ", реализованный в Python, который позволяет:

  1. заменить сложные команды Docker (такие как docker build, docker run и т. Д.) На декларативные конфигурации в YAML.См. документ для получения более подробной информации об этой выразительной спецификации.

  2. управляет всем жизненным циклом мультиконтейнерных приложений (возможно, с использованием пользовательских сетей, томов и т. Д.)).В частности, можно указать docker-compose всегда перезапускать данный контейнер в случае ошибки и указать проверки работоспособности .
    Например, см. Следующие два указателя:

Наконец, обратите внимание, что использование docker swarm может быть другим альтернативным решением, которое является таким же "стандартным", как и docker-compose и дополнительно имеет функцию кластеризации - для превращения группы механизмов Docker в один виртуальный механизм Docker ( source ).

Два связанных указателя:

0 голосов
/ 25 сентября 2018

Политика перезапуска - это встроенный метод, позволяющий поддерживать работу контейнеров Docker.

docker run --restart=always -d image_name

Подробнее см. документы

...