Glossary
Термины курса с определениями и ссылками на раздел, где термин вводится.
Определения даны так, как термин употребляется в этом курсе. Там, где общепринятое употребление шире или расплывчатее, это отмечено.
Содержание
Основные понятия
| Термин | Определение | Раздел |
|---|---|---|
| Container | Обычный процесс ядра, которому ядро показывает ограниченный вид системы. Не виртуальная машина и не «лёгкая ВМ» | 02 |
| Image (образ) | Неизменяемый набор слоёв файловой системы плюс конфигурация запуска | 03 |
| Daemon (демон) | dockerd — процесс, выполняющий всю работу; работает от root | 17.1 |
| Клиент | docker — преобразователь аргументов в HTTP-запросы к сокету демона | 17.1 |
| Runtime | Программа, создающая container из OCI-описания: runc, crun | 02.6 |
containerd | Управляющий уровень между демоном и runtime; используется и в Kubernetes | 17.2 |
| shim | Процесс-посредник, остающийся родителем container'а; держит стандартные потоки и код возврата | 17.2 |
| OCI | Стандарт на формат образов и на runtime; то, что делает образы переносимыми между реализациями | 02.6 |
| PID 1 | Первый процесс в PID namespace. Для него ядро не применяет действия по умолчанию для сигналов | 04.5 |
| Эфемерность | Свойство container'а исчезать вместе с записанными в него данными | 07.1 |
Образы и сборка
| Термин | Определение | Раздел |
|---|---|---|
| Слой (layer) | Набор изменений файловой системы; адресуется по содержимому и потому неизменяем | 03.2 |
| Манифест | Описание образа: перечень digest'ов слоёв и конфигурации | 03.1 |
| Digest | Контрольная сумма содержимого. Одно значение — один набор байтов, всегда | 14.4 |
| Тег | Изменяемая ссылка на образ. Может указывать сегодня на одно, завтра на другое | 14.4 |
| Контекст сборки | Каталог, отправляемый демону при docker build | 05.1 |
| Кэш сборки | Переиспользование слоёв, чьи инструкция и входные файлы не изменились | 05.5 |
| BuildKit | Механизм сборки, дающий --mount, --secret, heredoc и параллельные стадии | 05.6 |
| Multi-stage | Сборка из нескольких стадий; в итоговый образ попадает только нужное | 05.7 |
| Cache mount | Кэш вне слоёв, живущий на машине сборки. Не переносится в CI | 16.3 |
| Secret mount | Файл, доступный во время инструкции и не попадающий в слой | 12.6 |
| Exec-форма | CMD ["a", "b"] — процесс запускается напрямую и становится PID 1 | 05.4 |
| Shell-форма | CMD a b — разворачивается в /bin/sh -c; PID 1 становится оболочкой | 05.4 |
| Воспроизводимая сборка | Сборка, дающая тот же digest при тех же входных данных | 05.9 |
Механизмы ядра
| Термин | Определение | Раздел |
|---|---|---|
| Namespace | Механизм ядра, ограничивающий видимость объектов: PID, сеть, точки монтирования, IPC, имя узла, пользователи, cgroup, время | 17.3 |
| User namespace | Преобразование идентификаторов пользователей. Docker его не создаёт по умолчанию | 12.3 |
| cgroup | Механизм ядра, ограничивающий объём ресурсов: память, процессор, ввод-вывод, число задач | 17.4 |
memory.max | Жёсткий предел памяти: превышение вызывает OOM killer. Это то, что задаёт Docker | 17.4 |
memory.high | Мягкий предел: процесс тормозится до отказа. Docker его не задаёт | 17.4 |
memory.events | Счётчики давления памяти; растут задолго до отказа | 13.3 |
| Capability | Отдельная привилегированная операция ядра; всего их несколько десятков | 02.5 |
| seccomp | Фильтр системных вызовов. Профиль Docker закрывает несколько десятков из более чем трёхсот | 12.5 |
| OverlayFS | Файловая система, собирающая образ из стека слоёв | 17.5 |
| Copy-up | Копирование файла из нижнего слоя в верхний целиком при первой записи | 17.5 |
| Whiteout | Запись «этого файла здесь нет»; содержимое остаётся в нижнем слое | 12.6 |
| OOM killer | Механизм ядра, завершающий процесс при исчерпании памяти; SIGKILL не перехватывается | 11.4 |
| Container escape | Выход процесса за пределы изоляции на хост | 19.2 |
Сеть
| Термин | Определение | Раздел |
|---|---|---|
| Bridge | Виртуальный мост, соединяющий container'ы одной сети | 08.2 |
veth | Пара виртуальных интерфейсов: один конец в container'е, другой в мосте | 08.2 |
| Публикация порта | Правило трансляции: порт хоста ведёт на порт container'а | 08.3 |
EXPOSE | Только документация. Ничего не публикует и не открывает | 08.3 |
| Пользовательская сеть | Сеть, созданная явно; в ней работает разрешение имён по имени container'а | 08.2 |
internal | Свойство сети: container'ы не имеют выхода наружу. Не то же, что «не публиковать порты» | 09.3 |
--network host | Использование сети хоста напрямую; изоляция сети снимается целиком | 08.5 |
| NetworkPolicy | Правило фильтрации трафика в Kubernetes. Не действует без поддержки плагином сети | 18.3 |
Хранилище
| Термин | Определение | Раздел |
|---|---|---|
| Записываемый слой | Верхний слой container'а; исчезает вместе с ним | 07.1 |
| Именованный том | Хранилище под управлением Docker; переживает пересоздание container'а | 07.2 |
| Анонимный том | Том без имени; теряется при пересоздании | 07.2 |
| Bind mount | Подключение каталога хоста; привязан к конкретной машине | 07.3 |
tmpfs | Каталог в памяти; исчезает вместе с container'ом | 07.4 |
| PVC | Запрос на постоянное хранилище в Kubernetes | 18.2 |
ReadWriteOnce | Режим доступа: том подключается к одному узлу. Не решает задачу общего состояния | 18.3 |
Эксплуатация
| Термин | Определение | Раздел |
|---|---|---|
| Healthcheck | Проверка, выполняемая внутри container'а; определяет состояние healthy | 05.8 |
| Liveness | «Жив ли процесс». Отказ означает перезапуск. Не должна проверять зависимости | 11.3 |
| Readiness | «Готов ли обслуживать». Отказ означает вывод из балансировки | 11.3 |
| Startup-проба | «Завершена ли инициализация». Пока не пройдена, liveness не выполняется | 18.2 |
| Grace period | Время между SIGTERM и SIGKILL при остановке; по умолчанию 10 секунд | 04.4 |
| Мягкое завершение | Прекращение приёма новых задач, доработка текущих, выход до истечения grace period | 04.4 |
| Код 137 | 128 + 9: завершён SIGKILL, часто OOM killer'ом | 04.6 |
| Код 143 | 128 + 15: PID 1 умер от SIGTERM. На практике — при --init. Обычный код после docker stop у правильного сервиса — 0 | 04.6 |
| Драйвер журналирования | Куда демон направляет вывод container'а; по умолчанию файл JSON без ротации | 13.1 |
| Структурированный лог | Одна запись — один объект JSON в одной строке | 06.6 |
Доставка
| Термин | Определение | Раздел |
|---|---|---|
| Registry | Хранилище образов | 14.1 |
| Репозиторий | Именованный набор образов в registry; дедупликация слоёв работает в его пределах | 14.1 |
| Неизменяемый тег | Тег, который не перезаписывают: по SHA коммита или по версии | 14.4 |
| Закрепление по digest | Ссылка вида образ@sha256:…; единственный способ гарантировать содержимое | 11.6 |
| SBOM | Перечень состава образа: пакеты и версии | 16.4 |
| Сканирование | Поиск известных уязвимостей в составе образа | 16.4 |
| Три кода возврата | 0 — проверено и чисто, 1 — есть находки, 3 — не проверено. Третий отличает отсутствие инструмента от чистого результата | 16.4 |
mode=max | Режим экспорта кэша, включающий промежуточные стадии. Умолчание min их теряет | 16.3 |
Оркестрация
| Термин | Определение | Раздел |
|---|---|---|
| Compose | Описание многокомпонентной системы на одной машине | 09.1 |
| Orchestration | Управление container'ами на множестве машин | 18.4 |
| Pod | Минимальная единица планирования в Kubernetes: группа container'ов с общими namespace'ами | 18.2 |
| Deployment | Объект для приложений без собственного состояния | 18.2 |
| StatefulSet | Объект для приложений с состоянием: устойчивые имена и свои тома | 18.2 |
requests | Обещание планировщику; влияет на размещение | 18.2 |
limits | Предел; влияет на поведение под нагрузкой | 18.2 |
| dockershim | Прослойка между kubelet и Docker; удалена, на образы это не повлияло | 18.1 |
| Микро-ВМ | Виртуальная машина с минимальным набором устройств: Kata, Firecracker | 19.2 |
Термины, которые часто понимают неверно
Шесть случаев, где расхождение между обиходным и точным смыслом приводит к ошибкам.
| Термин | Как понимают | Что означает на самом деле |
|---|---|---|
EXPOSE | «Открывает порт наружу» | Только документирует; ничего не открывает |
| «Container изолирован» | «Защищён от чего угодно» | Граница между вашими сервисами, не против злоумышленника |
latest | «Последняя версия» | Просто тег по умолчанию; может указывать на что угодно |
| «Образ пересобран» | «Запущенное обновилось» | Container продолжает работать на старом образе |
| Код 143 | «Обычный результат docker stop» | Так бывает при --init; обработавшее сигнал приложение даёт 0 |
| «Тесты прошли» | «Всё проверено» | Могли быть пропущены при отсутствии зависимости |
Навигация
Вернуться к справочникам
Карта решений
Каталог антипаттернов
План дальнейшего развития
Главное оглавление