Docker — контейнер под каждого
![Приходите и пользуетесь Приходите и пользуетесь](https://webcf.waybackmachine.org/web/20240902222857/https://habrastorage.org/getpro/habr/upload_files/646/b93/aaf/646b93aafa96ab2fed56f56370987147.jpg)
Доброго времени суток, Хабр!
Очень рад, что вы всегда стремитесь изучать новое, в этой статье постарался собрать всё самое необходимое для работы с контейнерами. Разберём основные термины, посмотрим как это работает изнутри, установим Docker. Разворачивать буду на своей рабочей станции: Ubuntu 22.04.
Вопросы, которые разберём в первой части:
С чего всё началось
Начнём с истории, ниже вы увидите людей, которые стояли у истоков создания Docker как одной из популярных технологий контейнеризации.
![](https://webcf.waybackmachine.org/web/20240902222857im_/https://habrastorage.org/getpro/habr/upload_files/db0/ba6/54a/db0ba654af2c916a7d6f9ca25d4d942b.webp)
Solomon Hykes
Основатель dotCloud
Март 2013 год: код Docker был опубликован под лицензией Apache 2.0. В разработке с Solomon Hykes активное участие принимали инженеры dotCloud Andrea Luzzardi и François-Xavier Bourlet. В октябре этого же года, понимая смещение фокуса к новой технологии dotCloud переименована в Docker.
Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.
Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер.
С появлением Open Container Initiative начался переход от монолитной к модульной архитектуре.
Разберем новое понятие "Контейнер".
![тот самый контейнер тот самый контейнер](https://webcf.waybackmachine.org/web/20240902222857/https://habrastorage.org/getpro/habr/upload_files/eac/8ee/4e9/eac8ee4e902efa4b323ffc03022925bc.png)
Conteiner (Контейнер) - фактически представляет собой изолированный процесс запущенный в какой либо системе от других параллельных процессов, а также абсолютно независим от остальных контейнеров. Запускает, такой контейнер, собственное программное обеспечение, двоичные файлы, зависимости, конфигурации и т.д.
На моём компьютере всё работало!
![Хм... Хм...](https://webcf.waybackmachine.org/web/20240902222857/https://habrastorage.org/getpro/habr/upload_files/514/a28/f94/514a28f945a28238120635cb0916cb77.jpeg)
Основную задачу которую решает Docker - разработчик (тестировщик) знает, что всё будет работать так как должно быть, вне зависимости от платформы на которой будет запущенно приложение.
Отличие Virtual Machines от Docker
Может показаться, что контейнер - это упрощённая версия виртуальной машины. Она также содержит в себе образ операционной системы для запуска приложений.
![Простая схема использования VM или Docker Простая схема использования VM или Docker](https://webcf.waybackmachine.org/web/20240902222857/https://habrastorage.org/getpro/habr/upload_files/1cd/40d/9f1/1cd40d9f127a1a29010ecfc8c5c9d052.jpg)
Для того, чтобы создать VM на вашем хосте, потребуется гипервизор (Virtualbox, VMWare и др.). Он необходим для работы с нижележащей ОС. Кроме того каждой VM необходима полная копия ОС, выделенная память, зависимости, библиотеки и запускаемое приложение.
![](https://webcf.waybackmachine.org/web/20240902222857/https://habrastorage.org/getpro/habr/upload_files/d6a/6d3/6b1/d6a6d36b1f8829429b21e5d1bfc35281.png)
Рассмотрим несколько преимуществ 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 последней версии.
![Часть установочного скрипта Часть установочного скрипта](https://webcf.waybackmachine.org/web/20240902222857/https://habrastorage.org/getpro/habr/upload_files/83a/160/f54/83a160f54ad0372ca44421b4892fd598.png)
Выполняем следующие команды:
Скачиваем скрипт
curl https://get.docker.com -o get-docker.sh
Запускаем установочный скрипт от имени администратора
sudo sh get-docker.sh
![Docker установлен успешно Docker установлен успешно](https://webcf.waybackmachine.org/web/20240902222857/https://habrastorage.org/getpro/habr/upload_files/75a/e76/914/75ae76914b27be36564dc3249c538615.png)
ещё раз проверим, что установили Docker
docker version
![Проверка Docker Проверка Docker](https://webcf.waybackmachine.org/web/20240902222857/https://habrastorage.org/getpro/habr/upload_files/bec/426/a60/bec426a60a047da6112bbcbd44edb997.png)
На этом всё, мы поговорили о Docker, разобрали основные компоненты и установили рабочую версию на OS Linux Ubuntu.
Желаю успехов!