Почему в каждой ИТ-вакансии требуется Docker
Виртуализация ― предоставление набора вычислительных ресурсов или их логического объединения, абстрагированное от аппаратной реализации, и обеспечивающее при этом логическую изоляцию друг от друга вычислительных процессов, выполняемых на одном физическом ресурсе.
Простыми словами, виртуализация позволяет эмулировать работу любого программного обеспечения, в том числе на своем компьютере, запускать другие операционные системы, эмулировать работу сетевого оборудования, разворачивать несколько операционных систем без необходимости переустановки основной.
Виртуализацию можно разделить на программную, когда на операционную систему устанавливается средство виртуализации (гипервизор), и аппаратную, когда гипервизор устанавливается непосредственно на компьютер (Hyper-V, VMware ESX/ESXi).
Контейнеризация позволяет не разворачивать полноценную операционную систему для виртуальной машины и обойтись только необходимым минимумом для запуска конкретного приложения, что значительно экономит вычислительные ресурсы.
Преимущества контейнеризации
Удобство развертывания. Любое написанное приложение легко поместить в контейнер, развернуть и запустить на любом компьютере.
Экономия ресурсов. Средства контейнеризации не виртуализируют операционную систему, не требуют выделять на компьютере дисковое пространство для хранения всей ОС и установленных компонент, выделять оперативную память для обеспечения их функционирования. При контейнеризации хранится и запускается только ядро хоста на уровне процессора, что позволяет запускать большее число контейнеров (виртуальных приложений) на одном сервере.
Быстрота развертывания. Использование шаблонов позволяет один раз создать настроенный образ ОС с необходимым ПО и использовать его по необходимости “из коробки” либо скачать образ интересующего языка программирования, протестировать, разобраться в работе и удалить.
Безопасность. Контейнеризация изолирует между собой запускаемые приложения в разных виртуальных средах и работа одного приложения не может повлиять на работу другого кода, в том числе получить доступ к информации другого приложения.
Какие задачи решает Docker?
Docker устанавливается на Вашу операционную систему ― Windows, Linux или macOS.
Позволяет скачивать из хранилища (сайт https://hub.docker.com/, раздел Explore) любой образ (операционные системы, языки программирования, в том числе с требуемым серверным окружением)
Например, код написанный в DockerFile (используется для описания требуемой для разворачивания окружения):
FROM php:7.2-apache
WORKDIR /var/www/html
COPY . /var/www/html
EXPOSE 80
Этот код даст Docker команду скачать язык программирования PHP версии 7.2 с поддержкой сервера Apache. Дополнительное развертывание сервера Apache, его настройка в данном случае не потребуется.
Создавать на основе образа контейнер, тестировать и изучать скачанные языки программирования без необходимости их установки на компьютер и настройки, упаковывать в контейнер с написанным кодом и отправлять работающую программу на Docker-хаб
Любой человек, у которого также установлен Docker и кому открыт доступ, может скачать опубликованный контейнер и запустить у себя без необходимости что-либо устанавливать.
Почему Docker есть в каждой вакансии?
Docker является отличным механизмом для обеспечения непрерывного развертывания (CD), которое используется практически в любой коммерческой компании для ускорения выпуска обновлений продуктов. Использование Docker значительно сокращает время на развертывание и настройку окружения, в том числе для отправки на тестирование. На текущий момент порядка 90% ИТ-компаний в процессе разработки используют Docker или его аналоги.
На каком уровне нужно им владеть, чтобы претендовать на позицию джун-разработчика
Для начинающего программиста достаточно понимать работу Docker, уметь скачивать образы, разворачивать и запускать контейнеры, создавать на их основе проекты, писать Dockerfile (описывает окружение, которое нужно Docker для разворачивания проекта, в файле в том числе описываются требуемый язык программирования и библиотеки) и Docker Compose (описывает настройки для крупных проектов, в которые входит несколько образов).