Docker — контейнер под каждого

Доброго времени суток, Хабр!
Очень рад, что вы всегда стремитесь изучать новое, в этой статье постарался собрать всё самое необходимое для работы с контейнерами. Разберём основные термины, посмотрим как это работает изнутри, установим Docker. Разворачивать буду на своей рабочей станции: Ubuntu 22.04.
Вопросы, которые разберём в первой части:
С чего всё началось
Начнём с истории, ниже вы увидите людей, которые стояли у истоков создания Docker как одной из популярных технологий контейнеризации.

Solomon Hykes
Основатель dotCloud
Март 2013 год: код Docker был опубликован под лицензией Apache 2.0. В разработке с Solomon Hykes активное участие принимали инженеры dotCloud Andrea Luzzardi и François-Xavier Bourlet. В октябре этого же года, понимая смещение фокуса к новой технологии dotCloud переименована в Docker.
Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.
Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер.
С появлением Open Container Initiative начался переход от монолитной к модульной архитектуре.
Разберем новое понятие "Контейнер".

Conteiner (Контейнер) - фактически представляет собой изолированный процесс запущенный в какой либо системе от других параллельных процессов, а также абсолютно независим от остальных контейнеров. Запускает, такой контейнер, собственное программное обеспечение, двоичные файлы, зависимости, конфигурации и т.д.
На моём компьютере всё работало!

Основную задачу которую решает Docker - разработчик (тестировщик) знает, что всё будет работать так как должно быть, вне зависимости от платформы на которой будет запущенно приложение.
Отличие Virtual Machines от Docker
Может показаться, что контейнер - это упрощённая версия виртуальной машины. Она также содержит в себе образ операционной системы для запуска приложений.

Для того, чтобы создать VM на вашем хосте, потребуется гипервизор (Virtualbox, VMWare и др.). Он необходим для работы с нижележащей ОС. Кроме того каждой VM необходима полная копия ОС, выделенная память, зависимости, библиотеки и запускаемое приложение.

Рассмотрим несколько преимуществ Docker перед VM:
Контейнеры можно запускать и останавливать почти мгновенно;
Используют ресурсы основной ОС;
Одновременно может быть запущенно десятки контейнеров;
Работа контейнера не влечёт за собой дополнительных расходов ресурсов(в отличие от гипервизора);
Приложения запускаются в изолированной среде.
Из чего состоит Docker
Основное с чем Вы будите работать это:
Docker Engine - "механизм" отвечающий за создание и полное функционирование контейнеров;
Docker Hub - облачный сервер (реестр), содержащий в себе огромное количество образов контейнеров. Он избавит нас от рутинной работы, создания образов с нуля.
Компоненты Docker
Ранее мы с вами затрагивали контейнер, теперь перейдём к другим компонентам Docker.
КОМПОНЕНТ DOCKER | КРАТКОЕ ОПРЕДЕЛЕНИЕ |
Conteiner (Контейнер) | в Conteiner запускается приложение |
Host (хост) | хост на котором Вы запускаете Docker |
Client (Клиент) | запускается в командной строке с помощью которого вы подключаетесь к Deamon |
Daemon (Служба) | запускается локально или удалённо. Отвечает за создание, удаление и обработки запросов от Client |
Image (Образ) | основа для создания Conteiner |
Repository (Репозиторий) | содержит в себе версии Image |
Registry (Реестр) | например Docker Hub |
Установка Dicker OS Linux Uduntu
Мы будем устанавливать с помощью установочного скрипта предоставляемого Docker. Предварительно можете ознакомиться со скриптом (https://get.docker.com). Он выполнит несколько проверок, а потом установит Docker последней версии.

Выполняем следующие команды:
Скачиваем скрипт
curl https://get.docker.com -o get-docker.sh
Запускаем установочный скрипт от имени администратора
sudo sh get-docker.sh

ещё раз проверим, что установили Docker
docker version

На этом всё, мы поговорили о Docker, разобрали основные компоненты и установили рабочую версию на OS Linux Ubuntu.
Желаю успехов!