Docker: практическое руководство для начинающих

Перевод первой части статьи «Docker simplified: a hands-on guide for absolute beginners».

Docker
Image Source: Wikimedia

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

В этом посте я постараюсь как можно более простым языком рассказать, что такое Docker.

Итак, что такое Docker?

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

Написан Docker на языке программирования Go, первая его версия была выпущена в 2013 году.

Компании, использующие Docker

В связи с богатством функционала, предлагаемого Docker, он широко применяется в ведущих мировых организациях и университетах (среди них – Visa, PayPal, Корнеллский университет и университет Индианы) для запуска и управления их приложениями.

А теперь давайте разберемся, какая проблема стоит перед разработчиками и какое ее решение предлагает Docker

Проблема

Скажем, у вас есть три различных приложения на Python, которые вы планируете размещать на серверах (это могут быть физические или виртуальные машины).

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

Поскольку мы не можем установить на одной машине разные версии Python, мы не можем и разместить на ней и все три приложения сразу.

Решение

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

Оба варианта позволят нам установить различные версии Python и пакеты зависимостей на каждой из этих машин.

И при любом из этих вариантов расходы, связанные с приобретением и поддержкой «железа», будут довольно высокими.

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

Чтобы это понять, нужно вникнуть в то, как именно функционирует Docker.

Как это работает
Docker Host

Машину, на которой установлен и запущен Docker, обычно называют Docker Host или просто «хост».

Чтобы развернуть приложение на хосте, на нем сначала создается логическая сущность для размещения этого приложения. В терминологии Docker эта логическая сущность называется контейнером (Container) или, если быть более точным, контейнером Docker (Docker Container).

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

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

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

Короче говоря, вместо виртуализации компонентов «железа», Docker виртуализирует операционную систему хоста, на котором он установлен и запущен.

Преимущества и недостатки использования Docker

Основные преимущества применения Docker

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

Недостатки использования Docker

  • Приложения с разными требованиями к операционной системе не могут размещаться на одном хосте Docker. Допустим, у нас есть четыре разных приложения, три из которых запускаются в Linux, а одно – в Windows. При таком сценарии первые три могут размещаться на одном хосте Docker, а для одного, которое нуждается в Windows, потребуется другой хост.

Основные компоненты Docker

Движок Docker (Docker Engine) это один из его ключевых компонентов. Он отвечает за функционирование платформы Docker в целом. По своей сути это клиент-серверное приложение, состоящее из трех основных компонентов:

  1. Сервер
  2. REST API
  3. Клиент.
Компоненты Docker
Image Source: https://docs.docker.com

Сервер запускает демон под названием dockerd (Docker Daemon), являющийся просто процессом. Он отвечает за создание и управление образами Docker, контейнерами, сетями томами платформы Docker.

REST API определяет, каким образом приложения могут взаимодействовать с сервером и указывает им, как они должны работать.

Клиент это ни что иное как интерфейс командной строки, позволяющий пользователям взаимодействовать с Docker при помощи команд.

Терминология Docker

Давайте пробежимся по терминам, связанным с Docker.

Образы Docker (Docker Images) и контейнеры Docker (Docker Containers) это две важных вещи, с которыми вы будете постоянно сталкиваться, работая с Docker.

Говоря простыми словами, образ Docker это шаблон, содержащий приложение и все зависимости, необходимые для запуска этого приложения в Docker.

А контейнер Docker это логическая сущность. Более конкретно – это запущенный экземпляр образа Docker.

Что такое Docker Hub?

Docker Hub это официальный онлайн-репозиторий, где вы можете найти все доступные для использования образы Docker.

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

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

Редакции Docker

Docker доступен в двух редакциях:

  • Community Edition, CE (редакция сообщества)
  • Enterprise Edition, EE (корпоративная редакция)

Community Edition подходит для отдельных разработчиков и маленьких команд. Эта редакция предоставляет ограниченный функционал по сравнению с Enterprise Edition.

Enterprise Edition, в свою очередь, подходит для больших команд и для использования Docker в продакшен-среде.

Enterprise Edition делится еще на три разных редакции:

  • Basic Edition
  • Standard Edition
  • Advanced Edition

Установка Docker

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

Ниже даны ссылки на официальные руководства Docker по установке Community Edition. Они довольно простые, можете воспользоваться ими для установки Docker на вашу машину.

Если вам лень устанавливать Docker или же у вас просто недостаточно свободных ресурсов на вашей машине для его установки, а поиграться хочется, – есть решение. Есть специальная онлайн-«песочница» – Play with Docker. Там пользователи могут попрактиковаться вводить команды, не устанавливая ничего на свою машину. Площадка проста в использовании и совершенно бесплатна.

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

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

5 комментариев к “Docker: практическое руководство для начинающих”

  1. Евгений

    «Поскольку мы не можем установить на одной машине разные версии Python» — это вы серьёзно?

  2. Евгений

    А есть про ошибки и прочее? У меня не запускается контейнер с MySQL. Такое как из-за того, что что-то слушает тот же порт. Но в самой винде все подчистил, результат нулевой.

Оставьте комментарий

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

Прокрутить вверх