0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p>Без облачных сервисов сегодня трудно представить не только разработку программного обеспечения и веб-приложений, но и нашу обычную жизнь. Разницу между SaaS, Iaas и Paas наглядно демонстрирует прием Pizza as a Service с помощью такой диаграммы:</p>
1
<p>Без облачных сервисов сегодня трудно представить не только разработку программного обеспечения и веб-приложений, но и нашу обычную жизнь. Разницу между SaaS, Iaas и Paas наглядно демонстрирует прием Pizza as a Service с помощью такой диаграммы:</p>
2
<a>Источник</a><p><strong>PaaS</strong><em>(Platform as a Service)</em> - это виртуальная облачная платформа, средствами которой вы можете обеспечить полный цикл создания и поддержки веб-приложения: разработку, развертывание, тестирование и обслуживание. Все это будет реализовано удобным и быстрым способом.</p>
2
<a>Источник</a><p><strong>PaaS</strong><em>(Platform as a Service)</em> - это виртуальная облачная платформа, средствами которой вы можете обеспечить полный цикл создания и поддержки веб-приложения: разработку, развертывание, тестирование и обслуживание. Все это будет реализовано удобным и быстрым способом.</p>
3
<p>Вам не нужно приобретать лицензии на программное обеспечение, управлять средствами разработки и сложной инфраструктурой - вы занимаетесь только своими приложениями, а все остальное делает платформа.</p>
3
<p>Вам не нужно приобретать лицензии на программное обеспечение, управлять средствами разработки и сложной инфраструктурой - вы занимаетесь только своими приложениями, а все остальное делает платформа.</p>
4
<p>Здесь мы обзорно рассмотрим одно из самых популярных подобных решений для разработчиков - Docker.</p>
4
<p>Здесь мы обзорно рассмотрим одно из самых популярных подобных решений для разработчиков - Docker.</p>
5
<p>Принцип работы Docker метафорически можно описать как погрузку контейнеров на корабль в порту. До шестидесятых годов прошлого века доставка грузов была сложным процессом: перевозчику приходилось учитывать их различные типы - например, чтобы не повредить хрупкий и мягкий товар. Разгрузка занимала множество времени.</p>
5
<p>Принцип работы Docker метафорически можно описать как погрузку контейнеров на корабль в порту. До шестидесятых годов прошлого века доставка грузов была сложным процессом: перевозчику приходилось учитывать их различные типы - например, чтобы не повредить хрупкий и мягкий товар. Разгрузка занимала множество времени.</p>
6
<p>Эту проблему решил контейнер: любые грузы внутри него - будь то бананы или запчасти для авто - можно удобно расположить и перемещать с помощью автоматического крана. Необходимость выгружать при этом содержимое из контейнера исчезла - он не открывается до окончания поездки, и товары не могут случайно смешаться или испортиться из-за движения.</p>
6
<p>Эту проблему решил контейнер: любые грузы внутри него - будь то бананы или запчасти для авто - можно удобно расположить и перемещать с помощью автоматического крана. Необходимость выгружать при этом содержимое из контейнера исчезла - он не открывается до окончания поездки, и товары не могут случайно смешаться или испортиться из-за движения.</p>
7
Грузовые контейнеры в морском порту.<a>Источник</a><p>Так и Docker позволяет операционной системе запускать программы изолированно друг от друга - каждую в собственном окружении. Основа его работы - функции linux namespaces, благодаря которым можно виртуализировать и изолировать ресурсы системы. Сегодня уже существуют версии Docker для Windows и macOS. Несмотря на то что лежащие в основе Docker технологии придумали давно, именно он стал идеальной реализацией для решения сложных задач разработки.</p>
7
Грузовые контейнеры в морском порту.<a>Источник</a><p>Так и Docker позволяет операционной системе запускать программы изолированно друг от друга - каждую в собственном окружении. Основа его работы - функции linux namespaces, благодаря которым можно виртуализировать и изолировать ресурсы системы. Сегодня уже существуют версии Docker для Windows и macOS. Несмотря на то что лежащие в основе Docker технологии придумали давно, именно он стал идеальной реализацией для решения сложных задач разработки.</p>
8
<p><a>Docker</a> - программное обеспечение с открытым исходным кодом на базе Linux, но есть два варианта: бесплатное решение для свободного пользования и платное для корпоративного сегмента.</p>
8
<p><a>Docker</a> - программное обеспечение с открытым исходным кодом на базе Linux, но есть два варианта: бесплатное решение для свободного пользования и платное для корпоративного сегмента.</p>
9
<p>Рассмотрим, из чего состоит экосистема этого ПО:</p>
9
<p>Рассмотрим, из чего состоит экосистема этого ПО:</p>
10
<p><strong>Клиент</strong></p>
10
<p><strong>Клиент</strong></p>
11
<p>Непосредственно сама программа Docker, которая получает команды от разработчика-пользователя и отдает их демону.</p>
11
<p>Непосредственно сама программа Docker, которая получает команды от разработчика-пользователя и отдает их демону.</p>
12
<p><strong>Сервер (daemon)</strong></p>
12
<p><strong>Сервер (daemon)</strong></p>
13
<p>Данные передаются от клиента к нему, и тот выполняет всю работу.</p>
13
<p>Данные передаются от клиента к нему, и тот выполняет всю работу.</p>
14
<p><strong>Контейнеры (docker containers)</strong></p>
14
<p><strong>Контейнеры (docker containers)</strong></p>
15
<p>Внутри них вы запускаете свои приложения. По сути, контейнер - не что иное, как процесс вашей ОС, но запущенный в изолированном окружении, а не на компьютере.</p>
15
<p>Внутри них вы запускаете свои приложения. По сути, контейнер - не что иное, как процесс вашей ОС, но запущенный в изолированном окружении, а не на компьютере.</p>
16
<p><strong>Образы (docker images)</strong></p>
16
<p><strong>Образы (docker images)</strong></p>
17
<p>Вы запускаете контейнеры из образов - готовых шаблонов, которые можно скачать или создать самостоятельно.</p>
17
<p>Вы запускаете контейнеры из образов - готовых шаблонов, которые можно скачать или создать самостоятельно.</p>
18
<p><strong>Реестры</strong></p>
18
<p><strong>Реестры</strong></p>
19
<p>В них система держит созданные вами образы. Они бывают публичными и частными. Официальный реестр называется<a>DockerHub</a>, в нем более 10 тысяч образов.</p>
19
<p>В них система держит созданные вами образы. Они бывают публичными и частными. Официальный реестр называется<a>DockerHub</a>, в нем более 10 тысяч образов.</p>
20
<p>Чтобы собрать программу из исходных файлов обычным способом, нужно совершить несколько действий: найти, скачать и установить зависимости для вашей операционной системы, распаковать архив, запустить конфигурирование, компиляцию, установить. Docker заменяет всё это выполнением одной команды.</p>
20
<p>Чтобы собрать программу из исходных файлов обычным способом, нужно совершить несколько действий: найти, скачать и установить зависимости для вашей операционной системы, распаковать архив, запустить конфигурирование, компиляцию, установить. Docker заменяет всё это выполнением одной команды.</p>
21
<p>В целом он используется разработчиками веб-приложений по всему миру для решения следующих задач:</p>
21
<p>В целом он используется разработчиками веб-приложений по всему миру для решения следующих задач:</p>
22
<ul><li>автоматизация и упрощение развертывания проектов;</li>
22
<ul><li>автоматизация и упрощение развертывания проектов;</li>
23
<li>масштабирование баз данных, сервисов backend и веб-приложений;</li>
23
<li>масштабирование баз данных, сервисов backend и веб-приложений;</li>
24
<li>построение своих легковесных и переносимых PaaS-окружений;</li>
24
<li>построение своих легковесных и переносимых PaaS-окружений;</li>
25
<li>обеспечение возможности беспроблемно работать над проектом большой команде разработчиков.</li>
25
<li>обеспечение возможности беспроблемно работать над проектом большой команде разработчиков.</li>
26
</ul><p>Перед пользователями Docker возник вопрос: как разворачивать контейнеры на многих хостах? Как раз для управления их большим количеством в Google был создан<a>Kubernetes</a>. Он предлагает высокоуровневый API, благодаря которому можно группировать контейнеры, задавать их размещение и балансировать нагрузку.</p>
26
</ul><p>Перед пользователями Docker возник вопрос: как разворачивать контейнеры на многих хостах? Как раз для управления их большим количеством в Google был создан<a>Kubernetes</a>. Он предлагает высокоуровневый API, благодаря которому можно группировать контейнеры, задавать их размещение и балансировать нагрузку.</p>
27
<p>Трудно представить, но раньше подавляющее большинство проектов в интернете развертывались на один большой неповоротливый проприетарный сервер. Управлять им было неудобно, сложно и болезненно, даже несмотря на наличие специальных программ.</p>
27
<p>Трудно представить, но раньше подавляющее большинство проектов в интернете развертывались на один большой неповоротливый проприетарный сервер. Управлять им было неудобно, сложно и болезненно, даже несмотря на наличие специальных программ.</p>
28
<p>Docker полностью изменил подход к этому: теперь программы запускаются в отдельных контейнерах. Обновления версий одной программы не могут повлиять на другие обновления и всю систему в целом. Число ошибок и сбоев из-за этих факторов при использовании Docker стремится к нулю.</p>
28
<p>Docker полностью изменил подход к этому: теперь программы запускаются в отдельных контейнерах. Обновления версий одной программы не могут повлиять на другие обновления и всю систему в целом. Число ошибок и сбоев из-за этих факторов при использовании Docker стремится к нулю.</p>
29
<ol><li><strong>Абстрагирование приложения.</strong>Приложение в контейнере не зависит от архитектуры или ресурсов хоста.</li>
29
<ol><li><strong>Абстрагирование приложения.</strong>Приложение в контейнере не зависит от архитектуры или ресурсов хоста.</li>
30
<li><strong>Быстрота и простота масштабирования.</strong>Если приложение грамотно спроектировано, то масштабирование становится очень прямолинейным и легким для разработчиков процессом.</li>
30
<li><strong>Быстрота и простота масштабирования.</strong>Если приложение грамотно спроектировано, то масштабирование становится очень прямолинейным и легким для разработчиков процессом.</li>
31
<li><strong>Простота контроля версий</strong>и управления зависимостями. Вы можете соединить свое приложение со всеми зависимостями и работать с ним как с одним целым. Зависимости содержатся в одном контейнере, и хост-системы больше не отвечают за управление ими.</li>
31
<li><strong>Простота контроля версий</strong>и управления зависимостями. Вы можете соединить свое приложение со всеми зависимостями и работать с ним как с одним целым. Зависимости содержатся в одном контейнере, и хост-системы больше не отвечают за управление ими.</li>
32
<li><strong>Изолированная среда.</strong>Уровень изолированности не сравнится с виртуализацией, однако благодаря легкой среде выполнения можно мгновенно запускать приложения в любом количестве контейнеров.</li>
32
<li><strong>Изолированная среда.</strong>Уровень изолированности не сравнится с виртуализацией, однако благодаря легкой среде выполнения можно мгновенно запускать приложения в любом количестве контейнеров.</li>
33
</ol><ul><li>дополнительная нагрузка на производительность;</li>
33
</ol><ul><li>дополнительная нагрузка на производительность;</li>
34
<li>усложнение инфраструктуры;</li>
34
<li>усложнение инфраструктуры;</li>
35
<li>необходимость качественной и тонкой настройки;</li>
35
<li>необходимость качественной и тонкой настройки;</li>
36
<li>большие временные ресурсы на процесс удаления контейнеров;</li>
36
<li>большие временные ресурсы на процесс удаления контейнеров;</li>
37
<li>ограничение обратной совместимости в некоторых случаях.</li>
37
<li>ограничение обратной совместимости в некоторых случаях.</li>
38
</ul><p>Однако плюсы применения Docker в проектах с лихвой перекрывают все это.</p>
38
</ul><p>Однако плюсы применения Docker в проектах с лихвой перекрывают все это.</p>
39
<p>Это лишь основы, которые необходимо знать о Docker. В его использовании множество нюансов, которые открываются уже при самостоятельном взаимодействии с программным обеспечением.</p>
39
<p>Это лишь основы, которые необходимо знать о Docker. В его использовании множество нюансов, которые открываются уже при самостоятельном взаимодействии с программным обеспечением.</p>