Как масштабировать Docker-контейнеры в продакшене

139

Итак, я недавно обнаружил этот замечательный инструмент, и он говорит

Docker - это проект с открытым исходным кодом, позволяющий легко создавать легкие, портативные, самодостаточные контейнеры из любого приложения. Тот же контейнер, который разработчик создает и тестирует на ноутбуке, может запускаться в масштабе, в производственной среде, на виртуальных машинах, на «голом железе», кластерах OpenStack, общедоступных облаках и т.

Допустим, у меня есть образ докера, который запускает Nginx, а веб-сайт подключается к внешней базе данных. Как масштабировать контейнер на производстве?

Джеймс Лин
источник

Ответы:

589

Обновление: 2019-03-11

Прежде всего, спасибо тем, кто голосовал за этот ответ на протяжении многих лет.

Имейте в виду, что этот вопрос был задан в августе 2013 года, когда Docker был еще совсем новой технологией. С тех пор: Kubernetes был запущен в июне 2014 года, Docker Swarm был интегрирован в движок Docker в феврале 2015 года, Amazon запустил свое контейнерное решение ECS в апреле 2015 года, а Google запустил GKE в августе 2015 года. Справедливо сказать, что ландшафт производственных контейнеров изменился. существенно изменилось.


Короткий ответ: для этого вам придется написать свою собственную логику.

Я ожидал, что такая функция появится в следующих проектах, построенных на основе Docker и предназначенных для поддержки приложений в производстве:

Обновление 1

Другой связанный проект, который я недавно обнаружил:

Обновление 2

Последний выпуск Openstack поддерживает управление контейнерами Docker:

Обновление 3

Система управления экземплярами Docker

И презентация о том, как использовать такие инструменты, как Packer , Docker и Serf, для создания неизменного шаблона инфраструктуры сервера.

Обновление 4

Хорошая статья о том, как соединить докер-контейнеры с помощью serf :

Обновление 5

Запустите Docker на Mesos с помощью фреймворка Marathon

Руководство разработчика Mesosphere Docker

Обновление 6

Запустите Docker на Tsuru, поскольку он поддерживает развертывание кластера докеров и отдельного планировщика.

Обновление 7

Оркестровка сред на основе Docker

маэстро

Обновление 8

decking.io

Обновление 9

Google kubernetes

Обновление 10

Redhat реорганизовали свой openshift PAAS для интеграции Docker

Обновление 11

Библиотека Docker NodeJS, которая обертывает командную строку Docker и управляет ею из файла json.

Обновление 12

Новый контейнерный сервис Amazon обеспечивает масштабирование в кластере.

Обновление 13

Строго говоря, Flocker не «масштабирует» приложения, но он предназначен для выполнения связанной функции по переносу контейнеров с отслеживанием состояния (работающих служб баз данных?) Между несколькими хостами докеров:

https://clusterhq.com/

Обновление 14

Проект по созданию переносимых шаблонов, описывающих приложения Docker:

http://panamax.io/

Обновление 15

Проект Docker теперь обращается к оркестровке изначально (см. Объявление )

Обновление 16

Spotify Helios

Смотрите также:

Обновление 17

В проекте Openstack появился новый проект «контейнер как услуга» под названием Magnum:

Многообещающий, позволяет легко настроить фреймворки оркестровки Docker, такие как Kubernetes и Docker swarm.

Обновление 18

Rancher - это быстро развивающийся проект

http://rancher.com/

Хороший интерфейс и упор на гибридную инфраструктуру Docker.

Обновление 19

Проект Lattice является ответвлением Cloud Foundry для управления кластерами контейнеров.

Обновление 20

Докер недавно купил Тутум:

https://www.docker.com/tutum

Обновление 21

Диспетчер пакетов для приложений, развернутых в Kubernetes .

http://helm.sh/

Обновление 22

Vamp - это автономная платформа с открытым исходным кодом для управления (микро) сервис-ориентированными архитектурами, которые полагаются на контейнерную технологию.

http://vamp.io/

Обновление 23

Распределенный, высокодоступный планировщик, ориентированный на центры обработки данных

От парней, которые дали нам Vagrant и другие мощные инструменты.

Обновление 24

Решение контейнерного хостинга для AWS, с открытым исходным кодом и на базе Kubernetes

https://supergiant.io/

Обновление 25

Контейнер на основе Apache Mesos, размещенный в Германии

https://sloppy.io/features/#features

Docker Inc. также предоставляет услугу размещения контейнеров под названием Docker Cloud.

https://cloud.docker.com/

Обновление 26

Jelastic - это размещенная служба PAAS, которая автоматически масштабирует контейнеры.

Марк О'Коннор
источник
1
openstack - еще один кандидат в этот список
Бен Шварц
@benschwartz Очень верно, но только в последней версии.
Марк О'Коннор
Ух ты, Док… ты, Рокин Фок! Благодарность!
jredd
2
@ MarkO'Connor mesosphere/mesos-dockerПроект устарел и заменен mesosphere/deimos: github.com/mesosphere/deimos
Росс Аллен
1
Также стоит посмотреть, от Google - github.com/GoogleCloudPlatform/kubernetes
mjsalinger
42

Deis автоматизирует масштабирование контейнеров Docker (среди прочего).

Deis (произносится как DAY-iss) - это PaaS с открытым исходным кодом, который упрощает развертывание и управление приложениями на ваших собственных серверах. Deis основывается на Docker и CoreOS, чтобы предоставить легкий PaaS с рабочим процессом, вдохновленным Heroku.

Вот рабочий процесс разработчика:

deis create myapp                      # create a new deis app called "myapp"
git push deis master                   # built with a buildpack or dockerfile
deis scale web=16 worker=4             # scale up docker containers

Deis автоматически развертывает ваши контейнеры Docker в кластере CoreOS и настраивает маршрутизаторы Nginx для маршрутизации запросов в исправные контейнеры Docker. Если хост умирает, контейнеры автоматически перезапускаются на другом хосте за секунды. Просто перейдите по URL-адресу прокси-сервера или используйте его, deis openчтобы попасть в свое приложение.

Некоторые другие полезные команды:

deis config:set DATABASE_URL=          # attach to a database w/ an envvar
deis run make test                     # run ephemeral containers for one-off tasks
deis logs                              # get aggregated logs for troubleshooting
deis rollback v23                      # rollback to a prior release

Чтобы увидеть это в действии, посмотрите видео о терминале на http://deis.io/overview/ . Вы также можете узнать о концепциях Deis или сразу перейти к развертыванию собственного частного PaaS .

Габртв
источник
3
+1 С интересом смотрю ваш проект. Продолжайте хорошую работу!
Марк О'Коннор,
19

Вы можете попробовать Цуру. Tsuru - это PaaS с открытым исходным кодом, вдохновленный Heroku, и некоторые продукты уже производятся на Globo.com (интернет-подразделение крупнейшей телекомпании Бразилии).

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

Взгляните на нашу документацию ниже: http://docs.tsuru.io/

Вот наш пост, посвященный нашей среде: http://blog.tsuru.io/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers/

Магно Торрес
источник
18

Взгляните на Rancher.com - он может управлять несколькими хостами Docker и многим другим.

дубль
источник
Rancher имеет открытый исходный код и включает полный дистрибутив Kubernetes. Он предоставляет платформу для запуска множества различных кластеров, управления инфраструктурой и значительно упрощает запуск контейнеров.
Шеннон Уильямс
9

Разумным подходом к масштабированию Docker может быть:

  1. Каждая служба будет докер- контейнером
  2. Обнаружение внутриконтейнерной службы, управляемое через ссылки ( новая функция из docker 0.6.5 )
  3. Контейнеры будут разворачиваться через Dokku
  4. Управление приложениями будет осуществляться через верфь, которая, в свою очередь, использует hipache.

Еще один проект Docker с открытым исходным кодом от Яндекса:

Tommasop
источник
Можете ли вы еще посоветовать, как использовать Dokku вместе с Верфью?
djskinner
Эта ссылка мертва - docs.docker.io/en/latest/use/working_with_links_names/…
Ankur
2

Ребята из Openshift тоже создали проект. Вы можете найти дополнительную информацию здесь , попробовать тестовый контейнер и подробную информацию здесь . Единственная проблема в том, что на данный момент решение ориентировано на Redhat :)

Кунтар
источник
2

Хотя мы большие поклонники Deis (deis.io) и активно внедряем его, есть и другие решения для развертывания в стиле Heroku, такие как PaaS, в том числе:

Грузчик от людей из Wayfinder:

https://github.com/longshoreman/longshoreman

Декер из CloudCredo, используя CloudFoundry:

http://www.cloudcredo.com/decker-docker-cloud-foundry/

Что касается прямой оркестровки, проект Centurion с открытым исходным кодом NewRelic кажется весьма многообещающим:

https://github.com/newrelic/centurion

Ян Бленке
источник
1

Panamax: Docker Management для людей. panamax.io

Рис: Быстрые изолированные среды разработки с использованием Docker. fig.sh

rus1
источник
Я думаю, что Fig еще не поддерживает развертывание с несколькими хостами.
lolski
Это так! Значит, это просто помогает организовать настройку приложений внутри одного хоста?
fatuhoku
1

Один из вариантов, не упомянутых в других сообщениях, - это Helios. Он создан Spotify и не пытается сделать слишком много.

https://github.com/spotify/helios

Крис Дейл
источник