Погружение в базы данных PostgreSQL

Данный курс является консолидацией теоретических основ и практических примеров, которые демонстрируют работу операторов и функций SQL в системе управления базами данных PostgreSQL.

Поступить на курс

Погружение в базы данных Oracle

Данная книга является руководством для начинающих специалистов в области анализа и обработки данных. В книге рассматривается язык SQL и его процедурное расширение PL/SQL от компании Oracle.

Купить книгу

SQL без слёз

Цель книги заключается в том, чтобы научить любого человека работать с реляционными базами данных и получать из них необходимую информацию посредством выполнения SQL-запросов.

Скачать книгу

 ›  ›  › Что такое Docker?

Что такое Docker?

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

Характеристики Docker

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

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

Переходим к минусам:

  • высокое потребление ресурсов (Docker создаёт необходимую логическую область для своей работы и потребляет дополнительные ресурсы. Если у вас наблюдается нехватка ресурсов, то лучше всего использовать традиционную схему установки приложений);
  • для больших приложений нужен оркестратор (у Docker недостаточно механизмов управления и распределения ресурсов, отказоустойчивости и резервирования, чтобы реализовать различные схемы обновления контейнеров. Поэтому, в больших приложениях, которые работают по микро-сервисной архитектуре используют такие оркестраторы, как Kubernetes или OpenShift).

Компоненты Docker

Программное обеспечение Docker состоит из следующих компонентов:

  • Docker container — контейнер самый маленький элемент, в котором запускаются приложения (обычно одно приложение это один контейнер);
  • Docker image — образ, который выступает в роли основы для создания контейнеров. Из одного образа можно создать разные контейнеры и все они будут независимы друг от друга, но основа у них будет одинаковая;
  • Docker client — клиент, который запускается в командной строке и при помощи него можно подключаться к службе докера (Docker deamon);
  • Docker daemon — служба, которая отвечает за задачи по созданию контейнеров и по обработке запросов от клиента;
  • Docker host — компьютер на который установлен Docker;
  • Docker Repository — репозиторий, в котором хранятся различные версии образа;
  • Docker Registry — реестр, в котором хранятся репозитории (реестр может быть как локальный, так и удаленный);
  • Dockerfile — файл-инструкция для сборки образа (Docker image);
  • Docker Compose — инструмент для управления контейнерами. Он позволяет создавать контейнеры и устанавливать их конфигурацию.

Как создаются и работают контейнеры в Docker

Контейнеры создаются на компьютере, который работает под управлением операционной системы, которая в свою очередь базируется на ядре Linux (можно запустить Docker в Mac и Windows, но об этом чуть позже). Чтобы создавать контейнеры необходим следующий минимальный набор требований:

  • Linux Kernel — ядро операционной системы;
  • RAM (Random Access Memory) — оперативная память;
  • CPU (Central Processing Unit) — центральный процессор;
  • NETWORK — сетевые ресурсы;
  • Disk space — дисковое пространство для хранения файлов;
  • Docker Engine — запускает службу Docker daemon.

Минимальный набор требований для создания контейнеров в Docker

Далее рассмотрим, что будет происходить на компьютере при создании контейнеров.

Создаётся Container 1. Для этого контейнера на жестком диске (Disk space) создаются файлы, которые будут доступны только этому контейнеру. Далее в Container 1 запускается определенный процесс (Process), который будет использовать общее ядро операционной системы (Linux Kernel). Это же ядро будет использоваться и Docker Engine. Другими словами, у контейнера будет изолированное место на жестком диске для хранения файлов контейнера, а так же есть процессы, которые изолированы от других процессов в других контейнерах.

Поэтому можно дополнительно запустить несколько других контейнеров Container 2 и Container 3. У этих контейнеров будут отдельные файлы на жестком диске и процессы, как у контейнера Container 1, но вот ресурсы оперативной памяти (RAM), центрального процессора (CPU), сети (NETWORK) и ядра операционной системы (Kernel Linux) будут общими, так как они расположены на одном компьютере (Docker host).

Обратите внимание: у контейнеров Container 1 и Conteiner 2 запущен только один процесс (Process), а в контейнере в Container 3 запущено два процесса. Это допустимо, но на практике, чаще всего пользуются принципом: один контейнер = один процесс.

Если контейнеры создаются на базе одного образа (Docker image), то у них будут общие файлы, которые будут храниться на жестком диске в одном месте. Они не будут скопированы N раз в зависимости от количества контейнеров, которые запущены на основании образа. Благодаря такому подходу ресурсы используются намного эффективнее.

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

Как создается контейнер в Docker под управлением операционной системы на базе ядра Linux

Чтобы запустить Docker в операционных системах Windows и Mac, необходимо установить на компьютер программное обеспечение Docker Desktop. Данная программа создаст виртуальную машину Linux в которой запустится сервис Docker daemon, и все контейнеры будут создаваться внутри виртуальной машины Linux.

Запуск Docker в операционных системах Mac и Windows

Что такое образ и его структура в Docker

Образ (Docker image) выступает в роли основы для создания контейнеров, и из одного образа можно создать несколько контейнеров. Другими словами, образ — это набор файлов и он статичный.

Образ (Docker image) выступает в роли основы для создания контейнеров

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

Переходим к рассмотрению структуры образа.

Каждый образ состоит из слоёв (fs layers, file system layers), а в роли слоя выступает набор данных. Каждый слой содержит Базовый слой и дополнительные слои Слой 1, Слой 2 и Слой 3, которые добавляются к базовому слою. Такая многослойная структура образа позволяет повторно использовать слои в разных образах. Таким образом, получается, что может быть несколько разных образов у которых некоторые слои пересекаются. И в этом случае Docker Host принимает решение, что нет необходимости сохранять эти пересекающиеся слои несколько раз.

Ниже на рисунке показана структура образа.

Структура образа в Docker

Подводим итог по образам:

  • образы — статичны, а контейнеры — динамичны;
  • образы — набор слоев, а слой — набор файлов;
  • все слои в образе доступны только для чтения (read-only). Когда образ создан и соответствующие слои уже созданы, то в них уже нельзя вносить корректировки, но можно создавать другие образы;
  • образы можно легко перемещать и удалять, так как слой это набор файлов;
  • образы хранятся в репозиториях, и в репозитории может хранится несколько разных версий одного образа. В большинстве случаев базовый слой остаётся неизменным, а вот дополнительные слои могут претерпевать изменения;
  • существуют официальные образы, которые доступны на Docker hub и образы сообщества, которые создаются сторонними разработчиками.

Что такое репозиторий в Docker

Репозиторий (Docker Repository) — это место, где хранится набор разных версий одного образа. У каждой версии конкретного образа могут быть различные теги и их может быть несколько. Ниже на рисунке показана структура репозитория. Разными цветами выделены версии образа, а одинаковый цвет выделения это теги для версий образа.

Структура репозитория в Docker

Отмечаем основные характеристики репозитория:

  • в репозитории могут храниться разные версии образа;
  • разные версии образа помечаются разными тегами;
  • одна версия образа может иметь несколько тегов.

Метки: .

Записи по теме

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *