Блог
  • Разработка

Что разработчику нужно знать о контейнерах Docker

Контейнеризация — это подход к разработке ПО, при котором всё необходимое для запуска приложения объединяется в образ контейнера. Вместе с оркестраторами Kubernetes или Docker Swarm контейнеризация позволила перейти от виртуальных хранилищ к облачным инфраструктурам и быстрее развёртывать приложения.

Что собой представляет Docker

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

  1. Грузчики упаковывают все товары в один контейнер. Запечатывают его.

  2. Корабль транспортирует груз до пункта назначения.

  3. Рабочие распаковывают груз и собирают в готовый продукт.

То же самое происходит с цифровым продуктом. Разработчики пакуют приложение со всем окружением в один контейнер и отправляют до точки назначения. Здесь вы его распаковываете и начинаете использовать под свои нужды. Не нужно переживать, что операционная система может не подойти под запросы приложения. Потому что программа запускается уже на заранее настроенной ОС внутри контейнера, а все процессы работают на физическом хост-сервере.

Контейнером служит платформа Docker. Она содержит контролируемую среду, эффективно управляет всеми ресурсами, и в ней нет привязки к поставщику.

Разработчики игр и приложений говорят, что Docker-контейнер помогает воплощать идеи в жизнь и преодолевать трудности и сложности.

Docker — это инструмент, с помощью которого программисты могут запускать различные приложения в изолированных контейнерах на одном сервере.

При создании омниканальной коммуникации наши разработчики тоже использовали технологию контейнеризации.

Преимущества Docker

Размер контейнеров зависит от сложности содержимого. Слишком большие файлы можно уменьшить, чтобы они быстрее развёртывались на сервере. Используйте базовые образы, прописывайте инструкции для очищения после выполнения команды Run, чтобы контейнеры не занимали много места на диске.

К другим преимуществам использования Docker-контейнеров в разработке относят:

Упрощение развёртывания приложений

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

Нет зависимости от операционной системы и другого рабочего окружения

Докер несёт в себе библиотеки, системные программы, файлы настройки. Создав контейнер на одной ОС, вы можете перенести на другую и развернуть в ней. Это большой плюс, который позволяет вам заниматься разработкой приложения, а не подгонять его под Windows или MacOS.

Изоляция как безопасность для рабочего окружения

Настройки и файлы в Docker не смогут нанести вред ОС, на которой его запускают, так как программа работает внутри контейнера, не затрагивая ОС. Если произойдёт ошибка, приложение будет закрыто автоматически. Операционная система продолжит работать.

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

Использование Docker экономит деньги и время на развёртывание виртуальной машины, установку в неё Windows или MacOS и вливание документов и настроек программы, над которой будете работать. Вы сможете развернуть десяток контейнеров на ресурсах одного физического хоста.

Технология контейнеризации знаменует переход от монолитной архитектуры в пользу микросервисной. Эту теорию подтверждает история интернет-портала «Спорт 24».

Главные элементы (сущности) Docker

Платформа для разработки приложений состоит из компонентов Docker:

  • Docker Image. На русском «образ» или «шаблон». По нему разработчик делает остальные контейнеры. Он похож на слоёный пирог. Сравнение оправдывает работа с ним: сверху основного слоя образа разработчик накладывает слой файловой системы. В него устанавливают зависимости, само приложение, настройки. Образы наследуются.

  • Dockerfile. Документ, где прописаны инструкции для монтажа образа. Из этого файла вы узнаете, что это за Image, откуда его взять и куда положить. Вы создаёте документ по принципу «одна строка — одна команда».

  • Контейнер. Иначе его называют «run-time сущность», или приложение, развёрнутое с использованием контейнера Docker. Основой сущности является Docker Image. Когда вы запускаете развёртывание контейнера поверх файловой системы, Docker создаёт изменяемый слой. Приложение записывает информацию и редактирует её. Когда контейнер удаляется, происходит стирание данных. Однако её можно сохранить с помощью инструмента Volumes.

  • Docker Registry. Это репозиторий. В нём вы храните Docker-образы. Вы можете сделать его как локальным, так и публичным или скачать нужные для разрабатываемого приложения репозитории с Docker Hub и GitLab. Разработчики размещают в этих библиотеках образы с описанием и тегами.

Если собираетесь развернуть контейнер на операционной системе Linux, то найдёте в ней подготовленные механизмы для изготовления программных контейнеров:

  • Capabilities — выдача расширенных прав процессу на удаление и изменение файла.

  • Namespace. Пространство для создания изолированного окружения. Разработчики выделяют шесть видов имён пространств: IPC, Network, Mount, PID, User, UTS.

  • Cgroups — контрольные группы. Эти механизмы позволяют разделять ресурсы оборудования, устанавливать лимиты.

  • Union File System. Файловая система для создания блоков, из которых делается контейнер.

Внимание! Формат контейнера называется libcontainer.

Как установить Docker

Запуск и настройка Docker потребуют от вас:

  • знаний инструмента, его терминологии, команд, специфики работы с ним

  • базовых навыков работы с командной строкой, в том числе с командами CMD в Powershell

  • умения работать с репозиторием Git

Для установки нужна операционная система Windows 10, версия 16299 или выше. Центральный процессор оборудования, на котором будет развёрнут Docker, должен соответствовать следующим параметрам:

  • разрядность — 64 бит

  • поддержка Second Level Address Translation (SLAT)

Память ОЗУ персонального компьютера или ноутбука не менее 4 Gb и включённая поддержка аппаратной виртуализации. Эта технология включается в BIOS.

После того как оборудование будет подготовлено, включаете Hyper V Containers Windows по инструкции:

  1. Откройте меню «Пуск» и войдите в «Панель управления».

  2. Перейдите во вкладку «Установка и удаление программ».

  3. В ней найдите раздел «Программы и компоненты Windows» и перейдите в него.

  4. Установите галочку напротив пункта Hyper V.

Внимание! Для использования Hyper-V Containers на Windows на компьютере должна быть установлена версия Windows 10 Pro, Enterprise или Education.

  • теперь скачайте Docker Desktop Installer с Docker Hub
  • запустите установщик
  • дождитесь окончания работы
  • перезагрузите компьютер

Зарегистрируйте профиль на Docker Hub, чтобы работать с приложением Docker Desktop. После установки программы вам нужно будет войти в этот аккаунт.

Система может потребовать установку WSL2. У пользователя должна быть Windows 10 версии 2004 или выше.

Пройдите по указанной ссылке в запросе от системы, скачайте компонент и поставьте его. Снова перезагрузите компьютер.

Как настроить приложение Docker

Теперь вам потребуется выполнить эти шаги.

  1. Запустите приложение Docker Desktop на рабочем столе.

  2. Кликните по вкладке Settings («Настройки»). Этот пункт вы найдёте в контекстном меню Docker.

  3. В меню настройщика Docker кликните по вкладке General.

  4. Проверьте, включена ли функция Expose daemon on tcp://localhost:2375 without TLS. Она отвечает за открытие демона по адресу tcp://localhost:2375 без использования TLS.

  5. Теперь вы сможете взаимодействовать с приложением Docker через PowerShell.

  6. Сделайте тестовый запуск контейнера. Пропишите docker run hello-world.

При успешном прохождении теста продолжите использовать приложение.

Как работать с Docker

После того как установлен Docker, вам нужно запустить первый контейнер. Эту процедуру выполняют командой из словосочетания Docker Pull. Её прописывают в открытом терминале и вводят название образа, который будет скачан из репозитория Docker.

Внимание! Вы можете получить образы Docker из различных источников. Основное место — Docker Hub. В нём лежат базовые официальные образы. Например, Busybox, memcached.

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

Вот такая строка должна получиться: docker run busybox echo "hello from busybox", где echo является командой. Она возвращает на экран заданное разработчиком предложение.

Так работает Docker.

Команды, которые обязательно нужно выучить при работе с Docker

Необходимые команды, которые понадобятся при сборе Docker Image и запуске контейнера, прописаны в таблице.

Команда

Описание

Build

Сделать образ для Docker

Create

Создать новый контейнер

Kill

Остановить работу контейнера принудительно

Dockerd

Запустить сервис Docker

Commit

Создать новый образ из изменений в контейнере


Внимание! Прежде чем Docker будет собирать контейнер, нужно прописать количество памяти и резервов ЦПУ. Эту процедуру делают для того, чтобы не уничтожить всю ОС. Если не прописать условия, контейнер может поглотить всю оперативную память и ресурсы CPU.

Разница между VMWare и контейнерами

Если вы Junior-разработчик или только учитесь на него, то вы можете подумать, что контейнеризация и виртуализация — это одинаковые понятия. На самом деле это не так.

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

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

  • Контейнеры являются самодостаточными пакетами ПО, способными работать на любой ОС. Они не могут быть изменены системой. Виртуальные машины можно настраивать и изменять их параметры, а также параметры приложений, которые в них работают, не затрагивая ОС.

Вес Virtual machines исчисляется гигабайтами. Обычно контейнеры имеют значительно меньший размер, чем виртуальные машины.

Виртуальная АТС тоже может быть развёрнута с помощью контейнеризации.

То, о чём не рассказывают разработчики

Главным недостатком Docker считают операционную систему, под которую его разрабатывали изначально, — это Linux. И это значит, что на операционных системах Windows и MacOS контейнер не поддерживает некоторые виды сетей. Может быть, вы этого не узнаете и не встретитесь с этими ограничениями, но о них нужно помнить. В единичных случаях разработчики сталкивались с конфликтами Docker с Virtual Box при установке на Windows.

Для множества контейнеров понадобится установка оркестраторов. Это Kubernetes или Docker Swarm. Первый оркестратор позволяет автоматизировать работу с контейнерами на ОС Linux. Он помогает балансировать нагрузку. Его трудно настраивать. Однако, по сравнению с Docker Swarm, Kubernetes предоставляет пользователям больше возможностей.

Docker Swarm используют для решения базовых задач. Он создаёт из пары-тройки хостов с контейнерами единый кластер Swarm. В результате все хосты оркестратор считает единым контейнерным пространством.

Заключение

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

Предыдущая статья
Оцените статью:
Следующая статья