Главная/Справочники/Справочник

Glossary

Термины курса с определениями и ссылками на раздел, где термин вводится.

Определения даны так, как термин употребляется в этом курсе. Там, где общепринятое употребление шире или расплывчатее, это отмечено.

Содержание


Основные понятия

ТерминОпределениеРаздел
ContainerОбычный процесс ядра, которому ядро показывает ограниченный вид системы. Не виртуальная машина и не «лёгкая ВМ»02
Image (образ)Неизменяемый набор слоёв файловой системы плюс конфигурация запуска03
Daemon (демон)dockerd — процесс, выполняющий всю работу; работает от root17.1
Клиентdocker — преобразователь аргументов в HTTP-запросы к сокету демона17.1
RuntimeПрограмма, создающая container из OCI-описания: runc, crun02.6
containerdУправляющий уровень между демоном и runtime; используется и в Kubernetes17.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 build05.1
Кэш сборкиПереиспользование слоёв, чьи инструкция и входные файлы не изменились05.5
BuildKitМеханизм сборки, дающий --mount, --secret, heredoc и параллельные стадии05.6
Multi-stageСборка из нескольких стадий; в итоговый образ попадает только нужное05.7
Cache mountКэш вне слоёв, живущий на машине сборки. Не переносится в CI16.3
Secret mountФайл, доступный во время инструкции и не попадающий в слой12.6
Exec-формаCMD ["a", "b"] — процесс запускается напрямую и становится PID 105.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. Это то, что задаёт Docker17.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Запрос на постоянное хранилище в Kubernetes18.2
ReadWriteOnceРежим доступа: том подключается к одному узлу. Не решает задачу общего состояния18.3

Эксплуатация

ТерминОпределениеРаздел
HealthcheckПроверка, выполняемая внутри container'а; определяет состояние healthy05.8
Liveness«Жив ли процесс». Отказ означает перезапуск. Не должна проверять зависимости11.3
Readiness«Готов ли обслуживать». Отказ означает вывод из балансировки11.3
Startup-проба«Завершена ли инициализация». Пока не пройдена, liveness не выполняется18.2
Grace periodВремя между SIGTERM и SIGKILL при остановке; по умолчанию 10 секунд04.4
Мягкое завершениеПрекращение приёма новых задач, доработка текущих, выход до истечения grace period04.4
Код 137128 + 9: завершён SIGKILL, часто OOM killer'ом04.6
Код 143128 + 15: PID 1 умер от SIGTERM. На практике — при --init. Обычный код после docker stop у правильного сервиса — 004.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, Firecracker19.2

Термины, которые часто понимают неверно

Шесть случаев, где расхождение между обиходным и точным смыслом приводит к ошибкам.

ТерминКак понимаютЧто означает на самом деле
EXPOSE«Открывает порт наружу»Только документирует; ничего не открывает
«Container изолирован»«Защищён от чего угодно»Граница между вашими сервисами, не против злоумышленника
latest«Последняя версия»Просто тег по умолчанию; может указывать на что угодно
«Образ пересобран»«Запущенное обновилось»Container продолжает работать на старом образе
Код 143«Обычный результат docker stop»Так бывает при --init; обработавшее сигнал приложение даёт 0
«Тесты прошли»«Всё проверено»Могли быть пропущены при отсутствии зависимости

Навигация

Вернуться к справочникам
Карта решений
Каталог антипаттернов
План дальнейшего развития
Главное оглавление

Markdown на GitHub ↗