* кластеризация (clustering) – объединение в группы «хостов» – виртуальных машин или аппаратных – и создание для них общей сетевой среды. Кластер следует воспринимать как единый ресурс, а не как группу отдельных компьютеров; * оркестрация (orchestration) – обеспечение совместной работы всех элементов системы. Запуск контейнеров на соответствующих хостах и установление соединений между ними. Организационная система также может включать поддержку масштабирования, автоматического восстановления после критических сбоев и инструменты изменения балансировки нагрузки на узлы; * управление (management) – обеспечение общего контроля и наблюдения за системой и поддержка различных административных задач. Основные средства оркестрации и кластеризации в экосистеме Docker: Swarm, fleet, Kubernetes и Mesos. Swarm – это собственное решение кластеризации компании Docker, в котором большое внимание уделяется проблемам оркестрации, в частности при использовании совместно с Docker Compose. Fleet – это низкоуровневая система кластеризации и планирования, используемая CoreOS. Kubernetes – это высокоуровневое решение оркестровки, в которое по умолчанию встроены функции восстановления после критических сбоев и масштабирования и которое может работать поверх других решений кластеризации. Mesos – низкоуровневая система кластеризации, способная работать с «программными средами» более высокого уровня, обеспечивая надежное, полноценное решение кластеризации и оркестрации. ### Swarm Swarm - инструментальное средство компании Docker для кластеризации собственных контейнеров. Swarm использует стандартный прикладной программный интерфейс Docker API, поэтому контейнеры можно запускать обычными командами docker run, а Swarm позаботится о выборе подходящего хоста для каждого запускаемого контейнера. Это также означает, что другие инструменты, использующие Docker API, такие как Compose и специальные скрипты, могут использовать Swarm без каких-либо изменений и получить все преимущества кластера, по сравнению с работой на одном хосте. Базовая архитектура Swarm: на каждом хосте запускается агент (agent) Swarm, а на отдельном хосте запускается менеджер (manager) Swarm (в небольшом тестовом кластере этот хост может функционировать и как агент). Менеджер отвечает за оркестрацию и планирование работы контейнеров, распределенных по хостам. Swarm может работать в режиме высокой доступности, при котором etcd, Consul или ZooKeeper используется для выполнения операции восстановления после критических сбоев в ранее сохраненное состояние менеджера. Предлагается несколько различных методик обнаружения хостов и добавления их в кластер, в Swarm они обозначены как механизм обнаружения (discovery). По умолчанию используется обнаружение на основе токена (token- based discovery), при котором адреса хостов содержатся в списке, хранящемся в реестре Docker Hub.