Опубликовано

Новинка: “Docker. Вводный курс. 3 издание”

Docker. Вводный курс. 3 издание

Книга подробно описывает инструментарий Docker и возможности использования контейнеров для развертывания программного обеспечения. Рассказано об интеграции Docker и контейнеров Linux с облачными сервисами и Kubernetes. Описаны методы сборки образов Open Container Initiative (OCI), развертывания и администрирования образов с использованием командной строки. Показано, как образы OCI упрощают управление зависимостями и ускоряют процесс развертывания приложений. Даны практические рекомендации по настройке и тестированию контейнеров, подробно рассмотрены инструменты оркестрации, обеспечения безопасности и конфигурирования Docker. В третьем издании особое внимание уделено инструменту BuildKit, поддержке мультиархитектурных образов, а также контейнеров в режиме rootless.

Для разработчиков, системных администраторов, архитекторов и технических специалистов

Надежные контейнеры на практике

  • Узнайте, как Docker и контейнеры Linux интегрируются с облачными сервисами и Kubernetes
  • Научитесь собирать образы Open Container Initiative (OCI), а затем развертывайте и администрируйте контейнеры Linux с помощью эффективных инструментов командной строки
  • Узнайте, как образы OCI упрощают управление зависимостями и ускоряют процесс развертывания приложений
  • Используйте практические рекомендации по развертыванию и тестированию контейнеров Linux в рабочей среде
  • Настраивайте контейнеры в любом масштабе и в любом окружении
  • Познакомьтесь с инструментами развертывания, оркестрации, обеспечения безопасности и конфигурирования Docker.

В книге описываются не только теоретические преимущества технологии Docker, но и практические аспекты использования контейнеров в рабочей среде.
 Келси Хайтауэр, руководитель группы разработчиков в компании Google Cloud Platform

В книге подробно изложены базовые принципы и практические аспекты работы с ПО Docker на основе многолетнего опыта.
 Лиз Райс, руководитель проектов с открытым исходным кодом в компании Isovalent

Книга поможет вам строить современные, надежные и высокодоступные распределенные системы.
 Михай Тодор, главный инженер в компании TLCP

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

Третье издание обновлено с учетом существенных изменений, которые произошли в технологии Docker с выпуска первой книги почти десять лет назад. Авторы подробно рассмотрели такие нововведения, как BuildKit, поддержку мультиархитектурных образов, контейнеры в режиме rootless и другие.

 

Книгу “Docker. Вводный курс. 3 издание” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Отзывы о книге……………………………………………………………………………………… 13

Вступительное слово………………………………………………………………………………. 15

Предисловие…………………………………………………………………………………………… 17

Кому следует прочесть эту книгу…………………………………………………………………………………………….. 17

Зачем читать эту книгу……………………………………………………………………………………………………………… 17

Содержание книги……………………………………………………………………………………………………………………… 18

Обозначения……………………………………………………………………………………………………………………………….. 19

Использование примеров кода…………………………………………………………………………………………………. 20

Онлайн-обучение O’Reilly…………………………………………………………………………………………………………. 20

Контактная информация…………………………………………………………………………………………………………… 21

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

Глава 1. Введение…………………………………………………………………………………… 23

Ожидания от Docker…………………………………………………………………………………………………………………… 23

Преимущества рабочего процесса Docker…………………………………………………………………………. 25

В чем Docker не поможет…………………………………………………………………………………………………………… 27

Важная терминология……………………………………………………………………………………………………………….. 28

Заключение………………………………………………………………………………………………………………………………… 29

Глава 2. Общие сведения о Docker…………………………………………………………. 30

Упрощение рабочих процессов………………………………………………………………………………………………… 30

Широкая поддержка и внедрение…………………………………………………………………………………………….. 33

Архитектура……………………………………………………………………………………………………………………………….. 35

Клиент-серверная архитектура………………………………………………………………………………………….. 35

Сетевые порты и сокеты Unix……………………………………………………………………………………………… 36

Надежные инструменты………………………………………………………………………………………………………. 37

Интерфейс командной строки Docker…………………………………………………………………………………. 37

Docker Engine API…………………………………………………………………………………………………………………. 38

Сеть для контейнеров…………………………………………………………………………………………………………… 38

Как использовать весь потенциал Docker……………………………………………………………………………….. 40

Контейнеры — это не виртуальные машины…………………………………………………………………….. 40

Ограниченная изоляция……………………………………………………………………………………………………….. 41

Контейнеры легковесны………………………………………………………………………………………………………. 42

Сдвиг в сторону неизменяемой инфраструктуры……………………………………………………………… 42

Приложения без сохранения состояния……………………………………………………………………………… 43

Хранение состояния во внешнем хранилище…………………………………………………………………….. 44

Рабочий процесс Docker……………………………………………………………………………………………………………. 44

Контроль изменений…………………………………………………………………………………………………………….. 45

Слои файловой системы…………………………………………………………………………………………… 45

Теги образов………………………………………………………………………………………………………………. 45

Сборка…………………………………………………………………………………………………………………………………… 46

Тестирование………………………………………………………………………………………………………………………… 47

Упаковка……………………………………………………………………………………………………………………………….. 48

Развертывание………………………………………………………………………………………………………………………. 48

Экосистема Docker……………………………………………………………………………………………………………….. 49

Оркестрация………………………………………………………………………………………………………………. 49

Неизменяемые атомарные хосты…………………………………………………………………………….. 49

Дополнительные инструменты………………………………………………………………………………… 50

Заключение………………………………………………………………………………………………………………………………… 51

Глава 3. Установка Doker………………………………………………………………………. 52

Клиент Docker…………………………………………………………………………………………………………………………….. 52

Linux………………………………………………………………………………………………………………………………………. 53

Ubuntu Linux 22.04 (64-разрядная)………………………………………………………………………….. 53

Fedora Linux 36 (64-разрядная)……………………………………………………………………………….. 54

macOS, Mac OS X…………………………………………………………………………………………………………………. 55

Установщик с графическим интерфейсом………………………………………………………………. 55

Установка Homebrew……………………………………………………………………………………………….. 55

Microsoft Windows 11…………………………………………………………………………………………………………… 56

Включение режима контейнеров Linux для Windows……………………………………………. 56

Установка Chocolatey………………………………………………………………………………………………. 56

Сервер Docker…………………………………………………………………………………………………………………………….. 57

Linux с systemd………………………………………………………………………………………………………………………. 58

Сервер на базе виртуальной машины без Linux……………………………………………………………….. 58

Vagrant……………………………………………………………………………………………………………………….. 58

Тестирование системы………………………………………………………………………………………………………………. 63

Ubuntu……………………………………………………………………………………………………………………………………. 63

Fedora…………………………………………………………………………………………………………………………………….. 63

Alpine Linux…………………………………………………………………………………………………………………………… 64

Сервер Docker…………………………………………………………………………………………………………………………….. 64

Заключение………………………………………………………………………………………………………………………………… 66

Глава 4. Работа с образами Docker…………………………………………………………. 67

Структура Dockerfile…………………………………………………………………………………………………………………. 68

Сборка образа……………………………………………………………………………………………………………………………. 70

Запуск образа…………………………………………………………………………………………………………………………….. 73

Аргументы сборки………………………………………………………………………………………………………………… 74

Переменные среды для конфигурации……………………………………………………………………………….. 74

Пользовательские базовые образы………………………………………………………………………………………….. 75

Хранение образов………………………………………………………………………………………………………………………. 76

Публичные реестры……………………………………………………………………………………………………………… 76

Частные реестры………………………………………………………………………………………………………………….. 77

Аутентификация для входа в реестр…………………………………………………………………………………… 77

Создание учетной записи Docker Hub…………………………………………………………………….. 78

Вход в реестр…………………………………………………………………………………………………………….. 78

Отправка образов в репозиторий…………………………………………………………………………….. 80

Поиск образов в Docker Hub…………………………………………………………………………………….. 81

Управление частным реестром…………………………………………………………………………………………… 82

Тестирование частного реестра………………………………………………………………………………. 84

Оптимизация образов………………………………………………………………………………………………………………… 85

Контроль размера образов………………………………………………………………………………………………….. 85

Многоэтапные сборки………………………………………………………………………………………………. 90

Суммирование слоев……………………………………………………………………………………………………………. 92

Использование кеша слоев………………………………………………………………………………………………….. 94

Кеширование каталога………………………………………………………………………………………………………… 99

Решение проблем со сборками……………………………………………………………………………………………….. 103

Отладка образов без BuildKit……………………………………………………………………………………………. 103

Отладка образов с BuildKit……………………………………………………………………………………………….. 105

Мультиархитектурные сборки……………………………………………………………………………………………….. 107

Заключение………………………………………………………………………………………………………………………………. 111

Глава 5. Работа с контейнерами…………………………………………………………… 112

Что такое контейнер?………………………………………………………………………………………………………………. 112

История контейнеров…………………………………………………………………………………………………………. 113

Создание контейнера………………………………………………………………………………………………………………. 114

Базовая конфигурация……………………………………………………………………………………………………….. 115

Имя контейнера……………………………………………………………………………………………………….. 115

Метки……………………………………………………………………………………………………………………….. 115

Имя хоста…………………………………………………………………………………………………………………. 116

DNS…………………………………………………………………………………………………………………………… 118

MAC-адрес………………………………………………………………………………………………………………. 118

Тома хранилища………………………………………………………………………………………………………………… 119

Квоты на ресурсы………………………………………………………………………………………………………………. 121

Доля процессорного времени………………………………………………………………………………… 122

Привязка к процессору…………………………………………………………………………………………… 124

Упрощение квот на ресурсы процессора……………………………………………………………… 125

Память……………………………………………………………………………………………………………………… 126

Блочный ввод-вывод………………………………………………………………………………………………. 128

ulimit…………………………………………………………………………………………………………………………. 129

Запуск контейнера…………………………………………………………………………………………………………………… 130

Автоматический перезапуск контейнера………………………………………………………………………………. 131

Остановка контейнера…………………………………………………………………………………………………………….. 131

Принудительное завершение контейнера……………………………………………………………………………… 133

Приостановка и возобновление контейнера…………………………………………………………………………. 133

Очистка контейнеров и образов……………………………………………………………………………………………… 134

Контейнеры Windows………………………………………………………………………………………………………………. 136

Заключение………………………………………………………………………………………………………………………………. 140

Глава 6. Сбор информации в Docker…………………………………………………….. 141

Просмотр версии Docker…………………………………………………………………………………………………………. 141

Информация о сервере…………………………………………………………………………………………………………….. 143

Загрузка обновлений образов………………………………………………………………………………………………… 144

Изучение контейнера………………………………………………………………………………………………………………. 145

Изучение командной оболочки………………………………………………………………………………………………. 147

Возврат результата…………………………………………………………………………………………………………………. 148

Что происходит в контейнере…………………………………………………………………………………………………. 149

docker container exec………………………………………………………………………………………………………….. 149

docker volume………………………………………………………………………………………………………………………. 150

Журналирование……………………………………………………………………………………………………………………… 152

docker container logs………………………………………………………………………………………………………….. 152

Расширенные возможности журналирования…………………………………………………………………. 154

Мониторинг в Docker………………………………………………………………………………………………………………. 156

Статистика контейнера……………………………………………………………………………………………………… 156

Статистика в командной строке……………………………………………………………………………. 156

Эндпоинт API stats………………………………………………………………………………………………….. 158

Проверки работоспособности контейнеров…………………………………………………………………….. 160

docker system events…………………………………………………………………………………………………………….. 163

cAdvisor……………………………………………………………………………………………………………………………….. 164

Мониторинг с помощью Prometheus………………………………………………………………………………………. 166

Самостоятельная работа………………………………………………………………………………………………………… 170

Заключение………………………………………………………………………………………………………………………………. 170

Глава 7. Отладка контейнеров……………………………………………………………… 171

Вывод процесса……………………………………………………………………………………………………………………….. 171

Изучение процесса…………………………………………………………………………………………………………………… 176

Контроль процессов………………………………………………………………………………………………………………… 178

Изучение сети…………………………………………………………………………………………………………………………… 180

История образа………………………………………………………………………………………………………………………… 183

Изучение контейнера………………………………………………………………………………………………………………. 184

Изучение файловой системы…………………………………………………………………………………………………… 185

Заключение………………………………………………………………………………………………………………………………. 186

Глава 8. Принципы работы Docker Compose………………………………………… 187

Настройка Docker Compose……………………………………………………………………………………………………. 188

Запуск сервисов……………………………………………………………………………………………………………………….. 196

Принципы работы Rocket.Chat………………………………………………………………………………………………. 198

Применение Docker Compose………………………………………………………………………………………………….. 205

Управление конфигурацией……………………………………………………………………………………………………. 207

Значения по умолчанию……………………………………………………………………………………………………. 207

Обязательные значения……………………………………………………………………………………………………… 209

Файл dotenv………………………………………………………………………………………………………………………… 210

Заключение………………………………………………………………………………………………………………………………. 211

Глава 9. Переход на контейнеры в рабочей среде…………………………………. 212

Подготовка к развертыванию…………………………………………………………………………………………………. 212

Docker в рабочих средах…………………………………………………………………………………………………………. 213

Управление заданиями………………………………………………………………………………………………………. 214

Ограничения ресурсов……………………………………………………………………………………………………….. 215

Сети……………………………………………………………………………………………………………………………………… 216

Конфигурация…………………………………………………………………………………………………………………….. 216

Упаковка и поставка………………………………………………………………………………………………………….. 217

Журналирование……………………………………………………………………………………………………………….. 217

Мониторинг………………………………………………………………………………………………………………………… 217

Планирование…………………………………………………………………………………………………………………….. 218

Распределенные планировщики……………………………………………………………………………. 218

Оркестрация…………………………………………………………………………………………………………….. 219

Обнаружение сервисов………………………………………………………………………………………………………. 220

Заключение по рабочей среде………………………………………………………………………………………….. 222

Docker в конвейере DevOps……………………………………………………………………………………………………… 222

Краткий обзор…………………………………………………………………………………………………………………….. 222

Внешние зависимости………………………………………………………………………………………………………… 225

Заключение………………………………………………………………………………………………………………………………. 226

Глава 10. Масштабирование контейнеров……………………………………………. 227

Режим Docker Swarm……………………………………………………………………………………………………………….. 228

Kubernetes…………………………………………………………………………………………………………………………………. 238

Инструмент Minikube…………………………………………………………………………………………………………. 239

Общие сведения о Minikube……………………………………………………………………………………. 239

Установка Minikube………………………………………………………………………………………………… 239

Запуск Kubernetes……………………………………………………………………………………………………. 242

Команды minikube…………………………………………………………………………………………………… 244

Kubernetes Dashboard……………………………………………………………………………………………… 244

Контейнеры и поды Kubernetes……………………………………………………………………………… 245

Практический пример…………………………………………………………………………………………….. 247

Развертывание реалистичного стека…………………………………………………………………….. 249

Определение сервиса……………………………………………………………………………………………… 250

Определение PersistentVolumeClaim……………………………………………………………………… 251

Определение Deployment………………………………………………………………………………………… 252

Развертывание приложения…………………………………………………………………………………… 253

Увеличение масштаба……………………………………………………………………………………………. 255

kubectl API……………………………………………………………………………………………………………….. 256

Kubernetes, интегрированный в Docker Desktop………………………………………………………………. 258

Kind……………………………………………………………………………………………………………………………………… 259

Amazon ECS и Fargate……………………………………………………………………………………………………………… 261

Базовая настройка AWS……………………………………………………………………………………………………. 262

Настройка ролей IAM……………………………………………………………………………………………………….. 262

Настройка AWS CLI………………………………………………………………………………………………………….. 262

Установка………………………………………………………………………………………………………………… 263

Конфигурация…………………………………………………………………………………………………………. 263

Экземпляры контейнеров…………………………………………………………………………………………………… 264

Задачи…………………………………………………………………………………………………………………………………. 265

Тестирование задачи…………………………………………………………………………………………………………. 273

Остановка задачи………………………………………………………………………………………………………………. 273

Заключение………………………………………………………………………………………………………………………………. 275

Глава 11. Расширенные концепции……………………………………………………… 276

Контейнеры в деталях…………………………………………………………………………………………………………….. 276

cgroups………………………………………………………………………………………………………………………………… 277

Файловая система /sys……………………………………………………………………………………………. 278

Пространства имен…………………………………………………………………………………………………………….. 281

Изучение пространств имен…………………………………………………………………………………… 283

Безопасность……………………………………………………………………………………………………………………………. 284

UID 0……………………………………………………………………………………………………………………………………. 285

Режим rootless…………………………………………………………………………………………………………………….. 288

Привилегированные контейнеры……………………………………………………………………………………… 292

Secure Computing Mode……………………………………………………………………………………………………… 295

SELinux и AppArmor…………………………………………………………………………………………………………… 299

Демон Docker………………………………………………………………………………………………………………………. 300

Расширенная конфигурация……………………………………………………………………………………………………. 301

Сети……………………………………………………………………………………………………………………………………… 302

Сеть хоста……………………………………………………………………………………………………………….. 304

Конфигурирование сетей……………………………………………………………………………………….. 306

Хранилище……………………………………………………………………………………………………………………………….. 308

nsenter……………………………………………………………………………………………………………………………………….. 312

Отладка контейнеров без командной оболочки……………………………………………………………… 313

Структура Docker…………………………………………………………………………………………………………………….. 315

Альтернативные среды выполнения………………………………………………………………………………………. 320

gVisor……………………………………………………………………………………………………………………………………. 320

Заключение………………………………………………………………………………………………………………………………. 323

Глава 12. Развитие экосистемы……………………………………………………………. 324

Клиентские инструменты………………………………………………………………………………………………………… 324

nerdctl………………………………………………………………………………………………………………………………….. 324

podman и buildah………………………………………………………………………………………………………………… 325

Универсальные инструменты разработчика………………………………………………………………………… 327

Rancher Desktop………………………………………………………………………………………………………………….. 327

Podman Desktop………………………………………………………………………………………………………………….. 328

Заключение………………………………………………………………………………………………………………………………. 329

Глава 13. Устройство контейнерной платформы………………………………….. 330

Приложение двенадцати факторов………………………………………………………………………………………… 331

Кодовая база………………………………………………………………………………………………………………………. 331

Зависимости……………………………………………………………………………………………………………………….. 332

Конфигурация…………………………………………………………………………………………………………………….. 333

Сторонние службы…………………………………………………………………………………………………………….. 334

Сборка, выпуск, выполнение…………………………………………………………………………………………….. 335

Процессы…………………………………………………………………………………………………………………………….. 335

Привязка портов…………………………………………………………………………………………………………………. 336

Параллелизм………………………………………………………………………………………………………………………. 336

Утилизируемость……………………………………………………………………………………………………………….. 337

Паритет среды разработки и рабочей среды………………………………………………………………….. 337

Журналы…………………………………………………………………………………………………………………………….. 338

Администрирование…………………………………………………………………………………………………………… 338

Заключение по 12 факторам……………………………………………………………………………………………… 339

Манифест реактивных систем………………………………………………………………………………………………… 339

Быстрый отклик………………………………………………………………………………………………………………….. 339

Отказоустойчивость…………………………………………………………………………………………………………… 339

Масштабируемость……………………………………………………………………………………………………………. 339

Ориентация на события…………………………………………………………………………………………………….. 340

Заключение………………………………………………………………………………………………………………………………. 340

Глава 14. Заключение…………………………………………………………………………… 341

Дальнейшее развитие………………………………………………………………………………………………………………. 341

Зачем нужен Docker…………………………………………………………………………………………………………………. 342

Рабочий процесс Docker………………………………………………………………………………………………………….. 343

Меньше программных пакетов для развертывания……………………………………………………………… 343

Оптимизация хранения и получения……………………………………………………………………………………… 344

Результат………………………………………………………………………………………………………………………………….. 345

Итоги…………………………………………………………………………………………………………………………………………. 345

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

Об авторах……………………………………………………………………………………………. 349

Об изображении на обложке………………………………………………………………… 350

Шон Кейн

Шон Кейн ( Sean P. Kane ) — основатель проекта techlabs.sh и главный инженер в компании SuperOrbital.

 

 

Карл Маттиас

Карл Матиас (Karl Matthias) — вице-президент по архитектуре в компании Community.com.

Опубликовано

Новинка: Docker без секретов

Docker без секретов

Книга подробно рассказывает о развертывании и поддержке контейнерных приложений с использованием технологии Docker. Описан принцип работы образов, контейнеров и связанных с ними хранилищ Docker Storage, рассмотрена система контейнеризации Docker Swarm, показаны принципы сетевого взаимодействия Container Network Model. Раскрыты вопросы использования плагинов в сервисах Docker, рассмотрено развертывание служб в Swarm. Отдельная глава посвящена обеспечению безопасности в экосистеме Docker, масштабированию и поддержке контейнерных приложений.

Для разработчиков ПО и системных архитекторов

Создавайте надежные и безопасные приложения с использованием технологии Docker

В книге описаны:

  • Основы работы с контейнерами и экосистемой Docker
  • Использование образов Docker
  • Работа с хранилищами Docker Storage
  • Использование плагинов в сервисах Docker
  • Развертывание служб в Swarm
  • Cетевые возможности Docker
  • Безопасность приложений в экосистеме Docker
  • Масштабирование и поддержка контейнерных приложений

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

Книгу “Docker без секретов” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Об авторе……………………………………………………………………………………………….. 11

Благодарности……………………………………………………………………………………….. 13

Предисловие…………………………………………………………………………………………… 15

Глава 1. Контейнеризация и Docker……………………………………………………….. 17

Введение……………………………………………………………………………………………………………………………………… 17

Жизнь до контейнеризации……………………………………………………………………………………………………….. 18

Концепция контейнеризации…………………………………………………………………………………………………….. 18

Преимущества контейнеризации……………………………………………………………………………………………… 19

Docker………………………………………………………………………………………………………………………………………….. 21

Docker Engine……………………………………………………………………………………………………………………………… 21

Компоненты Docker Engine……………………………………………………………………………………………….. 22

Docker Hub и Docker Registry…………………………………………………………………………………………………….. 23

Контейнеры Linux и Windows…………………………………………………………………………………………………… 24

Контейнеры и Windows……………………………………………………………………………………………………… 24

Микросервисы и контейнеризация…………………………………………………………………………………………… 24

Безопасность в Docker……………………………………………………………………………………………………………….. 25

Заключение………………………………………………………………………………………………………………………………… 27

Основные тезисы………………………………………………………………………………………………………………………… 27

Контрольный тест……………………………………………………………………………………………………………………… 28

Ответы…………………………………………………………………………………………………………………………………. 28

Вопросы……………………………………………………………………………………………………………………………………… 29

Ключевые термины……………………………………………………………………………………………………………………. 29

Глава 2. Контейнеры и образы………………………………………………………………. 31

Контейнеры: общая характеристика……………………………………………………………………………………….. 31

Запуск контейнера…………………………………………………………………………………………………………………….. 32

Состояния контейнеров Docker………………………………………………………………………………………………… 34

Процессы внутри контейнера…………………………………………………………………………………………………… 36

Исследование контейнера и получение информации…………………………………………………………….. 38

Журналы контейнеров………………………………………………………………………………………………………………. 39

Базовая архитектура контейнера…………………………………………………………………………………………….. 43

Образы: общая характеристика……………………………………………………………………………………………….. 44

Образы: детальное изучение…………………………………………………………………………………………………….. 45

Копирование при записи…………………………………………………………………………………………………… 47

Где хранятся образы?………………………………………………………………………………………………………… 48

Исследование образа и получение информации…………………………………………………………….. 49

Сохранение образа……………………………………………………………………………………………………………. 49

Сохранение образа с помощью команды COMMIT……………………………………………………….. 50

Dockerfile…………………………………………………………………………………………………………………………………….. 52

Кеш сборки…………………………………………………………………………………………………………………………………. 53

Многоступенчатые сборки……………………………………………………………………………………………………….. 54

Заключение………………………………………………………………………………………………………………………………… 59

Основные тезисы………………………………………………………………………………………………………………………… 59

Контрольный тест……………………………………………………………………………………………………………………… 60

Ответы…………………………………………………………………………………………………………………………………. 62

Вопросы……………………………………………………………………………………………………………………………………… 62

Ключевые термины……………………………………………………………………………………………………………………. 62

Глава 3. Драйверы хранилища и тома……………………………………………………. 63

Драйверы хранилища Docker…………………………………………………………………………………………………… 63

Поддерживаемые драйверы хранилища………………………………………………………………………….. 64

Поддержка backing filesystem……………………………………………………………………………………………………. 64

Драйверы хранилища overlay и overlay2………………………………………………………………………………… 65

Характеристика и принцип работы драйвера хранилища overlay2……………………………… 66

Тома Docker………………………………………………………………………………………………………………………………… 68

Заключение………………………………………………………………………………………………………………………………… 76

Основные тезисы………………………………………………………………………………………………………………………… 76

Контрольный тест……………………………………………………………………………………………………………………… 77

Ответы…………………………………………………………………………………………………………………………………. 78

Вопросы……………………………………………………………………………………………………………………………………… 79

Ключевые термины……………………………………………………………………………………………………………………. 79

Глава 4. Модель Container Network и сетевой мост Docker………………………. 81

Модель Container Network………………………………………………………………………………………………………… 81

Интерфейcы драйвера CNM……………………………………………………………………………………………………… 82

Libnetwork…………………………………………………………………………………………………………………………………… 83

Драйверы Docker……………………………………………………………………………………………………………………….. 83

Сетевой мост Docker………………………………………………………………………………………………………………….. 84

Концепция пространства имен Linux……………………………………………………………………………….. 84

Мост Docker………………………………………………………………………………………………………………………… 89

Заключение………………………………………………………………………………………………………………………………… 90

Основные тезисы………………………………………………………………………………………………………………………… 90

Контрольный тест……………………………………………………………………………………………………………………… 90

Ответы…………………………………………………………………………………………………………………………………. 91

Вопросы……………………………………………………………………………………………………………………………………… 91

Ключевые термины……………………………………………………………………………………………………………………. 92

Глава 5. Docker Swarm…………………………………………………………………………… 93

Введение……………………………………………………………………………………………………………………………………… 93

Что такое Docker Swarm……………………………………………………………………………………………………………. 93

Преимущества Docker Swarm……………………………………………………………………………………………………. 94

Создание и настройка кластера Swarm…………………………………………………………………………………… 95

Консенсус в Docker Swarm………………………………………………………………………………………………… 98

Концепция сервиса в Swarm……………………………………………………………………………………………………… 99

Создание реплик………………………………………………………………………………………………………………. 100

Масштабирование сервиса…………………………………………………………………………………………….. 101

Реплицированные и глобальные сервисы……………………………………………………………………… 103

Очистка кластера Swarm………………………………………………………………………………………………………… 104

Блокировка и разблокировка кластера Swarm……………………………………………………………………… 106

Сети в Docker Swarm……………………………………………………………………………………………………………….. 109

Создание сервиса с опубликованным портом………………………………………………………………. 113

Обход маршрутизирующей mesh-сети в Swarm…………………………………………………………….. 114

Шифрование трафика в оверлейной сети………………………………………………………………………. 115

Устранение неполадок в Docker Swarm…………………………………………………………………………………. 115

Заключение………………………………………………………………………………………………………………………………. 115

Основные тезисы……………………………………………………………………………………………………………………… 116

Контрольный тест……………………………………………………………………………………………………………………. 116

Ответы……………………………………………………………………………………………………………………………….. 117

Вопросы……………………………………………………………………………………………………………………………………. 118

Ключевые термины………………………………………………………………………………………………………………….. 118

Глава 6. Сети Docker……………………………………………………………………………. 119

Введение…………………………………………………………………………………………………………………………………… 119

Сети в Docker……………………………………………………………………………………………………………………………. 119

Сеть Bridge………………………………………………………………………………………………………………………………… 120

Сеть Host…………………………………………………………………………………………………………………………………… 126

Сеть None………………………………………………………………………………………………………………………………….. 126

Использование пространства имен существующего контейнера……………………………………….. 127

Сопоставление портов…………………………………………………………………………………………………………….. 128

Сеть MACVLAN……………………………………………………………………………………………………………………….. 130

MACVLAN в режиме bridge…………………………………………………………………………………………….. 131

MACVLAN в режиме Trunk Bridge 802.1Q…………………………………………………………………….. 136

Сеть Overlay……………………………………………………………………………………………………………………………… 138

Основные тезисы……………………………………………………………………………………………………………………… 153

Контрольный тест……………………………………………………………………………………………………………………. 153

Ответы……………………………………………………………………………………………………………………………….. 155

Вопросы……………………………………………………………………………………………………………………………………. 155

Ключевые термины………………………………………………………………………………………………………………….. 156

Глава 7. Безопасность в Docker. Часть 1………………………………………………. 157

Введение…………………………………………………………………………………………………………………………………… 157

Пространства имен ядра…………………………………………………………………………………………………………. 157

Контрольные группы………………………………………………………………………………………………………………. 163

Память……………………………………………………………………………………………………………………………….. 164

Центральный процессор………………………………………………………………………………………………….. 166

Capabilities……………………………………………………………………………………………………………………………….. 167

Обязательный контроль доступа……………………………………………………………………………………………. 170

Docker и AppArmor……………………………………………………………………………………………………………. 176

Docker и SELinux………………………………………………………………………………………………………………. 181

Seccomp…………………………………………………………………………………………………………………………………….. 185

Заключение………………………………………………………………………………………………………………………………. 186

Основные тезисы……………………………………………………………………………………………………………………… 186

Контрольный тест……………………………………………………………………………………………………………………. 187

Ответы……………………………………………………………………………………………………………………………….. 188

Вопросы……………………………………………………………………………………………………………………………………. 188

Ключевые термины………………………………………………………………………………………………………………….. 189

Глава 8. Безопасность в Docker. Часть 2………………………………………………. 191

Введение…………………………………………………………………………………………………………………………………… 191

Docker Enterprise Edition………………………………………………………………………………………………………….. 191

Установка Docker Enterprise Edition……………………………………………………………………………………….. 192

Установка Universal Control Plane…………………………………………………………………………………… 196

Установка Docker Trusted Registry………………………………………………………………………………….. 199

Загрузка и установка клиентского пакета…………………………………………………………………….. 200

Функции безопасности Docker Enterprise Edition………………………………………………………………….. 203

Управление доступом на основе ролей…………………………………………………………………………………. 208

Заключение………………………………………………………………………………………………………………………………. 215

Основные тезисы……………………………………………………………………………………………………………………… 215

Контрольный тест……………………………………………………………………………………………………………………. 216

Ответы……………………………………………………………………………………………………………………………….. 218

Вопросы……………………………………………………………………………………………………………………………………. 218

Ключевые термины………………………………………………………………………………………………………………….. 218

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

 

 

Сайбал Гош — главный программный архитектор в компании Ericsson India Ltd с более чем двадцатилетним опытом в сфере IT-инфраструктуры и безопасности, консалтинга и разработки ПО. За свою карьеру он успел примерить на себя разные роли, включая администратора баз данных, технического консультанта, технического писателя, разработчика приложений и преподавателя.