logo
Web
Разработка сайтов

Что такое Docker и зачем он нужен

Если простым языком, то Docker – это инструмент для работы с веб-приложениями: сайты, API, CRM-системы. С помощью Docker можно контролировать разработку от начала работы, до публикации приложения в свет.

Что такое 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

Должно выйти как-то так:

пример docker контейнера

По адресу папки откройте терминал (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 – это потрясающий инструмент, который позволяет автоматизировать процесс разработки и развертывания приложения до комфортного состояния.

Оставьте комментарий

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Нет комментариев