методология_devops:основные_понятия_docker:start
Системы виртуализации и контейнеризации. Работа с Docker (Основные понятия)
Введение
Виртуализация (Virtualization)
Определение: Создание виртуальной версии чего-либо, например, операционной системы, сервера, хранилища или сетевого ресурса.
Принцип работы: Гипервизор (Hypervisor) управляет физическими ресурсами и распределяет их между виртуальными машинами (Virtual Machines, VMs).
Архитектура:
Тип 1 (Bare-metal): Гипервизор устанавливается непосредственно на физический сервер (например, VMware ESXi, Microsoft Hyper-V Server).
Тип 2 (Hosted): Гипервизор устанавливается как приложение на существующей операционной системе (например, VirtualBox, VMware Workstation).
Характеристики виртуальных машин:
Каждая VM имеет собственную операционную систему, ядро, библиотеки и приложения.
Обеспечивают высокий уровень изоляции.
Требуют значительных ресурсов (CPU, RAM, disk space) для каждой VM.
Процесс запуска и остановки может быть медленным.
Применение: Тестирование, разработка, развертывание сложных приложений с различными требованиями к ОС.
Контейнеризация (Containerization)
Определение: Упаковка приложения и всех его зависимостей (библиотек, системных утилит, кода, среды выполнения) в легковесный, переносимый контейнер.
Принцип работы: Контейнеры используют общее ядро хостовой операционной системы, но изолированы друг от друга на уровне процессов и файловой системы.
Архитектура:
Docker Engine (или другой движок контейнеризации): Управляет созданием, запуском и остановкой контейнеров.
Контейнеры используют общие ресурсы хостовой ОС, что делает их более легкими и быстрыми по сравнению с VM.
Характеристики контейнеров:
Легковесные и быстро запускаются/останавливаются.
Используют меньше ресурсов, чем VM.
Обеспечивают изоляцию на уровне приложений.
Переносимость между различными средами (при наличии Docker Engine).
Применение: Микросервисная архитектура, CI/CD, быстрое развертывание и масштабирование приложений.
Docker: Введение
Основные понятия Docker
Docker Image (Образ Docker):
Шаблон с инструкциями для создания Docker-контейнера.
Содержит все необходимое для запуска приложения: код, библиотеки, зависимости, инструменты, настройки.
Образы являются неизменяемыми (immutable).
Создаются на основе Dockerfile.
Dockerfile:
Текстовый файл, содержащий последовательность инструкций для сборки Docker-образа.
Определяет базовый образ, копирование файлов, установку пакетов, настройку окружения, команду для запуска приложения и т.д.
Docker Container (Контейнер Docker):
Запущенный экземпляр Docker-образа.
Изолированная среда выполнения для приложения.
Может быть создан, запущен, остановлен, перемещен или удален.
Несколько контейнеров могут быть созданы из одного и того же образа.
Docker Hub:
Облачный реестр (registry) Docker-образов.
Содержит большое количество публичных образов, созданных Docker и сообществом.
Позволяет хранить и обмениваться собственными образами.
Docker Daemon (Docker Engine):
Фоновый сервис, работающий на хостовой машине.
Отвечает за сборку, запуск, управление образами и контейнерами.
Принимает команды от Docker Client.
Docker Client:
Docker Registry:
Сервис для хранения и распространения Docker-образов.
Docker Hub является публичным реестром, но также могут быть созданы частные реестры.
Docker Volume (Том Docker):
Механизм для обеспечения постоянного хранения данных, используемых контейнерами.
Данные в томах не удаляются при удалении контейнера.
Могут быть различных типов (например, named volumes, bind mounts).
Docker Network (Сеть Docker):
Изолированные сети, которые позволяют контейнерам взаимодействовать друг с другом и с внешним миром.
Docker создает несколько стандартных сетей (например, bridge, host, none), а также позволяет создавать пользовательские сети.
Заключение
Виртуализация и контейнеризация - ключевые технологии для изоляции и управления приложениями.
Docker - ведущая платформа в области контейнеризации, предоставляющая удобные инструменты для работы с контейнерами.
Понимание основных понятий Docker (образы, контейнеры, Dockerfile, Docker Hub и т.д.) является фундаментом для эффективного использования этой технологии.
методология_devops/основные_понятия_docker/start.txt · Последнее изменение: 2025/05/31 20:12 — kirill