Получите бесплатно 4 курса для лёгкого старта работы в IT
Получить бесплатно
Главная БлогDoker: безопасные контейнеры виртуальной среды
Doker

Doker: безопасные контейнеры виртуальной среды

Дата публикации: 29.05.2023
1 599
Время чтения: 14 минут
Дата обновления: 22.12.2023
В статье рассказывается:

Что это такое? Doker – программное обеспечение, позволяющее работать с приложениями в виртуальной среде, не разворачивая их на физических серверах. Это значительно ускоряет процесс настройки окружения и делает работу в среде безопасной.

Как работает? Технология основана на таком понятии, как контейнер. Именно в этих контейнерах и происходит развертывание приложений, после завершения работы все данные стираются. Различные компоненты Doker позволяют настроить рабочий процесс под любые нужды администратора.

В статье рассказывается:

  1. Принцип работы Doker
  2. Особенности контейнеров в Doker
  3. Преимущества работы с Doker
  4. Компоненты Doker
  5. Инструменты для хранения данных в Doker
  6. Полезные команды для работы с Doker
  7. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.
    Бесплатно от Geekbrains

Принцип работы Doker

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

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

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

Doker
Doker

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

Таким образом обеспечивается полная изоляция работы приложений от основной операционной системы и, как следствие, повышается безопасность. Но при этом на реальное «железо» возникает дополнительная вычислительная нагрузка.

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

Особенности контейнеров в Doker

  • Главная особенность контейнеров заключается в их относительно коротком жизненном цикле. Каждая из «песочниц» может быть остановлена, перезапущена и при необходимости уничтожена вместе со всеми данными внутри нее. В связи с этим существует особое правило проектирования приложений, известное как Stateless. Оно рекомендует избегать хранения важных данных в контейнерах.
  • Контейнеры служат для упаковки лишь тех процессов и зависимостей, которые требуются для выполнения кода. Благодаря этому запуск осуществляется достаточно быстро. Легковесность контейнеров в свою очередь позволяет экономить место на носителе.
  • На запуск каждого процесса выделяется свой контейнер, который можно безопасно отключить, например, для отладки и обновления. На работу всей программы это никак не повлияет.
  • В результате контейнеризации процессы надежно изолируются друг от друга. Тем самым повышается общая безопасность всей системы. Работающие внутри контейнера приложения никак не влияют на функционирование основной операционной системы, поскольку не имеют к ней доступа.
  • Контейнеризация позволяет развертывать приложения на разных хостах в автоматическом режиме.
Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

pdf 3,7mb
doc 1,7mb
Уже скачали 32059 pdf иконка
  • Переход от монолитной архитектуры к микросервисной упрощается благодаря использованию контейнеров. В итоге появляется возможность быстрее и безопаснее разрабатывать новый функционал для приложений, изменяя отдельные компоненты. Остальная система при этом не страдает.
  • По эффективности контейнеризация выигрывает у классических виртуальных машин. Одна и та же конфигурация компьютера позволит запустить гораздо больше контейнеров, нежели «виртуалок». Этот факт приобретает особую важность, когда нужно использовать облачную инфраструктуру. Ресурсов в таком случае потребуется заметно меньше.

Преимущества работы с Doker

Работая с контейнерами Doker, разработчики получают массу преимуществ.

Гибкость и адаптивность

Докер дает возможность запускать контейнеры одинаково легко как на локальном устройстве, так и в «облаке». Достаточно лишь единожды создать базовый шаблон, чтобы затем использовать его сколько угодно раз. Это позволяет бесшовно переносить и быстро развертывать разрабатываемые приложения.

Значительное снижение количества ошибок, возникающих из-за несовпадения рабочих окружений

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

Быстрое развертывание

Настройка рабочего окружения при работе с Докером больше не требуется. Это сокращает общее время развертывания приложений практически в несколько раз.

Универсальность

Разработчики могут использовать в Докере любые удобные им языки и средства программирования. Благодаря этому исчезает проблема несовместимости разных библиотек и технологий.

Поддержка сообщества

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

Непрерывность разработки

Имеющийся инструментарий для управления трафиком позволяет обновлять приложения, не влияя при этом на работоспособность всей системы и на обслуживание пользователей.

Простое администрирование

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

Повышенная безопасность

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

Экономическая эффективность

Благодаря легковесности и производительности контейнеров повышается эффективность управления существующими ресурсами. Как результат, сокращаются финансовые издержки компании.

Микросервисная архитектура

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

Компоненты Doker

Рассмотрим каждый компонент Докера по отдельности.

Daemon

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

Компоненты Doker
Компоненты Doker

Изначально демоны платформы упоминались под именем dockerd. С тех пор они развились в отдельные проекты. Преемником же dockerd является containerd.

Client

Клиент предоставляет пользователю интерфейс командной строки для управления daemon

Он необходим при создании и развертывании контейнеров. В процессе работы происходит отправка клиентом соответствующих запросов демону.

Image

На основе образа, представленного в виде неизменяемого файла, происходит развертывание контейнеров. А точнее, этот файл представляет собой упакованные приложения, которые планируется запускать внутри контейнера. Фактически, это аналог образа (или дистрибутива) операционной системы, использующийся при ее установке на компьютер.

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

Container

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

Compose

Предполагается, что один контейнер предназначен для выполнения одной функции. А значит, сложная задача потребует развертывания нескольких образов. Безусловно, можно сделать это вручную.

Но в Докере существует специальный компонент Compose, позволяющий эффективно работать с множественными образами и многоконтейнерными приложениями, управлять несколькими контейнерами как одним. При этом создается файл YAML, который определяет все нужные службы и дает возможность запускать и останавливать нужные из них одной командой. Использование Compose существенно ускоряет процесс разработки, ведь многоконтейнерные приложения могут управляться десятками контейнеров.

Registry

В репозитории Registry содержатся все образы для развертывания, выкладываемые самими разработчиками. Хранящиеся здесь данные доступны для свободного скачивания и использования.

Наиболее популярным считается репозиторий Docker Hub, в котором можно найти образы многих популярных приложений и платформ. Среди таковых — многочисленные базы данных, веб-серверы, компиляторы, операционные системы и т. д. Кроме того, разработчиками создаются собственные приватные репозитории, например, для пользования сотрудниками компаний.

Dockerfile

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

Инструменты для хранения данных в Doker

Контейнеры могут быть в любой момент остановлены или уничтожены. Такая специфическая эфемерность способна привести к потере всех находящихся внутри данных, поэтому особенно важно разрабатывать приложения с соблюдением принципа Stateless (то есть, не полагаясь на хранение данных в контейнере).

Дарим скидку от 60%
на курсы от GeekBrains до 01 декабря
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей
Забронировать скидку

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

Однако далеко не везде можно обойтись без сохранения промежуточных данных. И на такие случаи разработано несколько инструментов.

Volumes

Использование томов (volumes) предполагает автоматическое создание директорий для хранения данных, доступных для определенных контейнеров. По умолчанию это делается на основном компьютере, но имеется возможность подключить облачные хранилища.

Bind Mount

Инструменты для хранения данных в Doker
Инструменты для хранения данных в Doker

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

Tmpfs, Named Pipes

Это особые способы хранения данных, характерные для определенных операционных систем. Файловая система tmpfs представляет собой временное хранилище в Linux, предназначенное для оптимизации работы контейнера.

Следует учитывать, что при остановке контейнера содержимое этого хранилища стирается. Поэтому для постоянного хранения использовать tmpfs нельзя. Пользователям Windows предлагаются именованные каналы (Named Pipes), обеспечивающие нормальное взаимодействие с Докером в этой ОС.

Полезные команды для работы с Doker

Ниже приведем список наиболее полезных команд Doker. Скачать полное руководство по работе с этой системой можно в сети.

Просмотр созданных контейнеров:

  • docker ps

По этой команде будет выведен список только запущенных в данный момент контейнеров. Чтобы отобразить абсолютно все контейнеры, включая остановленные, необходимо добавить опцию -a:

  • docker ps -a

Остановка и удаление всех контейнеров

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

  • docker stop $(docker ps -a -q)
  • docker rm $(docker ps -a -q)
Только до 28.11
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:
ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы получить файл, укажите e-mail:
Введите e-mail, чтобы получить доступ к документам
Подтвердите, что вы не робот,
указав номер телефона:
Введите телефон, чтобы получить доступ к документам
Уже скачали 52300

Запуск контейнера с последующим его удалением

По умолчанию Докер сохраняет завершившие работу и остановленные контейнеры для возможности их повторного запуска пользователем. Если какой-то контейнер сохранять после остановки не нужно, следует при его запуске добавить ключ —rm:

  • docker run —rm <название>

Просмотр имеющихся образов

Вывод списка скачанных образов производится командой:

  • docker images

Удаление образа

Выполняется командой:

  • docker rmi <имя образа>

При наличии развернутых контейнеров у данного образа (в том числе остановленных) попытка удаления завершится ошибкой:

  • Unable to remove repository reference <имяобраза> (must force) — container <id-контейнера> is using its

Но выполнить эту операцию можно принудительно, указав ключ -f:

  • docker rmi -f <имя образа>

Вывод списка контейнеров, развернутых из указанного образа

Выполняется командой:

  • docker ps -a —filter ancestor=<имя образа>
Вывод списка контейнеров, развернутых из указанного образа
Вывод списка контейнеров, развернутых из указанного образа

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

Хотите стать мастером универсального языка программирования? Узнайте, как создавать сайты, приложения и нейросети с курсом Python-разработчика. Станьте востребованным специалистом в IT сфере уже через 9 месяцев обучения. Присоединяйтесь к дружной команде опытных преподавателей и студентов, которые уже достигли успеха в сфере программирования.
Оцените статью:
5
Добавить комментарий

Сортировать:
По дате публикации
По рейтингу
  1. Аноним

    Правильно пишется Docker

    0
    0
    Ответить
Читайте также
prev
next
Бесплатные вебинары:
prev
next
Как работает дизайн-студия на примере одного кейса 

Как работает дизайн-студия на примере одного кейса 

Узнать подробнее
Инновационные подходы к обучению информационным технологиям

Инновационные подходы к обучению информационным технологиям

Узнать подробнее
Как стать Python-разработчиком

Как стать Python-разработчиком

Узнать подробнее
Что нужно знать разработчику

Что нужно знать разработчику

Узнать подробнее
Кто такой тестировщик и как им стать

Кто такой тестировщик и как им стать

Узнать подробнее
Чем занимается программист и как им стать

Чем занимается программист и как им стать

Узнать подробнее
Как искусственный интеллект помогает и мешает задачам кибербезопасности

Как искусственный интеллект помогает и мешает задачам кибербезопасности

Узнать подробнее
Бесплатный вебинар про внедрение искусственного интеллекта

Бесплатный вебинар про внедрение искусственного интеллекта

Узнать подробнее
Какие есть профессии в ИТ

Какие есть профессии в ИТ

Узнать подробнее
Смените профессию,
получите новые навыки,
запустите карьеру
Поможем подобрать обучение:
Забрать подарок

Получите подробную стратегию для новичков на 2023 год, как с нуля выйти на доход 200 000 ₽ за 7 месяцев

Подарки от Geekbrains из закрытой базы:
Осталось 17 мест

Поздравляем!
Вы выиграли 4 курса по IT-профессиям.
Дождитесь звонка нашего менеджера для уточнения деталей

Иван Степанин
Иван Степанин печатает ...