Что такое контейнер в Linux?

«Что такое контейнер в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Контейнер в Linux — это изолированное окружение для запуска процессов, использующее механизмы ядра Linux: namespaces для изоляции (процессов, сети, файловой системы) и cgroups для ограничения и учета ресурсов (CPU, память, I/O). Контейнер разделяет ядро с хост-системой, что делает его легковеснее виртуальной машии.

Ключевые особенности:

  • Легковесность: Накладные расходы минимальны по сравнению с ВМ, так как нет гостевой ОС.
  • Быстрый запуск: Контейнеры запускаются за секунды.
  • Портативность: Образ контейнера содержит все зависимости и может быть запущен на любой системе с совместимым ядром и средой выполнения (например, Docker, containerd).
  • Изоляция: Процессы, файлы, сетевые стеки и пользователи внутри контейнера изолированы от хоста и других контейнеров.

Пример создания и запуска контейнера с Docker:

# Запуск контейнера из образа ubuntu с интерактивной оболочкой
sudo docker run -it --name my_container ubuntu:22.04 /bin/bash

Внутри этого контейнера вы увидите изолированную файловую систему, собственные процессы (например, ps aux) и сетевой интерфейс.