Як масштабувати контейнери Docker у виробництві


139

Тому я нещодавно виявив цей дивовижний інструмент, і він говорить

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

Скажімо, у мене є зображення докера, який запускає Nginx і веб-сайт підключається до зовнішньої бази даних. Як я масштабую контейнер у виробництві?

Відповіді:


587

Оновлення: 2019-03-11

Перш за все дякую тим, хто роками підтримував цю відповідь.

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


Коротка відповідь полягає в тому, що для цього вам доведеться написати власну логіку.

Я б очікував, що така функція з'явиться у наступних проектах, побудованих на вершині докера та розроблених для підтримки додатків у виробництві:

Оновлення 1

Ще один пов'язаний з нами проект, який я нещодавно відкрив:

Оновлення 2

Останній випуск Openstack містить підтримку управління контейнерами Docker:

Оновлення 3

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

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

Оновлення 4

Акуратна стаття про те, як з'єднати докер-контейнери за допомогою кріпака :

Оновлення 5

Виконати Docker на Mesos використовуючи Marathon рамки

Підручник для розробників Mesosphere Docker

Оновлення 6

Запустіть Docker на Tsuru, оскільки він підтримує докер-кластер та розгорнуте планування розгортання

Оновлення 7

Оркестрація середовищ на основі Докера

маестро-нг

Оновлення 8

настил.io

Оновлення 9

Google kubernetes

Оновлення 10

Redhat відремонтували свій відкритий зсув 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:

Проявляє багато обіцянок, дозволяє легко налаштувати докерські оркестрові рамки, такі як Kubernetes і Docker рій.

Оновлення 18

Rancher - це проект, який швидко дозріває

http://rancher.com/

Приємний інтерфейс користувача та сильна увага до гібридної інфраструктури Docker

Оновлення 19

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

Оновлення 20

Нещодавно Docker придбав Tutum:

https://www.docker.com/tutum

Оновлення 21

Менеджер пакунків для додатків, розгорнутих у Kubernetes .

http://helm.sh/

Оновлення 22

Vamp - це платформа з відкритим кодом та влаштована платформа для управління (мікро) сервіс-орієнтованими архітектурами, які покладаються на контейнерну технологію.

http://vamp.io/

Оновлення 23

Розподілений, високодоступний програміст-планувальник

Від хлопців, які дали нам Бродягу та інших потужних інструментів.

Оновлення 24

Рішення для розміщення контейнерів для AWS, з відкритим кодом та засноване на Kubernetes

https://supergiant.io/

Оновлення 25

Контейнер на базі Apache Mesos розміщений у Німеччині

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

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

https://cloud.docker.com/

Оновлення 26

Jelastic - це розміщена послуга PAAS, яка автоматично масштабує контейнери.


1
Opentack - ще один кандидат у цьому списку
ben schwartz

@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-IS) - це 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

Можна спробувати Цуру. Цуру - 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

Розумним підходом до масштабування Докера може бути:

  1. Кожна служба буде контейнером докера
  2. Внутрішнє відкриття контейнерної служби, кероване посиланнями ( нова функція від docker 0.6.5 )
  3. Контейнери будуть розгорнуті наскрізь Dokku
  4. Програми керуватимуть через верфі, яка, в свою чергу, використовує hipache

Ще один відкритий проект дондерів від Яндексу:


Чи можете ви надати якісь поради щодо використання Доку поруч із верфі?
djskinner

Це посилання мертве - docs.docker.io/en/latest/use/working_with_links_names/…
Ankur

2

Хлопці з опеншифта також створили проект. Ви можете знайти більше інформації тут , спробуйте тестовий контейнер та детальну інформацію тут . Єдина проблема - це рішення Redhat на даний момент :)


2

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

Довгоносець з людей Wayfinder:

https://github.com/longshoreman/longshoreman

Decker від CloudCredo людей, які використовують CloudFoundry:

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

Що стосується прямого оркестрування, проект NewRelic з відкритим ресурсом Centurion видається досить перспективним:

https://github.com/newrelic/centurion



1

Panamax: управління докерами для людей. panamax.io

Рис .: Швидке, ізольоване середовище розробки за допомогою Docker. фіг.ш


Я думаю, Fig ще не підтримує розгортання кількох хостів.
lolski

Невже це так! Тож це просто допомагає оркеструвати налаштування додатків всередині одного хоста?
fatuhoku

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.