Руководство по Docker для новичков: что такое контейнер?

Руководство по Docker для новичков Изучение

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

Что такое Docker?

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

Компания начинала как платформа как сервис, построенный на контейнерах Linux. Чтобы помочь создавать контейнеры и управлять ими, они создали собственный инструмент, который они назвали «Docker», так родилась технология. Первая версия вышла в 2013 году.

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

Docker используется в:

  • DevOps
  • Программное обеспечение
  • IT услуги
  • Кадровое обеспечение и подбор персонала
  • Финансы
  • Здравоохранение
  • Розничная торговля
  • И т.п.

Прежде чем мы перейдем к чему-либо еще, давайте поговорим о контейнерах Docker.

Что такое контейнеры?

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

То, что сейчас представляют собой современные контейнеры, начиналось как контейнеры Linux (LXC). Многие участники, включая Google, помогли внедрить технологии, связанные с контейнерами, в ядро ​​Linux. Без этих вкладов у нас не было бы той богатой контейнерной экосистемы, которую мы имеем сегодня.

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

  • операционная система
  • код приложения
  • время выполнения
  • системные инструменты
  • системные библиотеки
  • и т.п.

Модули Docker

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

Docker Compose

docker-composeпозволяет определять и запускать многоконтейнерные приложения. В Compose вы используете YAMLфайл для настройки служб вашего приложения и оркестровки контейнеров в демонах Docker или Docker Swarm. Вы можете думать об этом как об автоматизированном многоконтейнерном рабочем процессе. Docker Compose отлично подходит для разработки, тестирования, рабочих процессов CI и промежуточных сред.

Docker Machine

docker-machine позволяет развертывать контейнерные приложения в облаке. С помощью Docker Machine вы можете создать удаленную виртуальную машину и управлять своими контейнерами. Это отличный инструмент для создания сред развертывания и управления микросервисами, работающими в вашем приложении. Его можно использовать с популярными облачными сервисами, такими как AWS и Microsoft Azure.

Читайте также:  Руководство по безопасности React.js: угрозы, уязвимости и способы их устранения

Docker stack

Стек Docker позволяет управлять кластером контейнеров Docker с помощью Docker Swarm. Стек Docker встроен в интерфейс командной строки Docker (CLI). С помощью стека вы можете описать несколько сервисов в одном файле. Это устраняет необходимость поддерживать сценарии bash для определения служб.

Docker Swarm

Docker Swarm позволяет управлять несколькими контейнерами на разных хост-машинах. Другими словами, это инструмент оркестровки контейнеров. С помощью Swarm вы можете превратить несколько хостов Docker в один хост.

Docker против Kubernetes

Очень часто Docker путают с Kubernetes, поэтому давайте посмотрим на различия между двумя технологиями. Эти технологии очень хорошо дополняют друг друга и часто используются вместе. Мы уже исследовали Docker в этой статье, но давайте выделим некоторые ключевые моменты.

Docker 

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

Kubernetes

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

Подождите, а какая разница между Kubernetes и Docker Swarm?

Как мы обсуждали выше, Docker Swarm позволяет управлять несколькими контейнерами на разных хост-машинах.

Разница между Docker Swarm и Kubernetes в том, что Kubernetes намного более всеобъемлющий, чем Docker Swarm. Он работает в кластере, а Docker — на одном узле. Модули Kubernetes разделены по узлам для обеспечения доступности.

Словарь Docker

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

  • Cgroups : группы управления позволяют распределять ресурсы между процессами, запущенными в системе.
  • Образы контейнеров : образы Docker — это файлы, которые вы используете для выполнения кода в контейнере Docker.
  • Docker build : docker buildэто команда, которую вы используете для создания образа из Dockerfile.
  • Docker Engine : Docker Engine — это основной продукт Docker, который включает его демон и интерфейс командной строки. У него есть API для взаимодействия с демоном Docker.
  • Dockerfile : Dockerfile — это текстовый документ, содержащий инструкции по созданию образов Docker.
  • Docker Hub : Docker Hub — это служба, которая позволяет находить контейнеры и делиться ими с вашей организацией.
  • Реестр Docker : Реестр Docker позволяет хранить и распространять именованные образы Docker. Реестры организованы в репозитории, и в них хранятся все версии различных образов.
  • Docker run : команда run позволяет создать контейнер из указанного образа и запустить этот контейнер с помощью заданной команды.
  • Пространство имен : пространства имен создаются при запуске контейнера. Они обеспечивают уровень изоляции, поскольку каждый элемент контейнера работает в отдельном пространстве имен.
  • Вытягивание : docker pullэто команда, которая позволяет вам загрузить определенное изображение или набор изображений.
  • Репозиторий (репо) : репозитории Docker позволяют обмениваться образами контейнеров с другими. Эти изображения хранятся в виде тегов.
  • Теги : теги Docker похожи на ярлыки, которые можно назначить любой завершенной сборке.
  • Объединенная файловая система (AUFS) : объединенная файловая система размещает несколько каталогов на одном хосте и представляет их как один каталог.
Читайте также:  Учебное пособие по Python REST API: начало работы с FastAPI

Установка Docker

Есть много разных способов и мест для установки Docker. Мы рассмотрим установку Docker Desktop для Windows 10, Mac и Linux.

Docker Desktop — это приложение, которое позволяет создавать и совместно использовать контейнерные приложения и микросервисы. Согласно документации Docker, он включает:

  • Docker Engine
  • Клиент Docker CLI
  • Docker Compose
  • Доверие к контенту Docker
  • Kubernetes
  • Credential Helper

Установка Windows 10

Прежде чем вы сможете загрузить Docker Desktop в Windows 10, у вас должно быть следующее:

  • 64-разрядная версия Windows 10 Pro, Enterprise или Education
  • В BIOS вашей системы должна быть включена поддержка аппаратной виртуализации.
  • В Windows должны быть включены функции Hyper-V и Containers.

Начните с поиска Google по запросу «установить Docker Desktop». Этот поиск приведет вас на страницу загрузки, где вы сможете скачать установщик и следовать инструкциям.

После его установки вам, возможно, придется вручную запустить рабочий стол из меню «Пуск» Windows.

Установка на Mac

Как и в случае с установкой Windows 10, самый простой способ установить Docker Desktop на ваш Mac — это указать Google «установить Docker Desktop». Оттуда вы можете перейти по ссылкам на странице загрузки.

После его установки вам, возможно, придется вручную запустить рабочий стол с панели запуска MacOS.

Примечание. В Mac Docker Engine не работает изначально на ядре MacOS Darwin. Демон Docker работает внутри облегченной виртуальной машины Linux, которая предоставляет демон и API для вашей среды Mac. Это означает, что вы можете открыть терминал на своем Mac и использовать команды Docker.

Установка Linux

Есть много способов установить Docker в Linux. Вы можете найти в Google руководства по установке Docker в Linux. В этом разделе мы рассмотрим один из способов установки Ubuntu Linux 20.04 LTS. Предположим, у вас уже установлен Linux. Мы установим Docker в два этапа:

1. Обновите индекс пакета apt

$ sudo apt-get update
Get:1 http://eu-west-1.ec2.archive.ubuntu.com/ubuntu.com/ubuntu focal InRelease [265
kb]

2. Установите Docker из официального репозитория.

$ sudo apt-get install docker.io
Reading package lists… Done
Building dependency tree
Оцените статью
bestprogrammer.ru
Добавить комментарий