Stop daemon 2.png

Я бы не сказал, что это прям частый вопрос на собеседованиях. Изначально в моей базе знаний такого вопроса в принципе не было, но недавно его задали моему ученику. Я пошёл разбираться, чтобы написать короткий и понятный ответ.

Спойлер: короткий ответ найден не был. А чтобы он стал понятным — я создал это практическое задание.

<aside>

Навигация

</aside>

🙈 Подсмотреть краткие ответы (TL;DR)


1. Из чего состоит Docker?

<aside>

Прежде чем начать практическую часть, давай поговорим о теоретической. Если тебе понятно что такое dockerd, containerd, shim, runs, то можешь сразу переходить к практике — 2. Практическая часть.

</aside>

Docker Daemon

Docker Daemon (dockerd) — это фоновый процесс, который управляет всем, что связано с Docker на твоей системе:

По сути, это "сердце" Docker, которое обрабатывает команды и управляет контейнерами, делегируя низкоуровневые операции через containerd.

Управление Docker Daemon

Конфигурация Docker Daemon

Containerd, runc, containerd-shim

Это компоненты, делающие пыльную работенку по приказу докер демона. Вместо тысячи слов, давай посмотрим на схему:

dockerd                   # Докер демон (PPID=1)
└─ containerd             # Управляет образами + жизненный цикл контейнеров (PPID=1)
   └─ containerd-shim     # На каждый контейнер свой экземпляр
      └─ runc (временно)  # Создаёт namespaces → выходит
         └─ nginx …       # PID=1 внутри контейнера

А вот более подробная схема с описанием того, что происходит. Можешь пока сильно не вчитываться и просто примерно прикинуть что к чему, куда-чего. Потом вернёшься к иллюстрации, с лучшим пониманием происходящего.

https://iximiuz.com/en/posts/implementing-container-runtime-shim/

https://iximiuz.com/en/posts/implementing-container-runtime-shim/