Перейти к содержимому
SaytPro
Написать нам

Технологии

Docker

Docker это платформа с открытым исходным кодом, которая запускает программы в изолированных пакетах (контейнерах) вместе со всем необходимым для работы. Выпущена компанией Docker, Inc. в 2013 году и стала одним из стандартных способов развёртывания приложений на серверах.

РазработчикDocker, Inc.
Первый выпуск2013
ЛицензияApache-2.0
Официальный сайтdocker.com
Инфраструктура

Что такое Docker?

Лучшая аналогия для Docker это морской контейнер. До появления стандартных контейнеров каждый груз загружали на судно в своей упаковке: медленно и с ошибками. Стандартный контейнер грузится на любое судно, поезд или грузовик одинаково, независимо от содержимого. Docker делает то же самое с программами: сайт или приложение упаковывается в контейнер вместе со всеми зависимостями (библиотеками и настройками, нужными для работы), и этот контейнер одинаково работает на любом сервере.

Такой подход решает известную проблему «у меня на компьютере работало». Программа часто работает на ноутбуке разработчика, но ломается на сервере из-за других версий и настроек. Внутри Docker-контейнера окружение везде одинаковое: контейнер, протестированный на ноутбуке, без изменений работает и на боевом сервере. Деплой (выпуск новой версии сайта) становится быстрее и заметно безопаснее.

Docker часто путают с виртуальными машинами, но разница существенная. Виртуальная машина запускает для каждого приложения отдельную полноценную операционную систему, что требует гигабайтов памяти и диска. Контейнер же использует ядро операционной системы сервера и несёт в себе только само приложение с зависимостями. Поэтому контейнеры стартуют за секунды, и на одном сервере спокойно работают десятки контейнеров.

Реальные проекты обычно состоят из нескольких частей: веб-приложение, база данных, кеш-сервер и так далее. Инструмент Docker Compose позволяет описать все эти части в одном конфигурационном файле и запустить их одной командой. Ядро Docker, Docker Engine, распространяется с открытым кодом по лицензии Apache-2.0, то есть за запуск контейнеров на своих серверах платить не нужно.

Что это значит для вашего бизнеса

Для владельца сайта польза Docker ощутима напрямую: при обновлениях реже случаются ситуации «на сервере что-то сломалось», перенос сайта на другой сервер занимает часы вместо дней, контейнеры просто запускаются на новой машине, а при проблеме можно за минуты откатиться к предыдущей рабочей версии. Всё это означает меньше простоев и более предсказуемую работу сервиса.

Как это использует SaytPro

Сайты, которые делает SaytPro, работают на VPS-серверах, а инфраструктура подбирается под масштаб каждого проекта. Docker полезен в системах из нескольких сервисов: бэкенд, база данных и вспомогательные сервисы работают в отдельных воспроизводимых окружениях. Для одного сайта на Next.js часто проще и легче запускать его прямо на сервере под менеджером процессов.

Наши услуги на этой технологии

Частые вопросы

Docker это платформа, которая запускает программы в стандартных пакетах: контейнерах. Представьте морской контейнер: он грузится на любое судно одинаково, независимо от содержимого. Docker-контейнер упаковывает сайт со всем необходимым, и он одинаково работает на любом сервере.

Контейнер это изолированная среда, в которой находится приложение и всё нужное для его работы: библиотеки, настройки, конфигурация. Поскольку контейнер изолирован от остальных программ на сервере, конфликты версий не возникают, а на одной машине могут одновременно работать десятки контейнеров.

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

Ядро Docker, Docker Engine, имеет открытый исходный код и лицензию Apache-2.0, то есть запуск контейнеров на сервере не требует никаких лицензионных платежей. Платная подписка нужна только для Docker Desktop (настольного приложения разработчика) при коммерческом использовании в крупных компаниях, к хостингу сайтов это не относится.

Проблема возникает, когда программа работает у разработчика, но падает на сервере из-за других версий и настроек. Docker «замораживает» окружение внутри контейнера, поэтому протестированная среда и боевая среда идентичны. Неожиданностей при выкатке новой версии становится значительно меньше.

Три конкретные выгоды: обновления проходят стабильнее, потому что протестированное окружение совпадает с боевым; переезд на другой сервер или хостинг занимает часы, а не дни; при сбое можно быстро откатиться на предыдущую рабочую версию. В итоге сайт реже простаивает.

Docker Compose это инструмент для управления приложениями из нескольких контейнеров. Типичный сайт состоит из веб-приложения, базы данных и кеша: Compose описывает их все в одном YAML-файле (текстовом формате конфигурации) и запускает одной командой. Широко используется в малых и средних проектах.

Docker создаёт и запускает контейнеры, а Kubernetes это система оркестрации, которая автоматически управляет сотнями контейнеров на множестве серверов. Для малых и средних сайтов Docker (часто с Docker Compose) полностью достаточен; Kubernetes рассчитан на крупные многосерверные системы и добавляет заметную сложность.

Контейнеры изолируют приложения друг от друга, что идёт на пользу безопасности: проблема в одном приложении не распространяется легко на другие. Но Docker не делает систему безопасной автоматически: образы (шаблоны контейнеров) нужно брать из доверенных источников, регулярно обновлять, а контейнеры запускать с ограниченными правами.

Docker выпущен в 2013 году компанией Docker, Inc. (ранее dotCloud) под руководством Соломона Хайкса. Сама технология контейнеров существовала в Linux и раньше, но Docker сделал её простой и доступной каждому, и за несколько лет она стала отраслевым стандартом.

Да. Это зависит от устройства проекта: в системах из нескольких сервисов Docker помогает разделить окружения, а один сайт на Next.js часто проще запускать прямо на сервере под менеджером процессов. Это позволяет выкатывать обновления с минимальным простоем и исключает влияние одного проекта на другой.

Технологии, с которыми она обычно работает в связке.

Высокопроизводительный веб-сервер и reverse proxy, на котором работают миллионы сайтов.

  • Инфраструктура

Виртуальный сервер с выделенными ресурсами и полным контролем для вашего сайта.

  • Инфраструктура

Система контроля версий, которая хранит всю историю изменений кода и делает возможной командную работу.

  • Инструмент