Docker

Вчера мы закончили основные работы с перехода на новую версию webitel. Лично для меня, самым долгожданным был новый WebClient (Игорь, привет!). Описание других новшеств Вы сможете прочитать на этой странице: тыц!

В предыдущих статьях я рассказал о том, что такое Docker и как оно все работает. Так же, рассмотрели пример запуска простого Webitel-приложения в контейнере. Сегодня я покажу практический пример, как быстро запустить FreeSWITCH в контейнере.

Для Webitel мы уже давно используем Docker как основной инструмент управления приложением. Для FreeSWITCH я сделал базовый образ, на основание которого строится автоматически образ для Webitel. Недавно, я расширил его еще и под задачи установки vanilla конфигурации FreeSWITCH. Вы можете его использовать для быстрого разворачивания приложения. Как это сделать — опишу ниже.

В предыдущих статьях мы обсудили основные преимущества и возможности Docker. Сегодня я хочу рассказать о реализации сервера Webitel Collaboration с помощью этой технологии. Напомню, что не так давно, с выходом bpm’online 7.4.1, был анонсирован новый продукт для бесплатных внутренних коммуникаций. Вот его мы сегодня и разберем по кирпичиках.

Микросервисы

Помните, микросервисы в основе приложения? Именно эта идеология и заложена в Collaboration. Мы разбили все компоненте на несколько небольших контейнеров в зависимости от выполняемой задачи. А какие основные задачи Collaboration? Если вкратце, то это внутренние звонки. Здесь нет статистики, нет записей разговоров, нет внешней маршрутизации и провайдеров связи.

Архитектура решения

Webitel Collaboration Cloud

После теории перейдем к практическим занятиям. Для этого нам понадобится Linux с установленным Docker либо Doot2Docker на Windows или OSX. Как это сделать, доступно написано на сайте разработчика. На тестовой машине у меня версия 1.3.2:

┌─[ ~/blog ]
└─[root@core (пт січ 09 04:02:32)] ·> docker info
Containers: 15
Images: 302
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 368
Execution Driver: native-0.2
Kernel Version: 3.13.0-43-generic
Operating System: Ubuntu 14.04.1 LTS

Вначале были контейнеры

Контейнеры имеют очень длинную историю. В отличие от виртуализации, когда на одной физической машине мы можем запускать несколько независимых виртуальных машин, контейнеры существуют поверх операционной системы. Данный подход позволяет более гибко использовать ресурсы основной машины, но, в то же время, накладывает определенные ограничения. К примеру, мы можем легко запустить CentOS Linux поверх Ubuntu, но мы не сможем запустить Windows поверх Ubuntu.

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

Но, как управлять этими контейнерами? Как взаимодействовать между ними? Обычный подход виртуальных машин тут уже неуместен, необходимо что-то новое. И этим новым стал Docker.