Учебное пособие по Docker для начинающих: основы, Archiтектура, Контейнеры

⚡ Умное резюме

Docker — это платформа контейнеризации, которая упаковывает приложения и их зависимости в портативные, легковесные контейнеры. В этом обзоре объясняется архитектура Docker и его установка. Ubuntuосновные команды и чем контейнеры отличаются от традиционных виртуальных машин, что способствует более быстрой доставке программного обеспечения.

  • 🐳 Контейнеризация: Docker использует виртуализацию на уровне операционной системы, поэтому контейнеры совместно используют ядро ​​хоста и потребляют меньше ресурсов, чем виртуальные машины.
  • 🧱 Archiтекстура: Движок Docker (dockerd), образы, реестры и контейнеры образуют клиент-серверную архитектуру, лежащую в основе каждого рабочего процесса Docker.
  • 📦 Изображения и контейнеры: Образ представляет собой шаблон только для чтения, тогда как контейнер — это работающая копия, и один образ может запустить множество контейнеров.
  • 🇧🇷 Реестры: Docker Hub хранит общедоступные и частные образы, предоставляя вам миллионы готовых к использованию образов для загрузки и запуска.
  • ⚙️ Установка: On Ubuntu Вам нужно добавить репозиторий Docker APT и ключ GPG, а затем установить пакет docker-ce с помощью apt-get.
  • ⌨️ Основные команды: Управляйте контейнерами с помощью команд docker pull, run, start, stop, ps, stats и образами из командной строки.

Учебное пособие по Docker для начинающих, охватывающее архитектуру и установку. Ubuntuи базовые команды контейнеров.

Docker — одна из самых популярных платформ контейнеризации, используемых в современном мире. DevOps и облачных рабочих процессов. В этом руководстве по Docker для начинающих объясняется, что такое Docker, как работает архитектура Docker и как установить Docker. Ubuntuа также основные команды, используемые для управления образами и контейнерами.

Что такое Докер?

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

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

Виртуализация в Docker против гипервизора
Виртуализация в Docker против гипервизора

В отличие от виртуальных машин, которые могут напрямую взаимодействовать с аппаратным обеспечением хоста (например, с сетевым адаптером, создающим дополнительные виртуальные адаптеры), контейнеры Docker работают в изолированной среде поверх операционной системы хоста. Даже если на вашем хосте запущена Windows, Вы можете запустить Linux изображения внутри контейнеров с помощью Hyper-V, которая автоматически создает небольшую виртуальную машину для виртуализации базового образа.

Теперь, когда вы знаете, что такое Docker, давайте рассмотрим основные причины, по которым команды выбирают его.

Зачем использовать Докер?

Вот основные причины использовать Docker:

  • Docker — это программное обеспечение, используемое для виртуализации, позволяющее создавать множество виртуальных машин. операционные системы для запуска на том же хосте.
  • Docker — это клиент-серверное приложение, то есть клиенты взаимодействуют с сервером.
  • Образы Docker выступают в качестве «исходного кода» для контейнеров; вы используете их для сборки.
  • Docker поддерживает два типа реестров: публичные и частные.
  • Контейнеры — это организационные единицы Docker. Проще говоря, образ — это шаблон, а контейнер — это копия этого шаблона, поэтому вы можете запускать несколько контейнеров из одного и того же образа.

Эти преимущества обусловлены особенностями архитектуры Docker. В следующем разделе подробно рассматривается архитектура Docker и его основные компоненты.

Docker Archiтекстура

В этом руководстве по контейнерам Docker давайте рассмотрим основные компоненты архитектуры Docker.

Docker ArchiКомпоненты архитектуры: движок, образы, реестры и контейнеры.

Docker Archiтекстура

Докер Двигатель

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

Докер-образы

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

Докер-реестры

Docker хранит созданные нами образы в реестрах. Существуют публичные и частные реестры. У Docker есть публичный реестр, который называется... Докер Хаб, где вы также можете хранить образы в приватном режиме. Docker Hub содержит миллионы образов, которые вы можете начать использовать прямо сейчас.

Контейнеры Docker

Контейнеры — это организационные единицы Docker и одна из его основных концепций. Когда мы создаём образ и запускаем его, мы запускаем его внутри контейнера. Аналогия с контейнером используется из-за портативности программного обеспечения, работающего внутри него: вы можете перемещать, «отправлять», изменять, управлять, создавать или уничтожать его, подобно тому как грузовые суда обрабатывают настоящие контейнеры.

Проще говоря, изображение — это шаблон, а контейнер — копия этого шаблона. У вас может быть несколько контейнеров (копий) одного и того же образа.

Взаимодействие между этими различными компонентами демонстрирует, как работает технология контейнеров Docker. Такие команды, как docker pull и docker run, которые мы рассмотрим позже, позволяют управлять этим рабочим процессом.

Учитывая архитектуру, давайте установим Docker, чтобы вы могли самостоятельно протестировать эти компоненты.

Как установить Docker в Linux/Ubuntu

Ниже описан пошаговый процесс установки Docker в Linux/Ubuntu:

Шаг 1) Для установки Docker вам потребуются DEB-пакеты от команды Docker. Сначала необходимо выполнить некоторые предварительные условия. Ubuntu Для установки необходимы следующие пакеты. Используйте команду ниже.

$ sudo apt-get install \
apt-transport-https \
ca-certificates curl \
software-properties-common

*Знак «\» не обязателен, он используется для новой строки, при желании можно написать команду без использования «\» только в одной строке.

Шаг 2) Добавьте официальный ключ Docker GPG с отпечатком. Используйте приведенную ниже команду Docker для ввода ключа GPG.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Шаг 3) Далее добавьте репозиторий Docker APT, используя приведенную ниже команду.

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Возможно, вам будет предложено подтвердить добавление репозитория и автоматическое добавление ключа GPG на ваш хост. Команда lsb_release должна заполнить поле Ubuntu версия дистрибутива вашего хоста.

Шаг 4) После добавления ключа GPG обновите источники APT, используя приведенную ниже команду Docker.

$ sudo apt-get update

Теперь вы можете установить сам пакет Docker.

Шаг 5) После обновления источников APT начните установку пакетов Docker. Ubuntu используя приведенную ниже команду Docker.

$ sudo apt-get install docker-ce

Приведенная выше команда устанавливает Docker и другие необходимые пакеты. До версии Docker 1.8.0 название пакета было lxc-docker, а в период между версиями Docker 1.8 и 1.13 — docker-engine.

ПРИМЕЧАНИЕ: Докер для Windows требуется Windows 10 Pro или Enterprise версии 14393 или Windows Сервер 2016 RTM, готов к запуску.

Как использовать Docker с помощью основных команд Docker

Вот как использовать Docker с помощью нескольких основных команд Docker.

Как уже упоминалось, после установки Docker следует выполнить самую основную команду — docker info.

$ sudo docker info

В результате вы должны получить примерно следующее.

Использование Docker с помощью базовых команд Docker, отображение вывода docker info.

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

$ sudo docker pull alpine

С помощью этой команды мы указываем Docker загрузить образ alpine, получив его из общедоступного реестра в последней версии, что установлено по умолчанию.

*alpine — это минимальный образ Docker на базе Alpine Linux с полным индексом пакетов и размером всего 5 МБ.

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

$ sudo docker run -i -t alpine /bin/bash

Выполнение команды отправляет нас непосредственно в терминал Alpine. Флаг -i поддерживает STDIN открытым из контейнера, даже когда вы к нему не подключены; этот постоянный стандартный ввод — это одна половина того, что вам нужно для интерактивной оболочки. Флаг -t — это другая половина, которая указывает Docker назначить контейнеру псевдотерминал. Вместе они предоставляют нам интерактивную оболочку в новом контейнере. Мы выходим из контейнера с помощью простой команды exit.

Теперь в этом базовом руководстве по Docker мы можем попробовать запустить Ubuntu изображения.

$ sudo docker run -it ubuntu /bin/bash

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

$ sudo docker run –-name our_container -it ubuntu /bin/bash

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

$ sudo docker start container_name

И мы останавливаем контейнер, написав команду `docker stop container_name`.

$ sudo docker stop container_name

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

$ docker ps

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

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

$ docker stats

Вы также можете увидеть, какие изображения вы загрузили локально, а также информацию о них.

$ sudo docker images

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

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

Что такое виртуализация?

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

Ситуация улучшилась с появлением гипервизоров. Гипервизоры запускают несколько систем одновременно. виртуальные машиныВиртуальные машины (ВМ) на одном хосте могут быть запущены или выключены. ВМ значительно сократили время ожидания развертывания кода и исправления ошибок, но настоящим прорывом стали контейнеры Docker.

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

Важные команды Docker

Ниже приведены важные команды Docker:

Command Описание
информация о докере Информационная команда
докер тянуть Скачать изображение
docker run -i -t имя_изображения /bin/bash Запустить изображение как контейнер
докер запускает наш_контейнер Запустить контейнер
остановка докера имя_контейнера Остановить контейнер
docker ps Список всех запущенных контейнеров
статистика докера Информация о контейнере
Изображение docker Список загруженных изображений
Очистка Докера Убейте все работающие контейнеры.

Кроме того, прочитайте эти Вопросы и ответы на собеседовании в Docker Подходит как для начинающих, так и для опытных специалистов.

Часто задаваемые вопросы (FAQ)

Контейнер Docker использует ядро ​​хостовой операционной системы и изолирует только приложение, поэтому он легковесный и запускается за считанные секунды. Виртуальная машина же включает в себя полноценную гостевую операционную систему, что делает её больше по размеру, медленнее загружается и более ресурсоёмкой.

Dockerfile — это текстовый скрипт, содержащий инструкции, такие как FROM, RUN, COPY и CMD. Docker считывает эти инструкции для автоматической сборки образа. Каждая строка добавляет слой, позволяя воспроизвести одну и ту же среду на любой машине.

Docker Compose определяет и запускает многоконтейнерные приложения с помощью одного YAML-файла. Вы описываете каждый сервис, сеть и том один раз, а затем запускаете все с помощью команды `docker compose up`. Это идеально подходит для локальной разработки и тестирования подключенных сервисов.

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

Docker Engine — это бесплатный сервис с открытым исходным кодом, распространяемый под лицензией Apache 2.0. Docker Desktop бесплатен для личного использования, образовательных учреждений и малого бизнеса, но крупным компаниям требуется платная подписка. Docker Hub предлагает как бесплатные, так и платные тарифные планы для размещения образов.

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

Искусственный интеллект-помощники генерируют Docker-файлы, docker-compose-файлы и команды CLI на основе запросов на простом языке. Они также считывают журналы сборки и ошибки контейнеров, объясняют причину и предлагают решения. Перед запуском всегда проверяйте сгенерированную конфигурацию на правильность тегов образов, путей и параметров безопасности.

Да. Второй пилот GitHub ChatGPT позволяет создавать Docker-файлы и Compose-файлы на основе коротких комментариев или описаний. Они ускоряют создание шаблонного кода, но следует проверять базовые образы, версии и рекомендации, поскольку сгенерированные фрагменты могут использовать устаревшие настройки по умолчанию.

Подведем итог этой публикации следующим образом: