Podman в действии

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Пришло время обновить свой контейнерный движок! Менеджер контейнеров Podman обеспечивает гибкое управление слоями образов и полную совместимость с Kubernetes, а также дает возможность пользователям без прав администратора создавать, запускать непривилегированные контейнеры и управлять ими. OCI-совместимая поддержка Docker API позволяет перевести существующие контейнеры на Podman, не ломая свои скрипты и не меняя привычного порядка работы. «Podman в действии» познакомит вас с менеджером контейнеров Podman. Простые объяснения и примеры позволят быстро разобраться с тем, что такое контейнеры, как они работают и как управлять ими. Вы получите глубокие знания об используемых Podman компонентах Linux и даже узнаете больше о Docker. Особенно ценны соображения автора Дэна Уолша по поводу безопасности контейнеров.

Author(s): Дэниэл Уолш
Series: Для профессионалов
Publisher: Питер
Year: 2024

Language: Russian
Pages: 352
City: СПб.

Краткое содержание
Оглавление
Об этой книге
Для кого эта книга
Структура издания: дорожная карта
Форум LiveBook
Автор онлайн
Об авторе
Предисловие
Благодарности
Иллюстрация на обложке
О переводчике на русский язык
От издательства
Часть 1. Основы
1. Podman: контейнерный движок нового поколения
1.1. О терминологии
1.2. Краткое описание контейнеров
1.2.1. Образы контейнеров: новый способ доставки программного обеспечения
1.2.2. Как образы контейнеров способствуют развитию микросервисов
1.2.3. Формат образа контейнера
1.2.4. Контейнерные стандарты
1.3. Зачем использовать Podman, если есть Docker
1.3.1. Почему есть только один способ запуска контейнеров
13.2. Непривилегированные (rootless) контейнеры
1.3.3. Модель fork/exec
1.3.4. Podman без демонов
1.3.5. Дружественная командная строка
1.3.6. Поддержка REST API
1.3.7. Интеграция с systemd
1.3.8. Поды
1.3.9. Настраиваемые реестры
1.3.10. Множественный транспорт
1.3.11. Полная настраиваемость
1.3.12. Поддержка пользовательского пространства имен
1.4. Когда не следует использовать Podman
Резюме
2. Командная строка
2.1. Работа с контейнерам
2.1.1. Исследование контейнеров
2.1.2. Запуск контейнерного приложения
2.1.3. Остановка контейнеров
2.1.4. Запуск контейнеров
2.1.5. Список контейнеров
2.1.6. Инспектирование контейнеров
2.1.7. Удаление контейнеров
2.1.8. Выполнение команд внутри контейнера
2.1.9. Создание образа из контейнера
2.2. Работа с образами контейнеров
2.2.1. Разница между контейнером и образом
2.2.2. Вывод списка образов
2.2.3. Инспектирование образов
2.2.4. Передача образов
2.2.5. podman login: аутентификация в реестре контейнеров
2.2.6. Тегирование образов
2.2.7. Удаление образов
2.2.8. Загрузка образов
2.2.9. Поиск образов
2.2.10. Монтирование образов
2.3. Сборка образов
2.3.1. Формат Containerfile или Dockerfile
Добавление содержимого к образу
Документация — как использовать образ
Сохранение образа
2.3.2. Автоматизация сборки нашего приложения
Резюме
3. Тома
3.1. Использование томов в контейнерах
3.1.1. Именованные тома
3.1.2. Параметры монтирования томов
Параметр тома U
Параметры SELINUX для томов
3.1.3. Параметр --mount команды podman run
Резюме
4. Поды
4.1. Управление подами
4.2. Создание подов
4.3. Добавление контейнера в под
4.4. Запуск подов
4.5. Остановка пода
4.6. Вывод списка подов
4.7. Удаление подов
Резюме
Часть 2. Архитектура
5. Настройка и файлы конфигурации
5.1. Конфигурационные файлы для хранилища
5.1.1. Расположение хранилища
5.1.2. Драйверы хранилища
5.2. Конфигурационные файлы реестров
5.2.1. registries.con
5.2.2. Запрет на загрузку из реестров контейнеров
5.3. Конфигурационные файлы контейнерных движков
5.4. Системные файлы конфигурации
Резюме
6. Непривилегированные (rootless) контейнеры
6.1. Как работает Podman в режиме rootless?
6.1.1. Образы с содержимым, принадлежащим нескольким идентификаторам пользователей (U ID s)
6.1.2. Пользовательское пространство имен (user namespace)
6.1.3. Пространство имен mount (mount namespace)
6.1.4. Пользовательское пространство имен и пространство имен m ount
6.2. «Под капотом» Podman без root
6.2.1. Скачивание образа
6.2.2. Создание контейнера
6.2.3. Настройка сети
6.2.4. Запуск мониторинга контейнера: conmon
6.2.5. Запуск среды выполнения ОС
6.2.6. Контейнерное приложение работает до своего завершения
Резюме
Часть 3. Расширенные возможности Podman
7. Интеграция с systemd
7.1. Запуск systemd внутри контейнера
7.1.1. Требования к systemd в контейнерах
7.1.2. Контейнер Podman в режиме systemd
7.1.3. Запуск службы Apache в systemd-контейнере
7.2. Journald для ведения журналов и событий
7.2.1. Драйвер логирования
7.2.2. События
7.3. Запуск контейнеров при загрузке
7.3.1. Перезапуск контейнеров
7.3.2. Контейнеры Podman как службы systemd
7.3.3. Распространение юнит-файлов systemd для управления контейнерами Podman
7.3.4. Автоматическое обновление контейнеров Podman
Таймеры SYSTEMD, инициирующие обновления Podman
7.4. Запуск контейнеров в юнит-файлах типа notify
7.5. Откат неисправных контейнеров после обновления
7.6. Контейнеры Podman, активируемые через сокет
Резюме
8. Работа с Kubernetes
8.1. YAML-файлы Kubernetes
8.2. Генерация YAML-файлов Kubernetes с помощью Podman
8.3. Генерация подов и контейнеров Podman из Kubernetes YAML
8.3.1. Завершение работы подов и контейнеров на основании Kubernetes YAML-файла
8.3.2. Создание образов с использованием YAML-файлов Podman и Kubernetes
8.4. Запуск Podman внутри контейнера
8.4.1. Запуск Podman внутри Podman-контейнера
8.4.2. Запуск Podman внутри пода Kubernetes
Резюме
9. Podman как служоа
9.1. Знакомство со службой Podman
9.1.1. Службы systemd
9.2. API, поддерживаемые Podman
9.3. Библиотеки Python для работы с Podman
9.3.1. Использование docker-py с Podman A P I
9.3.2. Использование podman-py с Podman A PI
9.3.3. Какую библиотеку Python выбрать
9.4. Использование docker-compose со службой Podman
9.5. podman —remote
9.5.1. Локальные подключения
9.5.2. Удаленные подключения
Включение SSHD-соединений
Активация службы Podman на серверной машине
9.5.3. Настройка SSH на клиентской машине
9.5.4. Настройка соединения
Резюме
Часть 4. Безопасность контейнеров
10. Изоляция контейнеров
10.1. Read-only псевдофайловые системы ядра Linu
10.1.1. Снятие маскировки с путей
10.1.2. Маскировка дополнительных путей
10.2. Linux-привилегии (Linux capabilities)
10.2.1. Отключенные Linux-привилегии
10.2.2. Отключение привилегии CAP_SYS_ADMIN
10.2.3. Отказ от привилегий
10.2.4. Добавление привилегий
10.2.5. Отключение новых привилегий
10.2.6. Root без привилегий по-прежнему опасен
10.3. Изоляция UID: Пользовательское пространство имен
10.3.1. Изоляция контейнеров с использованием флага --userns=auto
10.3.2. Linux-привилегии пользовательского пространства имен
10.3.3. Rootless Podman с флагом ~userns=auto
10.3.4. Пользовательские тома с флагом ~userns=auto
10.4. Изоляция процессов: пространство имен PID
10.5. Сетевая изоляция: сетевое пространство имен
10.6. ІРС-изоляция: пространство имен ІР С
10.7. Изоляция файловой системы: пространство имен mount
10.8. Изоляция файловой системы: SELinux
10.8.1. SELinux type enforcement
10.8.2. Мультикатегорийное разделение SELinux
10.9. Изоляция системных вызовов seccomp
10.10. Изоляция виртуальных машин
Резюме
11. Дополнительные аспекты безопасности
11.1. Сравнение демона с моделью fork/exe
11.1.1. Доступ к docker.sock
11.1.2. Дотирование и аудит
11.2. Работа с секретами в Podman
11.3. Доверие к образам Podman
11.3.1. Подписание образов в Podman
Подпись и отправка образа
Настройка Podman для загрузки подписанных образов
11.4. Сканирование образов
11.4.1. Контейнеры, доступные только для чтения
11.5. Глубокая защита
11.5.1. Podman использует все механизмы безопасности одновременно
11.5.2. Где следует запускать контейнеры?
Резюме
Приложения
Приложение А. Инструменты, связанные с Podman
А.1. Skopeo
А.2. Buildah
А.2.1. Создание рабочего контейнера из базового образа
А.2.2. Добавление данных в рабочий контейнер
A.2.3. Выполнение команд в рабочем контейнере
А.2.4. Добавление содержимого в рабочий контейнер напрямую с хоста
А.2.5. Конфигурирование рабочего контейнера
А.2.6. Создание образа из рабочего контейнера
A.2.7. Отправка образа в реестр контейнеров
А.2.8. Создание образа из Containerfile
А.2.9. Buildah как библиотека
A.З. CRI-O: Container Runtime Interface для контейнеров ОСI
Приложение В. Среды выполнения ОСІ
B.1. runc
В.2. crun
B.3. Kata
B.4. gVisor
Приложение C. Установка Podman
C.1. Установка Podman
C.1.1. macOS
Homebrew
С.1.2. Windows
Windows Remote Client
Подсистема WINDOWS для LINUX (WSL) 2.0
С.1.3. Arch Linux и Manjaro Linux
C.1.4. CentOS
С.1.5. Debian
С.1.6. Fedora
C.1.7. Fedora-CoreOS, Fedora Silverblue
С.1.8. Gentoo
C.1.9. OpenEmbedded
C.1.10. openSUSE
C.1.11. openSUSE Kubic
С.1.12. Raspberry Pi OS arm64
C.1.13. Red Hat Enterprise Linux
RHEL7
RHEL8
RHEL9 (and beyond)
C.1.14. Ubuntu
C.2. Сборка Podman из исходного кода
C.3. Podman Desktop
Резюме
Приложение D. Участие в проекте Podman
D.1. Вступление в сообществ
D.2. Podman на github.com
Приложение E. Podman на macOS
E.1. Использование команд podman machi
Е.1.1. podman machine init
E.1.2. Настройка SSH для машины Podman
Е.1.3. Запуск виртуальной машины
Е.1.4. Остановка виртуальной машины
Резюме
Приложение F. Podman в Windows
F.1. Первые шаги
F.1.1. Предварительные условия
F.1.2. Установка Podman
F.1.3. Автоматическая установка W SL
F.2. Использование команды podman machine
F.2.1. podman machine init
F.2.2. Настройка SSH в podman machine
F.2.3. Запуск экземпляра WSL 2
F.2.4. Использование команд podman machine
Остановка экземпляра WSL 2
Вывод списка машин
Использование PODMAN в командной строке WSL
Обновление FEDORA
Расширенная остановка и перезапуск
Резюме