Docker
Платформа, которая упаковывает приложения со всеми зависимостями в контейнеры, одинаково работающие на любом сервере.
Docker - платформа с открытым исходным кодом, которая запускает программы в изолированных пакетах - контейнерах, вместе со всем необходимым для работы. Выпущена компанией Docker, Inc. в 2013 году и стала одним из стандартных способов развёртывания приложений на серверах.
Лучшая аналогия для Docker - морской контейнер. До появления стандартных контейнеров каждый груз загружали на судно в своей упаковке - медленно и с ошибками. Стандартный контейнер грузится на любое судно, поезд или грузовик одинаково, независимо от содержимого. Docker делает то же самое с программами: сайт или приложение упаковывается в контейнер вместе со всеми зависимостями (библиотеками и настройками, нужными для работы), и этот контейнер одинаково работает на любом сервере.
Такой подход решает известную проблему «у меня на компьютере работало». Программа часто работает на ноутбуке разработчика, но ломается на сервере из-за других версий и настроек. Внутри Docker-контейнера окружение везде одинаковое: контейнер, протестированный на ноутбуке, без изменений работает и на боевом сервере. Деплой (выпуск новой версии сайта) становится быстрее и заметно безопаснее.
Docker часто путают с виртуальными машинами, но разница существенная. Виртуальная машина запускает для каждого приложения отдельную полноценную операционную систему, что требует гигабайтов памяти и диска. Контейнер же использует ядро операционной системы сервера и несёт в себе только само приложение с зависимостями. Поэтому контейнеры стартуют за секунды, и на одном сервере спокойно работают десятки контейнеров.
Реальные проекты обычно состоят из нескольких частей: веб-приложение, база данных, кеш-сервер и так далее. Инструмент Docker Compose позволяет описать все эти части в одном конфигурационном файле и запустить их одной командой. Ядро Docker - Docker Engine - распространяется с открытым кодом по лицензии Apache-2.0, то есть за запуск контейнеров на своих серверах платить не нужно.
Частые вопросы
Docker - это платформа, которая запускает программы в стандартных пакетах - контейнерах. Представьте морской контейнер: он грузится на любое судно одинаково, независимо от содержимого. Docker-контейнер упаковывает сайт со всем необходимым, и он одинаково работает на любом сервере.



