Skip to main content

Що відбувається при запуску контейнера?

При запуску контейнера Docker бере образ і створює з нього ізольований процес. Послідовність кроків на рівні junior виглядає так:

1. Docker бере образ

Образ - це шаблон (шари з файловою системою і конфігурацією). Він - основа майбутнього контейнера.

2. Створюється writable-шар

Поверх шарів образу Docker додає змінюваний шар, куди будуть потрапляти всі зміни контейнера (логи, тимчасові файли тощо).

3. Контейнер отримує ізольовані ресурси

Docker налаштовує namespaces і cgroups, щоб контейнер:

  • бачив тільки свої процеси,
  • мав свою файлову систему,
  • мав своє мережеве середовище,
  • міг використовувати обмежені ресурси.

4. Запускається основний процес

Docker виконує команду, вказану в CMD або ENTRYPOINT в образі. Цей процес = "життя контейнера".

5. Контейнер працює, поки живе процес

Якщо процес завершується - контейнер автоматично зупиняється.

Підсумок в одній фразі

При запуску Docker-контейнера створюється ізольоване середовище на основі образу, накладається writable-шар і запускається основний процес, від якого залежить життя контейнера.

Якщо хочеш, можу розібрати той самий ланцюжок на middle-рівні (з деталями про OverlayFS, PID namespace, network namespace тощо).

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.