`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Что для вас является метрикой простоя серверной инфраструктуры?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Владимир Федак

Docker в помощь

+22
голоса

Docker в помощь

Предположим, вам требуется запустить 20 различных экземпляров программы в 20 различных программных окружениях. Раньше, очевидным выбором был бы запуск 20 виртуальных машин (ВМ). Однако, это означало бы запуск 20 операционных систем (ОС), что потребовало бы затрату существенного количества системных ресурсов просто на поддержание работы системы.

Используя Docker, вы сможете запустить 20 изолированных контейнеров на основе разных Docker образов на всего лишь одной виртуальной машине, и вам даже не понадобится гипервизор. Всего один Docker образ может применен для создания многих контейнеров с различными версиями кода, переменными среды, портами и пр. Насколько же это лучше? Сравнение от компании OpenStack показало, что Docker в 26 раз эффективнее KVM! Прирост скорости работы просто потрясающий!

Docker в данный момент является самой популярной платформой для менеджмента контейнеров. Контейнер в данном случае — оболочка из кода, содержащая все необходимое для отдельного запуска программы на общей ОС. Контейнеры образов Docker строятся таким образом, что ЛЮБОЙ контейнер запустится на ЛЮБОЙ машине с установленным Docker. Это устраняет проблему “у меня все работает, не знаю почему у вас не так”, которая была ОГРОМНОЙ головной болью для разработчиков во всем мире. Ниже еще несколько преимуществ Docker.

Зачем использовать Docker?

Прежде всего, соотношение цены и качества — оптимальное. К слову, вместо запуска двух ВМ (для балансировки нагрузки) на одно приложение, компания может нанять всего 3-4 ВМ, создать из них кластер и разместить на нем все 20 контейнеров с приложениями. Вдобавок, бОльшая часть контейнеров запускаются всего за 1 секунду, что НАМНОГО быстрее, чем при использовании ВМ.

Портативность является второй важной причиной для использования Docker. Разработчикам необходимо запускать много различных инструментов для работы, и многие из инструментов имеют микросервисы, требующие отдельные среды для работы. Используя Docker, вместо запуска нескольких ВМ на вашем ноутбуке, вы запускаете все эти контейнеры на 1-ой ВМ, значительно экономя ресурсы и упрощая работу.

Третья причина — постоянство. Образы Docker не зависят от окружения, на котором их запускают. Один и тот же экземпляр приложения будет запущен у девелопера на ноутбуке, при тестировании, на стейджинг-сервере и пойдет на сервер эксплуатации (production server), вне зависимости от установленных ОС и прочих компонентов. Docker гарантирует постоянство работы и реакции приложения на всех стадиях разработки и запуска.

Четвертая, но не последняя по значимости причина состоит в количестве готовых Docker образов. Сообщество разработчиков Docker огромно и непрерывно растет. Каждый день десятки и сотни новых образов Docker добавляются на Dockerhub. Если ДевОпс-инженеру нужно испытать работу какого-либо инструмента или сложного приложения, ему не нужно изобретать велосипед. С 99%-ной вероятностью подходящий Docker образ уже создан и размещен на Dockerhub.

Когда используется Docker?

Вот обычный процесс использования Docker в процессе разработки приложений:
ДевОпс-инженер задает требования к любому микросервису в простом для создания Docker-файле.
Код заливается в репозиторий и запускается CI-сервером для создания ТОЧНО заказанной среды. При этом, разработчику даже не придется конфигурировать сам CI-сервер.
Контейнер создается и отправляется на сервера для тестирования самим CI-сервером.
После окончания тестирования, одной командой вы можете удалить тестовое окружение и освободить ресурсы.
Тот самый контейнер, который вы протестировали отправляется в эксплуатацию, и вам даже не надо беспокоиться о конфигурации сервера, на котором приложение будет работать.
В некоторой форме такой процесс (с контейнеризацией кода в процессе разработки) был доступен в Java уже почти 10 лет. Однако, способность работать со всеми языками, поддерживающими Linux — это круто!

Как использовать Docker?

В своей компании мы применяем Docker на операционных системах семейства Linux, минуя уровень виртуализации, что дает нам возможность сполна использовать его невероятный прирост продуктивности.

Более простой способ использования Docker состоит в работе с ним и CircleCI, Gitlab CI или Jenkins для создания процессов непрерывной интеграции, что позволяет нам легко создавать контейнеры с последними версиями кода, автоматически тестировать их и отправлять на сервер эксплуатации конечным пользователям.

Более сложный (и любимый нами) способ использования Docker состоит в том, чтобы применять его совместно с гораздо более мощными инструментами в высоконагруженных проектах для выполнения гораздо большего числа задач (например, роллинг-релиз, автоматическое масштабирование, легкое выполнение откатов системы на предыдущую версию в случае необходимости), таким образом реализуя принцип непрерывного обновления. Эти инструменты включают платформы типа Kubernetes, Rancher, Openshift и т.д. Использование этих программ для решения комплексных задач позволяет полностью прочувствовать всю мощь Docker и микросервисов.

Ключом к успеху является комбинирование разных систем:

  • Платформы типа Ansible или Terraform помогают нам с легкостью строить и управлять инфраструктурой, реализуя принцип инфраструктуры как кода.
  • Комбинации Ansible + Kubernetes/Docker Swarm дают нам возможность предоставлять IaaS.
  • Используя программы типа Ansible, Puppet или Salt мы можем легко наполнять инфраструктуру приложениями и управлять ими быстро и эффективно.

Такой подход к работе с Docker — ключ к созданию и поддержанию масштабируемой и надежной инфраструктуры для наших заказчиков на AWS, Google Cloud или любом другом операторе облачного или выделенного хостинга.

  •  
+22
голоса

Напечатать Отправить другу

Читайте также

Подскажите пожалуйста с чего начать? Такой себе как у программистов "Hello, world". А то я не смог осилить docker с первого захода :-(

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT