Использование Docker
Покупка
Издательство:
ДМК Пресс
Автор:
Моуэт Эдриен
Перевод:
Снастин А. В.
Науч. ред.:
Маркелов Андрей Александрович
Год издания: 2017
Кол-во страниц: 354
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-426-7
Артикул: 712453.01.99
Контейнеры Docker предоставляют простые быстрые и надежные методы разработки, распространения и запуска программного обеспечения, особенно в динамических и распределенных средах. Из книги вы узнаете, почему контейнеры так важны, какие преимущества вы получите от применения Docker и как сделать Docker частью процесса разработки. Вы последовательно пройдете по всем этапам, необходимым для создания, тестирования и развертывания любого веб-приложения, использующего Docker. Также вы изучите обширный материал — начиная от основ, необходимых для запуска десятка контейнеров, и заканчивая описанием сопровождения крупной системы со множеством хостов в сетевой среде со сложным режимом планирования. Издание предназначено разработчикам, инженерам по эксплуатации и системным администраторам.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.01: Математика и компьютерные науки
- 02.03.02: Фундаментальная информатика и информационные технологии
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Эдриен Моуэт Использование 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