Что такое Docker и зачем он нужен
Если простым языком, то Docker – это инструмент для работы с веб-приложениями: сайты, API, CRM-системы. С помощью Docker можно контролировать разработку от начала работы, до публикации приложения в свет.
Что такое Docker
Docker – это инструмент, с помощью которого можно легко создавать контейнеры на сервере и проводить различные манипуляции с ними.
Ну спасибо… одно непонятное заменил на другое. А что такое контейнер?
Что такое контейнер
Контейнер - это вместилище “чего-либо”: базы данных, сайта, исполнительной среды какого-нибудь языка программирования: PHP, Node.js, Ruby и так далее. Другими словами, контейнер - это способ упаковать приложение для дальнейшего использования.
Внутри Docker-проекта контейнеров может быть много, ведь как говорят многие программисты, системные администраторы и инженеры: “Один процесс - один контейнер”. А это значит, если Вам нужна база данных и исполнительная среда для какого-то языка программирования, то Docker-проект будет состоять из двух контейнеров.
Простой теоретический пример контейнеризации
Допустим, Вы хотите создать сайт на WordPress. Для этого с помощью Docker вы создаете два контейнера: первый контейнер будет содержать исполнительную среду для языка программирования PHP, второй контейнер будет содержать в себе базу данных MySQL. Вот и все.
Как работает Docker и контейнеризация
Если не вдаваться в технические дебри, можно сказать, что Docker - это некая операционная система для контейнеров. После установки на сервер Docker предоставляет доступ к простым командам, необходимым для сборки, запуска или остановки контейнеров. Например, если у Вас есть контейнер с базой данных, с помощью Docker можно к нему подключиться и выполнять SQL-команды.
Пример создание контейнера
Для начала установите Docker. Лучше воспользоваться официальной инструкцией, ибо для MacOS и Windows (без учета WSL) он ставится как полноценная программа с интерфейсом, а на Linux нужно использовать только терминал.
Далее, создайте на рабочем столе любую папку, а внутри файл docker-compose.yml с таким содержимым:
version: "3.3"
services:
node:
image: node:18.16.0-alpine
tty: true
working_dir: /opt/server
command: node
Должно выйти как-то так:
По адресу папки откройте терминал (MacOs, Linux) или командную строку (Windows) и выполните команду:
docker-compose up --build -d
После, можете перейти в контейнер командой:
docker-compose exec node sh
И уже в контейнере можете делать с Node.js что хотите, например вызвать:
node -v
В результате увидите: “v18.16.0”.
Преимущества использования Docker
Контейнеризация ускоряет процесс разработки приложения, а также оптимизирует процесс развертывания системы на боевом сервере.
Скорость развертывания
Когда программист только начинает создавать что-то, ему необходимо настроить виртуальное окружение у себя на компьютере. Современные приложения не делаются на одном языке программирования, даже для создания сайта используется несколько технологий: PHP, JavaScript, Node.js, MySQL, Nginx, Webpack. В грамотно настроенном виртуальном окружении эти технологии связаны и взаимодействуют между собой дополняя друг друга.
Виртуальное окружение – это некая удобная среда разработки, в которой есть все необходимые программы и сервисы для разработки приложения.
Создать виртуальное окружение это полдела, ведь еще необходимо чтобы оно запускалось у других программистов без всяких костылей и велосипедов. Это муторный процесс, который занимает огромное количество времени и сил. С Docker, этот процесс упрощается в разы, ведь проще запустить два контейнера с нужными вещами одной командой, чем полтора часа ставить нужный софт по отдельности и танцевать вокруг “открытия и закрытия” портов на своем компьютере.
Микросервисы
Контейнеры приближают систему к микросервисной инфраструктуре, а это значит добавление нового функционала происходит намного проще, чем при монолитном подходе.
Автоматизация развертывания обновлений
Проекты сделанные с помощью Docker очень легко связываются с онлайн системами контроля версий по типу GitHub и GitLab, что позволяет легко выпускать новые обновления функционала и выполнять “откат” обновления в случае сбоя за пару команд в терминал.
Безопасность и стабильность системы
Приложения работают внутри контейнера, а сам контейнер - это просто набор процессов изолированных от основной операционной системы. Поэтому приложения не могут умышленно или случайно навредить основной операционной системе. Если контейнер вышел из строя, достаточно его перезапустить. Если в контейнере вирус, то просто пересоберите образ и его уже не будет. К слову, Docker и сам может перезапускать контейнеры, если они вышли из строя.
Низкое потребление ресурсов
Система, в которой есть несколько контейнеров с разными технологиями (PHP, Node.js, MySQL) будет потреблять меньше ресурсов, чем если эти сервисы будут установлены мануально и запущены на одном сервере вне Docker.
Итог
Как Вы видите, Docker – это потрясающий инструмент, который позволяет автоматизировать процесс разработки и развертывания приложения до комфортного состояния.
Оставьте комментарий