LG.BALUKATION's Weblog

Ничего, это тоже кое-что… А при желании из него можно сделать что угодно

Книги по докеру

Posted by LG.BALUKATION на 2019/02/15

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

Хотя мне и интересны темы разного рода виртуализации, чаще всего я встречал её либо в совсем специализированном виде (навроде инкредибилда), либо наоборот — в самом классическом (вмваря воркстейшен, виртуалбокс). Про контейнеры я знал не много, хотя в своё время возможности солярис10/опенсолярис показались мне любопытными, дальше докладов на конференциях для разработчиков я не ходил. Что случилось с солярисом дальше, все и без меня знают… Но было и в линуксе несколько проектов с похожими идеями, сейчас видимо самый популярный из них — это докер и про него я не знал ничего.

Это была моя первая попытка читать целые книги на англицком, так что я читал книги в порядке от самой маленькой к бОльшим, в этом же порядке и опишу их тут:

Scott Gallagher, 2016. What You Need to Know about Docker

Мелкая и абсолютно бесполезная брошюрка. Она просто описывает консольные ключи в стиле «ну вот возьмём например эту программу. У неё есть ключик хелп и если его набрать — будет показана справка. В справке сказано, что у этой проги есть ещё такие-то ключи, например этот для этого и тот для того» и так далее. Тупо пересказ не то что документации по программе, а её встроенных подсказок!

Neependra Khare, 2015. Docker Cookbook

Это уже хоть как-то похоже на книгу, хотя и моего не любимого жанра. Кукбук на русский можно перевести как поваренную книгу, т.е. сборник рецептов и примеров. И есть в мире такой пласт литературы, где повествования идёт в стиле «вот посмотрите на пример, который делает то-то. Видите? Он это делает по-тому-то и по-сему-то». Лично я не люблю объяснение через примеры, мне гораздо интересней понять суть чего-то, а пример я уже и сам при желании могу написать. Т. е. мне кажется главным должны быть принципы устройства и работы некой штуки, а примеры нужны лишь для иллюстрации этих принципов. Книга же наоборот почти целиком о практическом применении и тому как это всё работает уделено не очень-то много внимания.

Любой сборник примеров сойдёт как справочник, рассказывающий что обычно народ делает с помощью технологии. Но изучать по таким книгам что-то новое я бы не рекомендовал.

Russ McKendrick, Scott Gallagher, 2017. Mastering Docker — Second Edition

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

Elton Stoneman, 2017. Docker on Windows

Очень забавная книжка! Традиционно венда достаточно убога в том, что касается серверных нужд и её в качестве сервера выбирали только те, кому обязательно нужна именно венда. Если же нужен сам сервер — все нормальные люди выбирают что-нить из мира юникс. С другой стороны, виртуализация и контейнеры применимы не только в дата-центрах и на серверах, так что видя популярность докера — майкрософт тоже попыталась запрыгнуть в уходящий поезд.

Автор похоже хорошо знаком и со стеком технологий в венде (собственно, он MVP) и с докером. По его словам, к моменту выхода Windows Server 2016 в ярде венды было реализовано несколько новых штук, нужных для минимального запуска докера и теперь оно даже кое-как работает. Но только начиная с 2016 сервера — обычная десятка по-старинке создаёт виртуальную машину в Hyper-V с линуксом или этим самым сервером 2016 и уже там гоняет контейнеры.

Конечно, работает далеко не всё. Кроме существенных недостатков самой операционной системы (например отсутствие встроенной поддержки «слоёных» файловых систем и файловых систем в оперативной памяти, нюансы в реализации сети) и её излишней тяжеловесности для контейнеров (есть некий NanoServer, но часто в контейнеры приходится запихивать полноценную версию венды — а это гигов 10 всякого хлама, к которым ещё и обновления выходят раз в пол-года), существенной проблемой является и стек используемых технологий. Из примеров:
— многие серверные программы традиционно пишут логи не в стандарный вывод, а в файлы или вообще в системный журнал. Такие программы предлагается оборачивать в скрипты, которые будут читать свежие записи из файлов/журнала событий и выводить их на консоль
— не всё можно взять и запустить как обычную программу, некоторые штуки спроектированы и работают в виде служб, порой даже подгружаясь куда-то в виде библиотеки. Опять же предлагается писать скрипты, которые могли бы следить за этим всем делом и быть способны ответить на вопросы вроде «запустилось то что нам нужно?», «оно ещё работает?», «оно сейчас живо?»
— некоторые работающие в виде служб штуки, запускаются от какого-нить специализированного пользователя, что нужно либо перенастраивать либо разбираться с правами этого пользователя
— домены, их пользователи и политики
— настройка часто производится через реестр — по-сути иерархическую базу бинарных данных, отслеживать и править конфигурацию в которой тоже предлагается с помощью самописных скриптов
— симлинки есть, некоторые программы даже пользуются ими, но некоторые совершенно не умеют с ними работать и порой это ведёт к проблемам

Как может показаться, классическое серверное применение венды не так-то просто запихнуть в контейнер. Получить при этом элегантный маленький контейнер, решающий только одну задачу вообще почти невозможно. Однако, автор предлагает не отчаиваться — на протяжении почти всей книги он использует один и тот же пример, постепенно улучшая и переписывая его до удобоваримого состояния. Это какой-то старый вебсайт, сделанный лет 15 назад на C# — большое монолитное приложение, которое сперва хоть как-то запихивают в контейнер, а потом ещё и пытаются побить на части что бы сделать подобие микросервисов и даже добиться некоторой маштабируемости.

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

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s