ebook img

Docker на практике PDF

516 Pages·2020·8.339 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Docker на практике

Иан Милл Эйдан Хобсон Сейерс Docker на практике 1 / 52 Docker in Practice SECOND EDITION IAN MIELL AIDAN HOBSON SAYERS 2 / 52 Docker на практике ИАН МИЛЛ ЭЙДАН ХОБСОН СЕЙЕРС Перевод с английского Беликов Д. А. Москва, 2020 3 / 52 УДК 004.451Docker ББК 32.972.1 М57 М57 Иан Милл, Эйдан Хобсон Сейерс Docker на практике / пер. с англ. Д. А. Беликов. – М.: ДМК Пресс, 2020. – 516 с.: ил. ISBN 978-5-97060-772-5 Данная книга научит вас надежным, проверенным методам, исполь- зуемым Docker, таким как замена виртуальных машин, использование архитектуры микросервисов, эффективное моделирование сети, произво­ дительность в автономном режиме и создание процесса непрерывной доставки на базе контейнеров. Следуя формату «проблема/решение» в стиле поваренной книги, вы изучите реальные варианты использования Docker и узнаете, как применить их к собственным проектам. Издание предназначено разработчикам, использующим Docker в своем рабочем окружении. УДК 004.451Docker ББК 32.972.1 Original English language edition published by Manning Publications. Copyright © 2019 by Manning Publications. Russian language edition copyright © 2020 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может га- рантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978­1­61729­480­8 (англ.) Copyright © 2019 by Manning Publications Co. ISBN 978­5­97060­772­5 (рус.) © Оформление, перевод на русский язык, издание, ДМК Пресс, 2020 4 / 52 Содержание Предисловие .....................................................................................................12 Благодарности ...................................................................................................14 Об этой книге ...................................................................................................15 Дорожная карта ...............................................................................................16 О коде ..............................................................................................................17 Книжный форум .............................................................................................17 Об иллюстрации на обложке ..........................................................................18 Часть 1. Основы Docker ....................................................................................19 Глава 1. Знакомство с Docker ..........................................................................20 1.1. Что такое Docker, и для чего он нужен ....................................................22 1.1.1. Что такое Docker? ............................................................................23 1.1.2. Чем хорош Docker? .........................................................................24 1.1.3. Ключевые концепции.....................................................................26 1.2. Создание приложения Docker .................................................................28 1.2.1. Способы создания нового образа Docker ......................................30 1.2.2. Пишем Dockerfile ............................................................................30 1.2.3. Собираем образ Docker ..................................................................32 1.2.4. Запускаем контейнер Docker .........................................................33 1.2.5. Слои Docker ....................................................................................36 Резюме .............................................................................................................38 Глава 2. Постигаем Docker: внутри машинного отделения .......................39 2.1. Архитектура Docker ..................................................................................39 2.2. Демон Docker ............................................................................................41 МЕТОД 1. Сделайте демон Docker доступным .........................................42 МЕТОД 2. Запуск контейнеров в качестве демонов ..................................44 МЕТОД 3. Перемещение Docker в другой раздел ......................................48 2.3. Клиент Docker ...........................................................................................49 МЕТОД 4. Использование socat для мониторинга трафика Docker API......49 МЕТОД 5. Использование Docker в вашем браузере .................................53 МЕТОД 6. Использование портов для подключения к контейнерам .........56 МЕТОД 7. Разрешение связи между контейнерами ..................................58 МЕТОД 8. Установление соединений между контейнерами для изоляции портов ......................................................................60 2.4. Реестры Docker .........................................................................................62 5 / 52 6  Содержание МЕТОД 9. Настройка локального реестра Docker .....................................63 2.5. Docker Hub ................................................................................................64 МЕТОД 10. Поиск и запуск образа Docker ................................................65 Резюме ............................................................................................................68 Часть 2. Docker и разработка ..........................................................................71 Глава 3. Использование Docker в качестве легкой виртуальной машины .....................................................72 3.1. От виртуальной машины к контейнеру ..................................................73 МЕТОД 11. Преобразование вашей виртуальной машины в контейнер ....73 МЕТОД 12. Хост­подобный контейнер ....................................................78 МЕТОД 13. Разделение системы на микросервисные контейнеры ...........81 МЕТОД 14. Управление запуском служб вашего контейнера ....................84 3.2. Сохранение и восстановление работы ...................................................87 МЕТОД 15. Подход «сохранить игру»: дешевое управление исходным кодом ............................................88 МЕТОД 16. Присвоение тегов ..................................................................91 МЕТОД 17. Совместное использование образов в Docker Hub ...................94 МЕТОД 18. Обращение к конкретному образу в сборках .........................96 3.3. Среда как процесс ...................................................................................98 МЕТОД 19. Подход «сохранить игру»: победа в игре 2048 .........................98 Резюме ...........................................................................................................101 Глава 4. Сборка образов ................................................................................102 4.1. Сборка образов .......................................................................................102 МЕТОД 20. Внедрение файлов в образ с помощью ADD .........................103 МЕТОД 21. Повторная сборка без кеша .................................................106 МЕТОД 22. Запрет кеширования ...........................................................108 МЕТОД 23. Умный запрет кеширования с помощью build­args...............110 МЕТОД 24. Умный запрет кеширования с помощью директивы ADD .....114 МЕТОД 25. Установка правильного часового пояса в контейнерах .........118 МЕТОД 26. Управление локалями ..........................................................120 МЕТОД 27. Шагаем по слоям с помощью image­stepper ..........................124 МЕТОД 28. Onbuild и golang ..................................................................129 Резюме ...........................................................................................................133 Глава 5. Запуск контейнеров .........................................................................134 5.1. Запуск контейнеров ...............................................................................134 МЕТОД 29. Запуск графического интерфейса пользователя в Docker ......135 МЕТОД 30. Проверка контейнеров ........................................................137 МЕТОД 31. Чистое уничтожение контейнеров .......................................139 МЕТОД 32. Использование Docker Machine для поддержки работы хостов Docker ............................................141 МЕТОД 33. Запись Wildcard ...................................................................146 6 / 52 Содержание  7 5.2. Тома .........................................................................................................147 МЕТОД 34. Тома Docker: проблемы персистентности ............................147 МЕТОД 35. Распределенные тома и Resilio Sync .....................................149 МЕТОД 36. Сохранение истории bash вашего контейнера ......................152 МЕТОД 37. Контейнеры данных ............................................................154 МЕТОД 38. Удаленное монтирование тома с использованием SSHFS .....157 МЕТОД 39. Совместное использование данных через NFS .....................160 МЕТОД 40. Контейнер dev tools .............................................................163 Резюме ..........................................................................................................164 Глава 6. Повседневное использование Docker .........................................165 6.1. Оставаться в полном порядке ..............................................................165 МЕТОД 41. Запуск Docker без использования sudo .................................166 МЕТОД 42. Содержание контейнеров в порядке ....................................167 МЕТОД 43. Содержание томов в порядке ...............................................169 МЕТОД 44. Отключение от контейнеров без их остановки .....................171 МЕТОД 45. Использование Portainer для управления демоном Docker ...172 МЕТОД 46. Создание графа зависимостей образов Docker .....................173 МЕТОД 47. Прямое действие: выполнение команд в контейнере ...........176 МЕТОД 48. Вы находитесь в контейнере Docker? ...................................178 Резюме ..........................................................................................................179 Глава 7. Управление конфигурацией: наводим порядок в доме ...........180 7.1. Управление конфигурацией и файлы Dockerfile ..................................181 МЕТОД 49. Создание надежных специальных инструментов с помощью ENTRYPOINT ........................................181 МЕТОД 50. Предотвращение перемещения пакетов путем указания версий .................................................................183 МЕТОД 51. Замена текста с помощью perl ­p ­i ­e ...................................185 МЕТОД 52. Сращивание образов ...........................................................187 МЕТОД 53. Управление чужими пакетами с помощью Alien ..................189 7.2. Традиционные инструменты управления конфигурацией и Docker ........................................................................192 МЕТОД 54. Традиционно: использование make и Docker .......................193 МЕТОД 55. Создание образов с помощью Chef Solo ...............................196 7.3. Маленький значит красивый ................................................................201 МЕТОД 56. Хитрости, позволяющие уменьшить образ ..........................202 МЕТОД 57. Создание маленьких образов Docker с помощью BusyBox и Alpine .........................................................203 МЕТОД 58. Модель минимальных контейнеров Go ................................206 МЕТОД 59. Использование inotifywait для сокращения размера контейнеров ..........................................210 МЕТОД 60. Большое может быть красивым ...........................................213 Резюме ..........................................................................................................216 7 / 52 8  Содержание Часть 3. Docker и DevOps ...............................................................................217 Глава 8. Непрерывная интеграция: ускорение конвейера разработки ...............................................................218 8.1. Автоматические сборки Docker Hub .....................................................219 МЕТОД 61. Использование рабочего процесса Docker Hub .....................219 8.2. Более эффективные сборки ...................................................................223 МЕТОД 62. Ускорение сборок с интенсивным вводом­выводом с помощью eatmydata ........................................223 МЕТОД 63. Настройка кеша пакетов для более быстрой сборки ............225 МЕТОД 64. Headless Chrome в контейнере .............................................229 МЕТОД 65. Выполнение тестов Selenium внутри Docker .........................232 8.3. Контейнеризация процесса непрерывной интеграции ......................237 МЕТОД 66. Запуск ведущего устройства Jenkins в контейнере Docker .....238 МЕТОД 67. Содержание сложной среды разработки ...............................240 МЕТОД 68. Масштабирование процесса непрерывной интеграции с помощью плагина Swarm .........................................246 МЕТОД 69. Безопасное обновление контейнеризованного сервера Jenkins ...........................................251 Резюме ..........................................................................................................255 Глава 9. Непрерывная доставка: идеальная совместимость с принципами Docker .....................................256 9.1. Взаимодействие с другими командами в конвейере непрерывной доставки ......................................................257 МЕТОД 70. Контракт Docker: устранение разногласий ...........................258 9.2. Облегчение развертывания образов Docker ........................................261 МЕТОД 71. Зеркальное отображение образов реестра вручную ..............261 МЕТОД 72. Доставка образов через ограниченные соединения ..............263 МЕТОД 73. Совместное использование объектов Docker в виде TAR­файлов ..............................................................................266 9.3. Настройка ваших образов для среды ....................................................268 МЕТОД 74. Информирование контейнеров с помощью etcd ..................268 9.4. Обновление запущенных контейнеров ................................................272 МЕТОД 75. Использование confd для включения переключения без простоя ...........................................................273 Резюме ...........................................................................................................278 Глава 10. Сетевое моделирование: Безболезненное реалистичное тестирование среды ..............................279 10.1. Обмен данными между контейнерами: за пределами ручного соединения ........................................................279 МЕТОД 76. Простой кластер Docker Compose .........................................280 МЕТОД 77. SQLite­сервер, использующий Docker Compose .....................284 8 / 52 Содержание  9 10.2. Использование Docker для симуляции реальной сетевой среды ......290 МЕТОД 78. Имитация проблемных сетей с помощью Comcast ...............290 МЕТОД 79. Имитация проблемных сетей с помощью Blockade ..............294 10.3. Docker и виртуальные сети .................................................................299 МЕТОД 80. Создание еще одной виртуальной сети Docker .....................300 МЕТОД 81. Настройка физической сети с помощью Weave ....................304 Резюме ..........................................................................................................308 Часть 4. Оркестровка от одного компьютера до облака .........................309 Глава 11. Основы оркестровки контейнеров ............................................310 11.1. Простой Docker с одним хостом ..........................................................312 МЕТОД 82. Управление контейнерами на вашем хосте с помощью systemd ..............................................312 МЕТОД 83. Оркестровка запуска контейнеров на вашем хосте ..............316 11.2. Docker с несколькими хостами ............................................................319 МЕТОД 84. Мультихостовый Docker и Helios ..........................................320 11.3. Обнаружение сервисов: что у нас здесь? ............................................327 МЕТОД 85. Использование Consul для обнаружения сервисов ................327 МЕТОД 86. Автоматическая регистрация служб с использованием Registrator ........................................................337 Резюме ..........................................................................................................339 Глава 12. Центр обработки данных в качестве ОС с Docker ...................340 12.1. Мультихостовый Docker ......................................................................340 МЕТОД 87. Бесшовный кластер Docker с режимом swarm .......................341 МЕТОД 88. Использование кластера Kubernetes ....................................345 МЕТОД 89. Доступ к API Kubernetes из модуля ......................................352 МЕТОД 90. Использование OpenShift для локального запуска API­интерфейсов AWS .....................................................356 МЕТОД 91. Создание фреймворка на основе Mesos ...............................362 МЕТОД 92. Микроуправление Mesos с помощью Marathon ....................371 Резюме ..........................................................................................................375 Глава 13. Платформы Docker .......................................................................376 13.1. Факторы организационного выбора ...................................................377 13.1.1. Время выхода на рынок .............................................................380 13.1.2. Покупка по сравнению со сборкой ............................................381 13.1.3. Монолитное против частичного ................................................382 13.1.4. Открытый исходный код по сравнению с лицензированным .............................................383 13.1.5. Отношение к безопасности .......................................................383 13.1.6. Независимость потребителей ...................................................384 13.1.7. Облачная стратегия ....................................................................384 13.1.8. Организационная структура ......................................................385 9 / 52 10  Содержание 13.1.9. Несколько платформ? ................................................................385 13.1.10. Организационные факторы. Заключение ...............................385 13.2. Области, которые следует учитывать при переходе на Docker .........386 13.2.1. Безопасность и контроль ...........................................................386 13.2.2. Создание и доставка образов .....................................................394 13.2.3. Запуск контейнеров ...................................................................398 13.3. Поставщики, организации и продукты ..............................................401 13.3.1. Cloud Native Computing Foundation (CNCF) ..............................401 13.3.2. Docker, Inc ...................................................................................403 13.3.3. Google .........................................................................................403 13.3.4. Microsoft .....................................................................................403 13.3.5. Amazon ........................................................................................404 13.3.6. Red Hat ........................................................................................404 Резюме ..........................................................................................................405 Часть 5. Docker в рабочем окружении .......................................................407 Глава 14. Docker и безопасность ..................................................................408 14.1. Получение доступа к Docker, и что это значит ...................................408 14.1.1. Вас это волнует? ..........................................................................409 14.2. Меры безопасности в Docker ...............................................................410 МЕТОД 93. Ограничение мандатов .......................................................410 МЕТОД 94. «Плохой» образ Docker для сканирования ............................415 14.3. Обеспечение доступа к Docker ...........................................................417 МЕТОД 95. HTTP­аутентификация на вашем экземпляре Docker ..........417 МЕТОД 96. Защита API Docker ..............................................................422 14.4. Безопасность за пределами Docker .....................................................426 МЕТОД 97. Сокращение поверхности атаки контейнера с помощью DockerSlim ..............................................427 МЕТОД 98. Удаление секретов, добавленных во время сборки ...............434 МЕТОД 99. OpenShift: платформа приложений как сервис ....................438 МЕТОД 100. Использование параметров безопасности .........................447 Резюме ..........................................................................................................455 Глава 15. Как по маслу: запуск Docker в рабочем окружении ..............456 15.1. Мониторинг ..........................................................................................457 МЕТОД 101. Логирование контейнеров в системный журнал хоста .......457 МЕТОД 102. Логирование вывода журналов Docker ...............................460 МЕТОД 103. Мониторинг контейнеров с помощью cAdvisor ..................463 15.2. Управление ресурсами ........................................................................465 МЕТОД 104. Ограничение количества ядер для работы контейнеров .....465 МЕТОД 105. Предоставление важным контейнерам больше ресурсов ЦП .....................................................................466 МЕТОД 106. Ограничение использования памяти контейнера ..............468 10 / 52

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.