Что такое Docker?

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

Ответ

Docker — это платформа для разработки, доставки и запуска приложений в изолированных пользовательских пространствах, называемых контейнерами. Контейнеры упаковывают приложение со всеми его зависимостями (библиотеки, runtime, системные инструменты) в стандартизированный единица программного обеспечения.

Ключевые концепции:

  • Образ (Image): Неизменяемый шаблон с инструкциями для создания контейнера. Собирается из Dockerfile.
  • Контейнер (Container): Запущенный экземпляр образа. Это изолированный процесс, работающий поверх общего ядра хостовой ОС.
  • Docker Engine: Демон (dockerd), который создает и управляет контейнерами.
  • Docker Registry: Хранилище образов (например, Docker Hub, GitLab Container Registry).

Практический пример Dockerfile для простого веб-приложения:

# Используем легковесный базовый образ
FROM nginx:alpine

# Копируем статичные файлы приложения в образ
COPY ./src /usr/share/nginx/html

# Открываем порт, который слушает nginx
EXPOSE 80

# Команда для запуска контейнера
CMD ["nginx", "-g", "daemon off;"]

Преимущества для DevOps:

  • Консистентность: Приложение работает идентично на любом окружении (ноутбук разработчика, CI-сервер, продакшен).
  • Изоляция: Конфликты зависимостей между приложениями исключены.
  • Эффективность: Контейнеры легче и быстрее виртуальных машин, так как используют ядро хоста.
  • Портативность: Образ можно запустить где угодно, где есть Docker.

Видео-ответы