Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Использование Docker

Покупка
Артикул: 712453.01.99
Доступ онлайн
799 ₽
В корзину
Контейнеры Docker предоставляют простые быстрые и надежные методы разработки, распространения и запуска программного обеспечения, особенно в динамических и распределенных средах. Из книги вы узнаете, почему контейнеры так важны, какие преимущества вы получите от применения Docker и как сделать Docker частью процесса разработки. Вы последовательно пройдете по всем этапам, необходимым для создания, тестирования и развертывания любого веб-приложения, использующего Docker. Также вы изучите обширный материал — начиная от основ, необходимых для запуска десятка контейнеров, и заканчивая описанием сопровождения крупной системы со множеством хостов в сетевой среде со сложным режимом планирования. Издание предназначено разработчикам, инженерам по эксплуатации и системным администраторам.
Моуэт, Э. Использование Docker / Э. Моуэт ; пер. с англ. А.В. Снастина ; под науч. ред. А. А. Маркелова. - Москва : ДМК Пресс, 2017. - 354 с. - ISBN 978-5-97060-426-7. - Текст : электронный. - URL: https://znanium.com/catalog/product/1027859 (дата обращения: 20.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Эдриен Моуэт

Использование Docker

Adrian Mouat

Using Docker

Developing and Deploying Software  
with Containers

Beijing • Boston • Farnham • Sebastopol • Tokyo 

Эдриен Моуэт

Использование Docker

Разработка и внедрение  

программного обеспечения

при помощи технологии контейнеров

Москва, 2017

УДК 004.451Docker
ББК 32.972.1

М89

Моуэт Э.

М89
Использование Docker / пер. с англ. А. В. Снастина; науч. ред. А. А. Маркелов. – М.: ДМК Пресс, 2017. – 354 с.: ил.

ISBN 978-5-97060-426-7

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

Издание предназначено разработчикам, инженерам по эксплуатации и системным админист
раторам.

УДК 004.451Docker
ББК 32.972.1

Authorized Russian translation of the English edition of Using Docker, ISBN 9781491915769. 
This translation is published and sold by permission of O’Reilly Media, Inc., which owns or 

controls all rights to publish and sell the same.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой 

бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.

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

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

ISBN 978-1-491-91576-9 (анг.)
© 2016, Adrian Mouat

ISBN 978-5-97060-426-7 (рус.)
© Оформление, издание, перевод, ДМК Пресс, 2017

Посвящается всем, кто пытается что-то делать,  
независимо от того, чем заканчиваются их попытки:  
неудачей или успехом.

Содержание

Предисловие...................................................................11

Часть.I..ПРЕДПОСЫЛКИ.И.ОСНОВЫ.................................... 16

Глава.1..Что.такое.контейнеры.и.для.чего.они.нужны.............. 17
Сравнение контейнеров с виртуальными машинами .............................................................18
Docker и контейнеры ..........................................................................................................................20
Краткая история Docker ....................................................................................................................23
Дополнительные модули и надстройки .......................................................................................25
64-битовая версия ОС Linux ............................................................................................................26

Глава.2..Установка........................................................... 28
Установка Docker в ОС Linux ..........................................................................................................28

Запуск SELinux в разрешающем режиме ...............................................................................29
Запуск Docker без sudo .................................................................................................................30

Установка Docker в Mac OS или в ОС Windows .......................................................................30
Оперативная проверка .......................................................................................................................32

Глава.3..Первые.шаги....................................................... 34
Запуск первого образа ........................................................................................................................34
Основные команды ..............................................................................................................................35
Создание образов из файлов Dockerfile .......................................................................................40
Работа с реестрами ..............................................................................................................................43

Закрытые частные репозитории ................................................................................................45

Использование официального образа Redis ...............................................................................46
Резюме .....................................................................................................................................................49

Глава.4..Основы.Docker.................................................... 50
Архитектура Docker ............................................................................................................................50

Базовые технологии .......................................................................................................................51
Сопровождающие технологии ...................................................................................................52
Хостинг для Docker ........................................................................................................................54

Как создаются образы.........................................................................................................................55

Контекст создания образа ............................................................................................................55

Содержание  7

Уровни образа ..................................................................................................................................56
Кэширование ....................................................................................................................................58
Базовые образы ................................................................................................................................59
Инструкции Dockerfile .................................................................................................................62

Установление связи контейнеров с внешним миром ..............................................................64
Соединение между контейнерами..................................................................................................65
Управление данными с помощью томов и контейнеров данных .........................................67

Совместное использование данных .........................................................................................69
Контейнеры данных .......................................................................................................................69

Часто используемые команды Docker ..........................................................................................71

Команда run ......................................................................................................................................72
Управление контейнерами...........................................................................................................75
Информация о механизме Docker ............................................................................................77
Информация о контейнере ..........................................................................................................78
Работа с образами ...........................................................................................................................79
Команды для работы с реестром................................................................................................82

Резюме .....................................................................................................................................................83

Часть.II..ЖИЗНЕННЫЙ.ЦИКЛ.ПО.ПРИ.ИСПОЛЬЗОВАНИИ..
DOCKER......................................................................... 84

Глава.5..Использование.Docker.в.процессе.разработки.......... 85
Традиционное приветствие миру ...................................................................................................85
Автоматизация с использованием Compose ...............................................................................95

Порядок работы Compose ............................................................................................................96

Резюме .....................................................................................................................................................98

Глава.6..Создание.простого.веб-приложения....................... 99

Создание основной веб-страницы ............................................................................................... 101
Использование преимуществ существующих изображений ............................................. 102
Дополнительное кэширование ..................................................................................................... 107
Микросервисы ....................................................................................................................................110
Резюме ...................................................................................................................................................111

Глава.7..Распространение.образов.................................... 113
Docker Hub ...........................................................................................................................................114
Автоматические сборки ...................................................................................................................115
Распространение с ограничением доступа ................................................................................118

Организация собственного реестра ........................................................................................118
Коммерческие реестры .............................................................................................................. 126

Сокращение размера образа .......................................................................................................... 126
Происхождение образов ................................................................................................................. 129
Резюме .................................................................................................................................................. 129

 Содержание

Глава.8..Непрерывная.интеграция.и.тестирование..
с.использованием.Docker................................................ 130
Включение модульных тестов в identidock .............................................................................. 131
Создание контейнера для сервера Jenkins ................................................................................ 136

Создание образа по триггеру ................................................................................................... 143

Выгрузка образа в реестр ............................................................................................................... 144

Присваивание осмысленных тэгов ........................................................................................ 144
Конечные процедуры подготовки и эксплуатация .......................................................... 146
Беспорядочный рост количества образов ........................................................................... 146
Использование Docker для поддержки вспомогательных серверов Jenkins .......... 147

Организация резервного копирования для сервера Jenkins .............................................. 147
Хостинговые решения для непрерывной интеграции ......................................................... 148
Тестирование и микросервисы ..................................................................................................... 148

Тестирование в процессе эксплуатации ............................................................................... 150

Резюме .................................................................................................................................................. 151

Глава.9..Развертывание.контейнеров................................. 152
Предоставление ресурсов с помощью Docker Machine ....................................................... 153
Использование прокси-сервера ................................................................................................... 156
Варианты выполнения .................................................................................................................... 163

Скрипты командной оболочки................................................................................................ 163
Использование диспетчера процессов или systemd для глобального  
управления ..................................................................................................................................... 165
Использование инструментальных средств управления конфигурацией .............. 168

Конфигурация хоста ........................................................................................................................ 172

Выбор операционной системы ................................................................................................ 173
Выбор драйвера файловой системы ...................................................................................... 173

Специализированные варианты хостинга ................................................................................ 176

Triton ................................................................................................................................................ 176
Google Container Engine ............................................................................................................ 178
Amazon EC2 Container Service ................................................................................................ 179
Giant Swarm ................................................................................................................................... 181

Контейнеры для постоянно хранимых данных и для промышленной  
эксплуатации ...................................................................................................................................... 183
Совместное использование закрытых данных ....................................................................... 184

Сохранение закрытых данных в образе ............................................................................... 184
Передача закрытых данных в переменных среды ............................................................ 185
Передача закрытых данных в томах ...................................................................................... 185
Использование хранилища типа «ключ-значение» ......................................................... 186

Сетевая среда ...................................................................................................................................... 187
Реестр для промышленной эксплуатации ................................................................................ 187
Непрерывное развертывание/доставка .................................................................................... 188
Резюме .................................................................................................................................................. 189

Содержание  9

Глава.10..Ведение.журналов.событий.и.контроль................. 190
Ведение журналов событий ........................................................................................................... 191

Принятая по умолчанию подсистема ведения журналов событий в Docker .......... 191
Объединение журналов ............................................................................................................. 192
Ведение журналов с использованием ELK ......................................................................... 193
Ведение журналов Docker с использованием syslog ....................................................... 204
Извлечение журнальных записей из файла ....................................................................... 210

Контроль и система оповещения ................................................................................................. 210

Контроль с помощью Docker Tools .........................................................................................211
cAdvisor ........................................................................................................................................... 213
Кластерные решения .................................................................................................................. 214

Коммерческие решения, обеспечивающие контроль и ведение журналов................... 216
Резюме .................................................................................................................................................. 218

Часть.III..ИНСТРУМЕНТАЛЬНЫЕ.СРЕДСТВА.И.МЕТОДИКИ....... 219

Глава.11..Сетевая.среда.и.обнаружение.сервисов................ 220
Посредники ......................................................................................................................................... 221
Обнаружение сервисов ................................................................................................................... 225

etcd .................................................................................................................................................... 226
SkyDNS ............................................................................................................................................ 230
Consul ............................................................................................................................................... 234
Регистрация ................................................................................................................................... 239
Другие решения ............................................................................................................................ 241

Варианты организации сетевой среды ...................................................................................... 242

Режим bridge .................................................................................................................................. 242
Режим host ..................................................................................................................................... 243
Режим container ............................................................................................................................ 244
Режим none .................................................................................................................................... 244

Новая сетевая среда Docker .......................................................................................................... 245

Типы сетей и подключаемые модули .................................................................................... 246

Комплексные сетевые решения ................................................................................................... 247

Overlay ............................................................................................................................................. 248
Weave ................................................................................................................................................ 250
Flannel .............................................................................................................................................. 254
Project Calico ................................................................................................................................. 259

Резюме .................................................................................................................................................. 263

Глава.12..Оркестрация,.кластеризация.и.управление........... 266
Инструментальные средства кластеризации и оркестрации ............................................. 268

Swarm ............................................................................................................................................... 268
Fleet ................................................................................................................................................... 274
Kubernetes....................................................................................................................................... 280

 Содержание

Mesos и Marathon ......................................................................................................................... 289

Платформы управления контейнерами .................................................................................... 300

Rancher ............................................................................................................................................ 301
Clocker ............................................................................................................................................. 302
Tutum ................................................................................................................................................ 304

Резюме .................................................................................................................................................. 305

Глава.13..Обеспечение.безопасности.контейнеров..
и.связанные.с.этим.ограничения....................................... 306
На что следует обратить особое внимание ............................................................................... 307
Глубокая защита ................................................................................................................................ 309

Принцип минимальных привилегий .................................................................................... 310
Обеспечение безопасности identidock ...................................................................................311

Разделение контейнеров по хостам ............................................................................................ 312
Обновления ......................................................................................................................................... 314

Не используйте неподдерживаемых драйверов ................................................................ 317

Подтверждение происхождения образов ................................................................................. 317

Дайджесты Docker ....................................................................................................................... 318
Механизм подтверждения контента в Docker ................................................................... 318
Повторно воспроизводимые и надежные файлы Dockerfile......................................... 323

Обеспечение безопасной загрузки ПО в файлах Dockerfile .............................................. 324
Рекомендации по обеспечению безопасности ........................................................................ 326

Всегда определяйте пользователя.......................................................................................... 326
Ограничения сетевой среды контейнеров........................................................................... 328
Удаляйте бинарные файлы с установленными битами setuid/setgid ........................ 329
Ограничение использования оперативной памяти ......................................................... 330
Ограничение загрузки процессора ........................................................................................ 331
Ограничение возможности перезапуска .............................................................................. 333
Ограничения файловых систем .............................................................................................. 333
Ограничение использования механизма Сapabilities  .................................................... 334
Ограничение ресурсов (ulimits) ............................................................................................. 335

Использование защищенного ядра ............................................................................................. 337
Модули безопасности Linux .......................................................................................................... 338

SELinux............................................................................................................................................ 338
AppArmor ........................................................................................................................................ 342

Проведение контрольных проверок ........................................................................................... 342
Реакция на нестандартные ситуации ......................................................................................... 343
Функциональные возможности будущих версий ................................................................. 344
Резюме .................................................................................................................................................. 345

Предметный.указатель.................................................... 346

Предисловие

Контейнеры – это простые и переносимые  
между платформами хранилища 
для приложения и его зависимостей.

Написанное выше звучит сухо и скучно. Но возможности контейнеров вовсе не 
ограничиваются усовершенствованием процессов; при правильном использовании контейнеры способны изменить всю картину. Такое обоснование возможности 
использования контейнеров в архитектурах и рабочих процессах выглядит весьма 
убедительно, и похоже на то, что все крупные ИТ-компании, которые раньше никогда не слышали о контейнерах и Docker, буквально за год перешли к активным 
исследованиям и практическому применению этих технологий.
Рост популярности Docker был поразительным. Я не помню, чтобы какаялибо другая среда оказывала столь основательное и глубокое воздействие в области информационных технологий. Эта книга представляет собой попытку 
помочь читателям понять, почему контейнеры так важны, какую пользу принесет применение контейнеризации и, что самое главное, как перейти к этой 
технологии.

Для кого предназначена эта книга

В этой книге предпринята попытка дать целостный подход к программной среде 
Docker с обоснованием ее использования и описанием способов ее практического 
применения и внедрения в рабочий поток разработки программного обеспечения. 
Книга полностью охватывает весь жизненный цикл программного продукта – от 
разработки до промышленного тиражирования и сопровождения.
Я старался не делать каких-либо предположений об уровне знаний читателя об 
ОС Linux и о процессе разработки программного обеспечения в целом. К предполагаемому кругу читателей прежде всего относятся разработчики программного 
обеспечения, инженеры по эксплуатации и системные администраторы (особенно 
те, кто серьезно интересуется развитием методики DevOps). Однако руководители, обладающие достаточными техническими знаниями, и все интересующиеся 
этой темой также могут кое-что почерпнуть из этой книги.

Почему я написал эту книгу

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

 Предисловие

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

Структура книги

Книга состоит из трех основных частей:
 
 часть I начинается с определения контейнеров и краткого описания их 
свойств, которые представляют интерес для читателей, далее следует главаруководство по основам Docker. Первая часть завершается большой главой, 
в которой описаны главные концепции и технология, на которых основана 
программная среда Docker, включая обзор различных команд среды Docker;
 
 в части II рассматривается использование Docker в жизненном цикле разработки программного обеспечения. Описан процесс установки среды разработки, затем создание простого веб-приложения, которое используется 
в дальнейшем как пример на протяжении всей части II. Отдельная глава 
посвящена разработке, тестированию и объединению с существующей программной средой, также рассматриваются процедура развертывания контейнеров и способы эффективного наблюдения и журналирования в целевой рабочей системе;
 
 в части III все внимание сосредоточено на мельчайших подробностях, 
а также на инструментах и методиках, необходимых для безопасного и надежного функционирования многохостовых кластеров, состоящих из Docker-контейнеров. Если вы уже используете Docker и хотите понять, как 
выполнить масштабирование или решить проблемы безопасности и работы 
в сетевой среде, то эта часть предназначена для вас.

Условные обозначения и соглашения, 
принятые в книге

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

Онлайн-сервис Safari Books 
13

Такая пиктограмма обозначает совет, указание или примечание общего характера.

Эта пиктограмма предупреждает о неочевидных и скрытых «подводных камнях»
и «ловушках», которых следует всячески избегать.

Примеры исходного кода

Дополнительные материалы (примеры исходного кода, учебные задания и т. п.) 
можно получить по ссылке https://github.com/using-docker/.

Эта книга написана для того, чтобы помочь вам в работе. Вообще говоря, вы 

можете использовать код из данной книги в своих программах и в документации. 
Если вы копируете для собственных нужд фрагмент исходного кода незначительного размера, то нет необходимости обращаться к автору и издателям для получения разрешения на это. Например, при включении в свою программу нескольких 
небольших фрагментов кода из книги вам не потребуется какое-либо специальное 
разрешение. Но для продажи или распространения CD-диска с примерами из книг 
издательства O’Reilly необходимо будет получить официальное разрешение на подобные действия. При ответах на вопросы можно цитировать текст данной книги 
и приводить примеры кода из нее без дополнительных условий. При включении 
крупных фрагментов исходного кода из книги в документацию собственного программного продукта также потребуется официальное разрешение.

При цитировании мы будем особенно благодарны за библиографическую ссыл
ку на источник. Обычно ссылка на источник состоит из названия книги, имени 
автора, наименования издательства и номера по ISBN-классификации. Например: «Using Docker (Использование Docker) by Adrian Mouat (Эдриэн Моуэт) 
(O’Reilly). Copyright 2016 Adrian Mouat, 978-1-491-91576-9».

Если у вас возникли сомнения в легальности использования примеров исходного 

кода без получения специального разрешения при условиях, описанных выше, то 
без колебаний обращайтесь по адресу электронной почты: permissions@oreilly.com.

Онлайн-сервис Safari Books

Онлайн-сервис Safari Books (http://safaribooksonline.com) – это электронная библиотека с весьма быстрым обслуживанием заявок, которая предоставляет в формате книг и в видеоформате высококачественные материалы, 
созданные ведущими авторами с мировой известностью 
в технических дисциплинах и в сфере бизнеса.

Специалисты-профессионалы в различных областях техники, разработчики 

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

 Предисловие

Онлайн-сервис Safari Books предлагает широкий ассортимент разнообразных 
подборок материалов с индивидуальным формированием цены каждой такой подборки для организаций, государственных учреждений, учебных заведений и частных лиц. 
В рамках общей базы данных с единым механизмом полнотекстового поиска 
подписчики получают доступ к тысячам книг, учебных видеоматериалов и даже 
к еще не опубликованным рукописям, предоставленным такими известными издательствами, как O’Reilly Media, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Focal Press, Cisco Press, John 
Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT 
Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett, Course Technology, и многими другими. Более подробную информацию об онлайн-сервисе Safari 
Books можно получить на сайте https://www.safaribooksonline.com/.

От издательства

Замечания, предложения и вопросы по этой книге отправляйте по адресу:

O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (в США или в Канаде)
707-829-0515 (международный или местный)
707-829-0104 (факс)

Для этой книги создана специальная веб-страница, на которой мы разместили 
список обнаруженных опечаток и ошибок, исходные коды примеров и другую дополнительную информацию. Сетевой адрес этой страницы: http://bit.ly/using-docker.
Комментарии и технические вопросы по теме данной книги отправляйте по 
адресу электронной почты: bookquestions@oreilly.com.
Для получения более подробной информации о книгах, учебных курсах, конференциях и новостях издательства O’Reilly посетите наш веб-сайт: http://www.oreilly.
com/.
Издательство представлено: 
 
 в соцсети Facebook: http://facebook.com/oreilly;
 
 в Twitter: http://twitter.com/oreillymedia;
 
 и в YouTube: http://www.youtube.com/oreillymedia.

Благодарности

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

Благодарности  15

За плодотворное активное сотрудничество благодарю Элли Хьюм (Ally Hume), 
Тома Сагдена (Tom Sugden), Лукаша Гумински (Lukasz Guminski), Тайлейе Элему (Tilaye Alemu), Себастиена Гусгоэна (Sebastien Goasduen), Максима Белоусова 
(Maxim Belooussov), Михаэля Белена (Michael Boelen), Ксению Бурлаченко (Ksenia Burlachenko), Карлоса Санчеса (Carlos Sanchez), Дэниэла Брайанта (Daniel 
Bryant), Кристофера Холмштедта (Christoffer Holmstedt), Майка Рэтбана (Mike 
Rathbun), Фабрицио Соппелза (Fabrizio Soppelsa), Юн-Чжин Ху (Yung-Jin Hu), 
Йоуни Миикки (Jouni Miikki) и Дэйла Бьюли (Dale Bewley).
За обсуждение технических вопросов и технологий, описываемых в этой книге, 
спасибо Эндрю Кеннеди (Andrew Kennedy), Питеру Уайту (Peter White), Алексу 
Поллитту (Alex Pollitt), Финтэну Райану (Fintan Ryan), Шону Крэмптону (Shaun 
Crampton), Спайку Кертису (Spike Curtis), Алексису Ричардсону (Alexis Richardson), Илье Дмитриченко (Ilya Dmitrichenko), Кейси Биссон (Casey Bisson), Тийсу Шнитгеру (Tijs Schnitger), Шен Лян (Sheng Liang), Тимо Дерштаппену (Timo 
Derstappen), Пуйа Аббасси (Puja Abbassi), Александру Ларссону (Alexander Larsson) и Келзи Хайтауэр (Kelsey Hightower). Отдельная благодарность Кевину Годэну (Kevin Gaudin) за разрешение неограниченного использования модуля monsterid.js.
За всю оказанную мне помощь благодарю коллектив издательства O’Reilly, особая благодарность моему редактору Брайану Андерсону (Brian Anderson) и Меган 
Бланшетт (Meghan Blanchette) за работу на начальном этапе процесса.
Диого Моника (Diogo Mónica) и Марк Коулмэн (Mark Coleman), спасибо вам 
обоим за то, что откликнулись на мою просьбу о срочной помощи.
Кроме того, следует особо отметить две компании: Container Solutions и CloudSoft. Джейми Добсон (Jamie Dobson) и Container Solutions поощряли ведение моего блога и выступления на соответствующих мероприятиях, а также обеспечивали связь с некоторыми людьми, оказавшими влияние на содержание этой книги. 
Компания CloudSoft любезно предоставила в мое распоряжение офис на время 
написания книги и провела семинар Edinburgh Docker – оба этих события были 
чрезвычайно важными для меня.
За терпеливую поддержку моей одержимости и моих роптаний во время работы 
над книгой спасибо моим друзьям и моей семье – вам хорошо известно, что вы 
значите для меня (хотя вряд ли прочтете когда-либо эти строки).
Наконец, спасибо ди-джеям BBC 6 Music, предоставившим саундтрек для этой 
книги, в том числе Лорен Лаверн (Lauren Laverne), Рэдклифф и Макони (Radcliffe 
and Maconie), Шону Кэвени (Shaun Keaveny) и Игги Поп (Iggy Pop).

Доступ онлайн
799 ₽
В корзину