Книга Эдриена Моуэта «Использование Docker»

Я давно посматривал на Docker, но до недавнего времени нигде его не применял на практике, а недавно меня убедили, что для сборки OutWiker его вполне можно использовать вместо виртуальных машин. Правда, для меня до сих пор остается загадкой, можно ли 32-битные контейнеры запускать в 64-битной системе (именно по этой причине для сборки я использовал полноценные виртуальные машины вместо контейнеров), но некоторое время назад такая надобность отпала.

Новые для себя технологии я обычно изучаю по книгам. Сначала я прочитал пару небольших книжек про Docker на английском языке в электронном виде (это были книги Karl Matthias and Sean P. Kane «Docker: Up and Running» и James Turnbull «The Docker Book»), а потом понял, что хотелось бы иметь что-то в бумажном виде. В бумажном виде на русском языке попалась книга Эдриена Моуэта с незамысловатым названием «Использование Docker». И, пожалуй, эта книга мне понравилась даже больше первых двух.

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

Еще один момент, который мне понравился в этой книге — это множество примеров использования стороннего софта, помогающего работать с Docker. Причем для каждой задачи автор обычно указывает несколько конкурирующих решений от разных производителей. Например, для оркестрации контейнеров описываются Swarm, Fleet, Kubernetes, Mesos и Marathon, для обнаружения сервисов — etcd, SkyDNS и Consul и т.д. Вообще в книге много ссылок на различные утилиты. Причем как правило, автор не только перечисляет их, но и дает, пусть и краткое, описание каждой из них, сравнивая их между собой, а часто даже приводит небольшие примеры их использования.

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

В книге на протяжении нескольких глав строится микросервисная архитектура очень простого микросервисного приложения, написанного с использованием Python и Flask. Но примеры настолько простые, что не обязательно знать Python. Наверное, самый длинный листинг кода умещается на одну страницу и там нет ничего критически важного для понимания Docker. Затем к простейшему приложению на Flask добавляется уже существующий свободно доступный контейнер с приложением для генерации аватаров-монстров по имени пользователя (dnmonster). После этого для кэширования запросов добавляется контейнер с Redis. В следующей главе добавляются модульные тесты для созданного приложения, которые будут запускаться в контейнере с Jenkins. В следующей главе созданное приложение развертывается на рабочем сервере с помощью docker-machine. В качестве примера используется хостинг Digital Ocean, но говорится, что docker-machine аналогично работает с хостингами от Amazon, Google и Microsoft.

Отдельная глава посвящена работе с логами, в том числе использованию сторонних утилит, например связки Elasticsearch + Logstash + Kibana. Приводится пример настроек без углубления в конфигурирование этих программ.

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

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

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

А так книга отличная. Если хотите разобраться с Docker, то можно начинать с нее, да и более продвинутым пользователям ее можно рекомендовать — в ней описываются и достаточно сложные темы.

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 5, средняя оценка: 4,80)
Загрузка...

Leave a comment

Subscribe without commenting